Why NextWhy Next
Zur Übersicht
💻 Entwicklung3 Min. Lesezeit

Self-Hosting auf dem Mini-PC mit Docker + Cloudflare Tunnel

Wie man mit einem einzigen Mini-PC zu Hause mehrere Webdienste sicher öffentlich macht. HTTPS ohne offene Ports über Cloudflare Tunnel, betrieben mit Docker Compose.

Das Wichtigste

Dienste laufen auf dem Mini-PC mit Docker Compose, und Cloudflare Tunnel (cloudflared) liefert Domain und HTTPS ohne einen einzigen offenen Port. Keine Router-Konfiguration, keine feste IP, keine Zertifikatserneuerung nötig.

Auf dieser Seite

Cloud-Gebühren sind für kleine Projekte eine unterschätzte Belastung. Ich betreibe mehrere Dienste, diesen Blog eingeschlossen, auf einem einzigen Mini-PC bei mir zu Hause. So funktioniert es.

Warum ein Mini-PC

  • Läuft rund um die Uhr, die Stromkosten liegen bei ein paar Euro im Monat
  • Mit Docker ist die Deploy-Umgebung identisch zur Cloud
  • Wächst der Traffic, kann man dann immer noch umziehen

Es bleibt genau ein Problem: "Wie macht man das Heimnetzwerk sicher nach außen zugänglich?"

Öffnen Sie keine Ports

Der klassische Weg: Portweiterleitung am Router + DDNS + Zertifikatserneuerung. Das ist umständlich und riskant, weil man das Heimnetzwerk direkt ins Internet öffnet.

Stattdessen kommt Cloudflare Tunnel zum Einsatz. Auf dem Mini-PC öffnet cloudflared eine Verbindung nach außen zu Cloudflare, und der Traffic kommt durch diesen Tunnel herein. Die Zahl der von außen offenen Inbound-Ports: null.

사용자 → Cloudflare(HTTPS) → 터널 → 미니 PC 의 컨테이너
  • Keine öffentliche IP, keine Portweiterleitung nötig
  • HTTPS-Zertifikate übernimmt Cloudflare automatisch
  • Eine dynamische IP spielt keine Rolle

Dienste mit Docker Compose bündeln

Jeder Dienst läuft als Container. Bei einer Next.js-App baut man mit output: "standalone" ein schlankes Image.

services:
  blog:
    build:
      context: .
      dockerfile: apps/blog/Dockerfile
    container_name: why-next-blog
    restart: unless-stopped
    networks: [api]

networks:
  api:
    external: true   # cloudflared 와 같은 네트워크

Entscheidend ist, den Container ins selbe Docker-Netzwerk wie cloudflared zu legen. Nur so findet der Tunnel den Dienst über den Containernamen.

Domain verbinden

Im Cloudflare-Dashboard (oder in der Tunnel-Konfiguration) fügt man einen Public Hostname hinzu.

blog.example.com  →  http://why-next-blog:3001

Das war es schon. Nach docker compose up -d --build ist die Seite wenige Minuten später unter der Domain erreichbar.

Fazit

  • Mini-PC + Docker = günstig und identisch zum Cloud-Deployment
  • Cloudflare Tunnel liefert HTTPS und Domain ohne offene Ports
  • Container ins selbe Netzwerk wie cloudflared legen
  • Public Hostname mappt Domain → Container:Port

Für kleine Dienste trägt diese Kombination erstaunlich lange. Ich betreibe so mehrere Apps und baue meine Projekte Stück für Stück aus.

Häufige Fragen

Meine Heim-IP ist dynamisch. Ist das ein Problem?

Nein. Bei Cloudflare Tunnel öffnet der Mini-PC selbst eine ausgehende Verbindung zu Cloudflare, daher braucht es weder öffentliche IP noch Portweiterleitung noch DDNS.

Kostet das etwas?

Cloudflare Tunnel selbst ist kostenlos. Nur die Domain kostet etwas, dann kann es losgehen.

Ähnliche Beiträge