Seit einiger Zeit hatte ich Caddy als Reverse-Proxy vor meinen internen Diensten stehen – ein bewährtes Setup mit Tailscale/Headscale, das im Artikel beschrieben ist. Dienst im Tailnet, Caddy als öffentlicher Endpunkt, TLS automatisch. Das funktionierte gut.
Aber Caddy war ein zusätzlicher Baustein – ein weiterer Container, eine weitere Konfiguration. Und bei Tailscale/Headscale fehlte eines: Ein integriertes Reverse Proxy. NetBird bringt das mit, und es ist vollständig open source und selbst hostbar – jeder einzelne Bestandteil: Server, Management, Client, Reverse Proxy.
Jetzt ist alles anders: **Alle Container und VMs sind im NetBird-Mesh, Caddy ist abgeschaltet.**
Das alte Setup: Caddy als Zwischenschicht
Vorher sah mein Netzwerk so aus:
Internet
│
▼
Caddy (VPS, öffentlich)
│
├── tailscale ──▶ HomeAssistant (Incus)
├── tailscale ──▶ Immich (Incus)
├── tailscale ──▶ Paperless (Incus)
└── tailscale ──▶ ... (10 weitere)
Jeder Service brauchte einen Caddy-Eintrag. Die Tailnet-Adressen mussten aufgelöst werden, DNS-Konflikte mit Incus wurden zum Dauerthema.
Das neue Setup: NetBird als alleiniges Netzwerk
Mit NetBird gibt es keine Zwischenschicht mehr:
Internet
│
▼
NetBird (Traefik, integriert)
│
├── Incus: HomeAssistant (NetBird-Client)
├── Incus: Immich (NetBird-Client)
├── Incus: Paperless (NetBird-Client)
├── Incus: Restic (NetBird-Client)
├── VM: Mailcow (NetBird-Client)
└── ... (alles im Mesh)
Jeder Container und jede VM hat einen NetBird-Client und ist direkt im Mesh erreichbar. Kein Caddy mehr dazwischen.
Warum NetBird?
Open Source – komplett
NetBird steht unter BSD-3-Lizenz. Aber nicht nur der Server-Teil, sondern der gesamte Stack:
- Management Server – selbst hostbar, inklusive Web-UI
- Signal Server – für die Verbindungskoordination
- TURN/Relay Server – für NAT-Traversal
- Client – open source, auf allen Plattformen
- Reverse Proxy – integriert, auf Traefik-Basis
Kein proprietärer Client, kein SaaS-Service, kein Unknown Binary im Hintergrund. Wer NetBird betreibt, kontrolliert jeden Bestandteil. Das ist der fundamentale Unterschied zu Tailscale, wo der Client source-available ist, aber der Koordinationsserver bei Tailscale läuft.
Integriertes Reverse Proxy mit Traefik
NetBird bringt seit v0.65 ein integriertes Reverse Proxy mit – intern basierend auf Traefik. Das bedeutet:
- Kein zusätzlicher Container mehr für Caddy
- Automatische Service Discovery im Mesh
- TLS automatisch über Let's Encrypt
- One-Stop-Shop: Netzwerk + Proxy in einem
Die Konfiguration läuft über das NetBird-UI oder die API. Einen Dienst erreichbar machen heißt: NetBird-Client installieren, Route im UI anlegen, fertig.
Kein DNS-Fight mehr
Das größte Problem mit Caddy + Tailscale in Incus war der DNS-Konflikt. Incus-Managed-Netzwerke überschreiben /etc/resolv.conf, die Magic-DNS-Auflösung geht verloren, Caddy findet die Tailnet-Adressen nicht mehr.
NetBird löst das anders: Die Adressen sind stabil, das Mesh kümmert sich um die Zuordnung. Kein DNS, das überschrieben wird, keine conf-Dateien, die manuell gepflegt werden müssen.
Alles im Mesh
Der entscheidende Unterschied: Alle Container und VMs sind im NetBird-Mesh. NetBird-Client läuft in jeder Instanz als Service, automatisch beim Boot.
Was hat das gekostet?
Nicht viel – NetBird ist kostenlos und open source. Der Aufwand lag in der Migration:
| Schritt | Aufwand |
|---|---|
| NetBird-Server aufsetzen | ~30 Min |
| Client in alle Container | ~5 Min pro Instanz |
| Routes im UI konfigurieren | ~2 Min pro Dienst |
| Caddy abschalten | 1 Minute |
| TLS-Zertifikate prüfen | Automatisch |
Insgesamt ein Nachmittag. Der längste Teil war, in allen bestehenden Instanzen den NetBird-Client nachzurüsten.
Was ich vermisse
Ehrlichkeitshalber: Caddy war einfacher für Simple-Fälle. Ein Caddyfile mit fünf Zeilen und los. NetBird braucht etwas mehr Konfiguration – Client installieren, Auth-Key generieren, Route anlegen.
Aber: Einmal eingerichtet, ist NetBird wartungsärmer. Kein Caddy-Update, kein DNS-Tuning, keine Incus-Konflikte.
Fazit
Caddy war ein guter Begleiter – schlank, zuverlässig, einfach. Aber NetBird macht ihn im eigenen Setup überflüssig. Wer sein Netzwerk ohnehin mit einem Mesh-VPN betreibt, braucht keinen separaten Reverse-Proxy mehr. NetBird übernimmt beides.
Und das Wichtigste: Es ist **komplett open source und selbst hostbar**. Kein SaaS, kein proprietärer Client, kein unknown binary. Jeder Bestandteil gehört mir.
Caddy geht in Rente. Nicht weil es schlecht ist, sondern weil es nicht mehr gebraucht wird.
