NetBird-VPN-Server auf einem VPS selbst hosten
Betreiben Sie NetBird auf einem VPS: DNS und TLS einrichten, das gepinnte Quickstart-Skript nutzen, Setup-Keys für Peers erstellen und Headscale vergleichen.
Was Ihnen das Self-Hosting des NetBird-VPN-Servers bietet
Beim Self-Hosting des NetBird-VPN-Servers läuft die Control Plane auf einem VPS, den Sie selbst besitzen. Sie verwaltet die Peer-Liste, entscheidet, welche Maschine welche andere erreichen darf, und hilft zwei Peers dabei, sich hinter NAT (Network Address Translation) zu finden. Die Tunnel verwenden weiterhin WireGuard und werden direkt zwischen Ihren Maschinen verschlüsselt. Geändert hat sich, dass kein externes Unternehmen Ihre Geräteübersicht oder Ihren Anmeldeablauf verwaltet. Sie sollten genau verstehen, welchen Vorteil das bietet. Eine gehostete Control Plane besitzt niemals die Schlüssel, mit denen Ihr Datenverkehr verschlüsselt wird. Außerdem ist was ein kompromittierter Koordinationsserver tatsächlich tun kann eine kürzere Liste, als die meisten Menschen vor der Lektüre annehmen.
NetBird verbindet zwei Konzepte, die Sie möglicherweise bereits kennen. Es ist ein Mesh-Overlay. Peers verbinden sich also direkt miteinander, statt den gesamten Datenverkehr über ein Gateway zu senden. Gleichzeitig lässt es sich vollständig selbst hosten. Damit steht es Headscale, dem selbst gehosteten Tailscale-Control-Server, gegenüber. Wenn Sie bisher nur einen Tunnel mit einem einzelnen Gateway betrieben haben, lesen Sie zuerst den Unterschied zwischen einfachem WireGuard und einem Mesh-Overlay. Dieses Verständnis macht den restlichen Inhalt dieser Seite nachvollziehbar.
Wenn Sie tatsächlich nur einen Server benötigen, über den Ihr gesamter Datenverkehr ins Internet gelangt, ist ein Mesh aufwendiger als erforderlich. Ein einfaches WireGuard-VPN auf einem einzelnen VPS oder ein Tailscale-Exit-Node erfüllt diese Aufgabe mit deutlich weniger Betriebsaufwand. Wenn Sie dagegen ein privates Netzwerk erreichen möchten, statt Maschinen miteinander zu verbinden, kündigt ein Tailscale-Subnet-Router auf einem VPS diesen Bereich in einem vorhandenen Tailnet an, ohne dass Sie den folgenden Stack benötigen.
Was der Stack tatsächlich ausführt
Die Struktur wurde kürzlich geändert. Die meisten älteren Anleitungen beschreiben noch die vorherige Struktur. Seit August 2026 schreibt das Quickstart-Skript in Release v0.76.2 standardmäßig eine Compose-Datei mit drei Services.
netbird-serverstellt die Management-API, den Signal-Service, das Relay mit integriertem STUN-Listener und einen integrierten Identity Provider bereit. In älteren Releases liefen diese Komponenten in separaten Containern. Der Identity Provider war außerdem eine separate Zitadel-Installation, die Sie zuerst erstellen mussten.dashboardist die Webkonsole für die Administration.traefikbeendet TLS (Transport Layer Security) und fordert beim ersten Start ein Zertifikat von Let's Encrypt an.
Zwei weitere Services sind vorhanden und bleiben deaktiviert, sofern Sie eine entsprechende Abfrage nicht mit „Ja“ bestätigen. Der NetBird Proxy-Service veröffentlicht interne Services unter öffentlichen Hostnamen. CrowdSec filtert missbräuchlichen Netzwerkverkehr. Keiner der beiden Services ist für den Aufbau eines funktionierenden Mesh erforderlich. Auf einem kleinen Server benötigen beide jedoch zusätzlichen Arbeitsspeicher.
Wenn Sie von wg-easy in einem einzelnen Docker-Container kommen, steigt die Anzahl der Komponenten deutlich. Dafür erhalten Sie Zugriffsrichtlinien und Benutzerkonten sowie Peers, die sich direkt miteinander verbinden, statt über ein Gateway zu kommunizieren.
Voraussetzungen
Ein öffentlicher Domainname ist zwingend erforderlich. Das Dashboard, die API und das Relay verwenden HTTPS über Port 443. Traefik bezieht sein Zertifikat von Let's Encrypt über eine HTTP-Challenge. Dafür muss ein Name aus dem öffentlichen Internet auf diese VPS-Adresse aufgelöst werden. Eine reine IP-Adresse funktioniert in diesem Ablauf nicht.
Erstellen Sie einen A-Record, netbird.example.com, der auf die öffentliche IPv4-Adresse der VPS zeigt. Warten Sie die DNS-Propagation ab, bevor Sie irgendetwas ausführen.
dig +short netbird.example.comDabei muss die Adresse Ihres Servers ausgegeben werden. Wenn Sie den Installer starten, bevor die DNS-Propagation abgeschlossen ist, schlägt die Zertifikatsanforderung beim ersten Start fehl. Wiederholte fehlgeschlagene Validierungen können außerdem die Rate Limits von Let's Encrypt auslösen. Dann müssen Sie eine Stunde warten, bevor Sie es erneut versuchen können.
Drei Ports müssen aus dem Internet erreichbar sein: TCP 80 für die Zertifikats-Challenge und die Weiterleitung auf HTTPS, TCP 443 für Dashboard, API, Signal- und Relay-Verkehr sowie UDP 3478 für STUN.
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 3478/udp
sudo ufw reload
sudo ufw statusÖffnen Sie diese Ports auch in der Netzwerk-Firewall Ihres Providers. Das ist in den meisten VPS-Panels eine separate Einstellung. Deshalb kann ein System Verbindungen weiterhin ablehnen, obwohl die eigene ufw status korrekt aussieht.
STUN (Session Traversal Utilities for NAT) ermöglicht es einem Peer, die öffentliche Adresse und den Port zu ermitteln, die sein eigenes NAT zugewiesen hat. Dadurch können zwei Peers einen direkten Tunnel versuchen. Wenn Sie UDP 3478 blockieren, verbinden sich die Peers weiterhin über das Relay auf TCP 443. Daher wirkt zunächst nichts fehlerhaft. Stattdessen erhalten Sie auf jedem Peer Connection type: Relayed, und der gesamte Datenverkehr läuft über Ihre VPS, anstatt direkt zwischen den Peers zu fließen.
Auf der Softwareseite benötigen Sie Docker mit dem Compose-v2-Plugin sowie jq und curl. Das Skript prüft alle diese Voraussetzungen und beendet sich, wenn eine davon fehlt. Wenn Docker auf diesem System neu ist, richten Sie zuerst Docker Compose auf der VPS ein ein.
Ports ohne den mitgelieferten Reverse Proxy
Wenn Sie Traefik nicht verwenden, werden die einzelnen Dienste direkt veröffentlicht. Dadurch wird die Portliste länger:
- TCP 80, HTTP-Weiterleitungen
- TCP 443, HTTPS
- TCP 33073, Management-gRPC
- TCP 10000, Signal-gRPC
- TCP 33080, Relay über WebSocket oder QUIC
- UDP 3478, STUN
Wählen Sie diese Variante nur, wenn das System bereits für einen anderen Dienst TLS terminiert. Andernfalls benötigt der mitgelieferte Traefik weniger Regeln und verursacht weniger Fehler.
NetBird-Server mit dem Quickstart-Skript installieren
Der dokumentierte Einzeiler leitet die neueste Version direkt an eine Shell weiter:
curl -fsSL https://github.com/netbirdio/netbird/releases/latest/download/getting-started.sh | bashFixieren Sie die Version. latest ändert sich, sodass derselbe Befehl bei Ausführung im Abstand von zwei Wochen zwei unterschiedliche Installationen erzeugt. Außerdem wird auf dem Datenträger nicht festgehalten, welche Version Ihre Konfiguration geschrieben hat. Laden Sie eine gekennzeichnete Version herunter, lesen Sie das Skript und führen Sie es anschließend aus.
mkdir -p ~/netbird
cd ~/netbird
curl -fsSL -o getting-started.sh \
https://github.com/netbirdio/netbird/releases/download/v0.76.2/getting-started.sh
less getting-started.sh
bash getting-started.shDas Skript fragt zuerst nach der Domain:
Enter the domain you want to use for NetBird (e.g. netbird.my-domain.com):Danach fragt es, wie TLS verwaltet werden soll:
Which reverse proxy will you use?
[0] Traefik (recommended - automatic TLS, included in Docker Compose)
[1] Existing Traefik (labels for external Traefik instance)
[2] Nginx (generates config template)
[3] Nginx Proxy Manager (generates config + instructions)
[4] External Caddy (generates Caddyfile snippet)
[5] Other/Manual (displays setup documentation)
Enter choice [0-5] (default: 0):Wählen Sie [0]. Die Optionen 2 bis 5 schreiben einen Konfigurationsausschnitt und überlassen die weitere Einrichtung Ihnen. Das ist auf einem System mit bereits laufendem Proxy richtig, auf einem neuen System jedoch nicht. Option 0 fragt anschließend nach einer E-Mail-Adresse für Let’s Encrypt. Diese wird für Ablaufbenachrichtigungen verwendet.
Verneinen Sie bei einer Erstinstallation den NetBird-Proxy-Dienst. Dafür sind zwei weitere DNS-Einträge erforderlich: proxy.netbird.example.com und der Wildcard-Eintrag *.proxy.netbird.example.com. Für ein einfaches Mesh bietet er keinen Nutzen. Verneinen Sie auch CrowdSec. Beide Komponenten können später hinzugefügt werden.
Das Skript schreibt in das aktuelle Verzeichnis: docker-compose.yml, config.yaml mit dem Modus 600, dashboard.env und traefik-dynamic.yaml, wenn Sie Traefik aus dem Paket ausgewählt haben. Behandeln Sie dieses Verzeichnis als dauerhaft benötigte Zustandsdaten, da config.yaml den Schlüssel enthält, mit dem die Daten im Datenspeicher verschlüsselt werden. Ein Verlust dieses Schlüssels lässt sich durch eine erneute Installation nicht beheben.
docker compose ps
docker compose logs -f netbird-serverJeder Dienst sollte running lesen. Das Server-Log sollte sich stabilisieren und nicht in einer Neustartschleife laufen. Überwachen Sie das Zertifikat separat:
docker compose logs traefik | grep -i acmeACME (Automatic Certificate Management Environment) ist das Protokoll, das Traefik zum Abrufen des Zertifikats verwendet. Fehler an dieser Stelle werden fast immer durch DNS-Probleme oder einen geschlossenen Port 80 verursacht.
Erstellen des ersten Administratorkontos
Öffnen Sie https://netbird.example.com. Bei einer neuen Installation wird eine Einrichtungsseite statt eines Anmeldeformulars angezeigt. Geben Sie eine E-Mail-Adresse, einen Namen und ein Passwort ein. Klicken Sie anschließend auf Create Account. Dieses Konto ist das erste Administratorkonto. Danach wird das Anmeldeformular angezeigt.
Das Konto wird in NetBirds eigenem Benutzerspeicher gespeichert. Dieser wird von einem Identity Provider bereitgestellt, der in den Container netbird-server integriert ist. Es ist keine externe Komponente erforderlich. Das ist die größte Änderung gegenüber dem selbst gehosteten NetBird von vor einem Jahr. Damals musste für eine funktionierende Installation zuerst Zitadel oder Keycloak eingerichtet werden. Anschließend mussten vier OIDC-Werte (OpenID Connect) in setup.env kopiert werden. Erst dann konnte der Dienst überhaupt starten.
Wenn im Browser eine Zertifikatswarnung statt der Einrichtungsseite angezeigt wird, wurde das Zertifikat nicht ausgestellt. Beheben Sie dieses Problem, bevor Sie fortfahren. Das Dashboard kommuniziert über denselben Hostnamen mit der API. Bei einem fehlerhaften Zertifikat schlägt diese Kommunikation auf schwer nachvollziehbare Weise fehl.
Ihren ersten Peer verbinden
Installieren Sie den Client auf einem beliebigen Linux-Rechner. Das kann auch der VPS selbst sein, wenn er Teil des Mesh-Netzwerks werden soll:
curl -fsSL https://pkgs.netbird.io/install.sh | shUnter Debian und Ubuntu konfiguriert das Skript das Paket-Repository von NetBird und installiert anschließend den Client über apt. Damit wird er in jedem Fall vom Paketmanager verwaltet. Wenn Sie ein Skript nicht per Pipe an eine Shell übergeben möchten, speichern Sie es mit curl -fsSL -o install.sh https://pkgs.netbird.io/install.sh und lesen Sie es, bevor Sie sh install.sh ausführen. Prüfen Sie anschließend in jedem Fall, was installiert wurde:
apt-cache policy netbirdnetbird ist der Befehlszeilen-Client und der Daemon. netbird-ui ist die Desktop-Tray-Anwendung. Auf einem Headless-Server wird sie nicht benötigt.
Verweisen Sie den Client nun auf Ihren Server:
sudo netbird up --management-url https://netbird.example.comLassen Sie --management-url weg, registriert sich der Client beim gehosteten Dienst von NetBird, weil dies der kompilierte Standardwert ist. Der Befehl wird trotzdem erfolgreich ausgeführt, der Rechner erhält trotzdem eine Adresse, und Ihr selbst gehostetes Dashboard bleibt leer. Das passiert fast jedem mindestens einmal.
Der Befehl gibt eine URL aus. Öffnen Sie diese in einem Browser, um die Anmeldung abzuschließen. Führen Sie danach Folgendes aus:
netbird status
ip addr show wt0Lesen Sie vier Zeilen aus netbird status: Management: Connected, Signal: Connected, eine Relays:-Zeile mit jedem verfügbaren Relay und eine NetBird IP: im Overlay-Bereich. wt0 ist die WireGuard-Schnittstelle, die NetBird erstellt. Sie sollte dieselbe Adresse führen.
Eine zweite Maschine unbeaufsichtigt mit einem Setup-Key verbinden
Die Browser-Anmeldung funktioniert nicht für eine Maschine ohne Browser und ohne anwesende Person. Ein Setup-Key ist ein Pre-Authentication-Token, mit dem eine Maschine ohne interaktiven Schritt registriert wird. Erstellen Sie ihn im Dashboard unter Setup Keys.
Es gibt zwei Arten. Ein einmalig verwendbarer Key authentifiziert genau eine Maschine und ist danach verbraucht. Ein wiederverwendbarer Key registriert mehrere Maschinen, optional mit einer Begrenzung der Anzahl. Beide haben ein Ablaufdatum. Beide können den neuen Peer automatisch einer Gruppe zuweisen, sodass die Zugriffsregeln dieser Gruppe sofort gelten, sobald die Maschine erscheint.
sudo netbird up --setup-key <SETUP-KEY> \
--management-url https://netbird.example.com \
--hostname build-runner-01--hostname legt den im Dashboard angezeigten Namen fest. Ohne diese Option übernimmt der Peer den Namen, den die Maschine selbst verwendet. Eine Flotte von Einträgen mit dem Namen ubuntu ist nicht hilfreich.
Für Container und kurzlebige Build-Agenten sollten Sie den Key beim Erstellen als ephemeral markieren. Peers, die mit einem ephemeral Key registriert wurden, werden automatisch entfernt, sobald sie länger als 10 Minuten offline waren. Dadurch bleiben veraltete Einträge aus der Peer-Liste entfernt.
Beachten Sie vor der Planung mit Setup-Keys eine Einschränkung: Wenn ein Key abläuft oder gelöscht wird, werden keine neuen Registrierungen mehr zugelassen. Maschinen, die bereits mit diesem Key registriert wurden, werden dadurch nicht getrennt. Um den Zugriff einer Maschine zu entfernen, müssen Sie den entsprechenden Peer entfernen.
Benötigen Sie weiterhin einen separaten Identity Provider?
Für eine kleine Installation ist das nicht erforderlich. Der integrierte Benutzerspeicher verwaltet Konten, die über das Dashboard angelegt werden. Für wenige Benutzer ist das ausreichend.
Ein externer Identity Provider ist sinnvoll, wenn Sie bereits einen betreiben und keine zweite Benutzerliste pflegen möchten. NetBird akzeptiert jeden Provider, der OIDC unterstützt. Registrieren Sie in Ihrem Provider einen vertraulichen OIDC-Client. Fügen Sie ihn anschließend im NetBird-Dashboard mit vier Werten hinzu: Name, Client-ID, Client-Secret und Issuer. NetBird stellt Ihnen eine Redirect-URL bereit, die Sie wieder im Provider eintragen. Benannte Integrationen gibt es für Google, Microsoft Entra ID, Okta, Zitadel, Keycloak, Authentik und Pocket ID. Alle anderen Provider werden als generisches OIDC konfiguriert. Wenn Sie bereits Authentik als selbst gehostetes Single Sign-On betreiben, behalten Sie auf diesem Weg eine gemeinsame Benutzerliste statt zwei getrennter Listen.
Die lokale Anmeldung bleibt verfügbar, nachdem Sie einen Provider hinzugefügt haben. Jeder konfigurierte Provider erscheint auf der Anmeldeseite. Behalten Sie ein lokales Administratorkonto mit einem starken Passwort. Bei einer fehlerhaften OIDC-Konfiguration haben Sie dann weiterhin Zugriff.
NetBird oder Headscale: Welche Control Plane sollten Sie betreiben?
Beide beseitigen dieselbe Abhängigkeit: den gehosteten Control Server, den Ihre Clients andernfalls kontaktieren würden. Die Projekte sind jedoch unterschiedlich aufgebaut.
Headscale implementiert den Tailscale-Control-Server neu, während Sie weiterhin die offiziellen Tailscale-Clients verwenden. Eine offizielle Webkonsole gibt es nicht. Sie verwalten Benutzer und Pre-Authentication-Keys mit dem Befehl headscale anhand einer Konfigurationsdatei. Community-Weboberflächen sind verfügbar, gehören aber nicht zum Projekt. Das eignet sich für Benutzer, die ihren Zustand in Dateien speichern und Änderungen in der Versionsverwaltung nachvollziehen möchten.
NetBird liefert das vollständige Produkt: einen eigenen Client, ein eigenes Dashboard, einen integrierten Identity Provider und Zugriffsr
ichtlinien, die im Browser bearbeitet werden. Dadurch laufen mehr Komponenten auf Ihrem VPS. Für Kollegen, die kein Terminal öffnen werden, lässt sich NetBird jedoch deutlich einfacher übergeben.
Betreiben Sie Headscale, wenn Sie bereits Tailscale-Clients einsetzen oder eine möglichst kleine Control Plane wünschen. Betreiben Sie NetBird, wenn mehrere Personen Peers verwalten müssen und Sie eine Konsole sowie SSO nutzen möchten, ohne beides selbst zusammenzustellen. Prüfen Sie vor der Entscheidung was der kostenlose Tailscale-Tarif tatsächlich abdeckt, denn eine Gruppe mit bis zu sechs Benutzern und unbegrenzt vielen Geräten zahlt nichts für eine gehostete Control Plane und benötigt möglicherweise überhaupt keine eigene. Oberhalb dieser Grenze steigt die Rechnung mit der Anzahl der Personen und nicht mit der Anzahl der Geräte. Deshalb liefert eine Berechnung der Tailscale-Kosten für Ihre Gruppe eine Vergleichszahl für die Kosten des VPS und den Zeitaufwand für diesen Stack.
Wie klein darf ein VPS für diesen Zweck sein?
Das dokumentierte Minimum beträgt 1 CPU und 2 GB Arbeitsspeicher. In den aktuellen Hinweisen von NetBird liegt die Untergrenze inzwischen bei etwa 1 GB RAM, da die Benutzerverwaltung lokal erfolgt. Das ältere Layout benötigte 2 GB bis 4 GB, weil eine vollständige Zitadel-Bereitstellung Bestandteil des Stacks war. Buchen Sie 2 GB. Der zusätzliche Spielraum ermöglicht es einem Upgrade, neue Images abzurufen, während die alten noch auf der Festplatte liegen.
Auf einem kleinen System können Sie drei Komponenten problemlos weglassen. Lehnen Sie den NetBird Proxy-Dienst ab. Er veröffentlicht interne Dienste unter öffentlichen Hostnamen und hat nichts mit der Verbindung zwischen Peers zu tun. Lehnen Sie außerdem CrowdSec ab. Sie können es später auf einem exponierten System hinzufügen, aber nicht am ersten Tag. Verwenden Sie weiterhin den standardmäßigen SQLite-Speicher im Volume netbird_data. Wechseln Sie erst zu PostgreSQL, wenn Sie die Bereitstellung auf mehrere Rechner aufteilen oder tatsächlich parallele Zugriffe bewältigen müssen. Die Dokumentation beschreibt dies als spätere Migration.
Auf das Relay können Sie nicht verzichten. Wenn NAT für jedes Ziel einen anderen Port zuweist, können zwei Peers niemals einen direkten Tunnel aufbauen. Das Relay ist dann der einzige Weg, über den die Verbindung überhaupt funktioniert. Durch das Deaktivieren sparen Sie nur sehr wenig Arbeitsspeicher, während Verbindungen auf eine schwer nachvollziehbare Weise fehlschlagen.
Wenn ein einzelnes System nicht mehr ausreicht, sollten Sie zuerst die Relays auslagern. Ein eigenständiges Relay läuft mit NB_LISTEN_ADDRESS, NB_EXPOSED_ADDRESS, NB_AUTH_SECRET und NB_ENABLE_STUN. Das gemeinsame Secret muss auf dem Relay und auf dem Hauptserver identisch sein. Andernfalls können sich Clients dort nicht authentifizieren.
Fehlerbilder und deren Diagnose
Das Dashboard zeigt eine Zertifikatswarnung. Traefik hat kein Zertifikat abgerufen. Führen Sie docker compose logs traefik | grep -i acme aus. Dafür gibt es zwei Ursachen. Entweder verweist dig +short netbird.example.com noch nicht auf diese VPS, oder TCP 80 ist zwischen Let's Encrypt und dem Container an einer Stelle gesperrt, meistens in der Netzwerk-Firewall des Providers und nicht auf ufw. Beheben Sie die Ursache, bevor Sie wiederholt einen Versuch starten. Fehlgeschlagene Validierungen unterliegen einer Ratebegrenzung. Andernfalls sind für eine Stunde keine weiteren Versuche möglich.
Der Client meldet eine Verbindung, aber das Dashboard ist leer. Der Client wurde beim gehosteten Dienst von NetBird registriert, weil --management-url fehlte. Führen Sie netbird status --detail aus und lesen Sie die Zeile Management:. Sie nennt den Server, mit dem der Client tatsächlich kommuniziert. Management: Connected to https://api.netbird.io:443 zeigt, dass die Verbindung über die Cloud hergestellt wurde. Führen Sie sudo netbird down und anschließend erneut sudo netbird up --management-url https://netbird.example.com aus.
Jeder Peer zeigt Connection type: Relayed. Es werden keine direkten Tunnel aufgebaut. Daher läuft der gesamte Datenverkehr über Ihre VPS und verursacht eine zusätzliche Latenz. Prüfen Sie UDP 3478 in der Firewall der VPS und in der Provider-Firewall. STUN ermöglicht es einem Peer, seine eigene öffentliche Adresse und seinen Port zu ermitteln. netbird status --detail gibt außerdem Direct: false sowie die ICE-Kandidaten-Typen (interactive connectivity establishment) für jeden Peer aus. Daraus ist ersichtlich, wie weit der Verbindungsaufbau fortgeschritten ist. In einigen Netzwerken ist relayed das einzige verfügbare Ergebnis. Das ist kein Fehler.
Ein Peer tritt bei und kann nichts erreichen. Die Mitgliedschaft im Mesh bedeutet nicht, dass zwei Peers miteinander kommunizieren dürfen. Das wird durch Zugriffsrichtlinien festgelegt. Eine Gruppe ohne zugewiesene Richtlinie kann nichts erreichen. Prüfen Sie die Richtlinie im Dashboard, bevor Sie Routen und Firewalls untersuchen.
netbird status meldet ein Daemon-Problem. Der Dienst läuft nicht. Verwenden Sie sudo netbird service status und sudo netbird service start. Die Client-Logs befinden sich unter /var/log/netbird/client.log. Wenn Sie ein Problem nicht zuordnen können, sammelt netbird debug bundle --anonymize --system-info Logs, Statusinformationen, Routen, DNS-Einstellungen und den Firewall-Status in einem Archiv.
Backups und Upgrades
Für die gesamte Installation sind zwei Dinge entscheidend: das Verzeichnis mit docker-compose.yml und config.yaml sowie das Docker-Volume mit der Datenbank und den Verschlüsselungsschlüsseln. Sichern Sie beides gemeinsam. config.yaml enthält den Schlüssel, mit dem die Daten im Speicher verschlüsselt werden. Eine Datenbankkopie ohne diesen Schlüssel lässt sich nicht in lesbare Daten wiederherstellen.
docker volume ls
docker compose down
sudo tar czf netbird-config.tgz -C ~ netbird
docker run --rm -v netbird_netbird_data:/data -v "$PWD":/backup \
alpine tar czf /backup/netbird-data.tgz -C /data .
docker compose up -dCompose versieht Volume-Namen mit dem Verzeichnisnamen des Projekts. Das als netbird_data dokumentierte Volume erscheint daher normalerweise als netbird_netbird_data. Führen Sie zuerst docker volume ls aus und verwenden Sie den ausgegebenen Namen. Andernfalls schlägt docker run unbemerkt fehl, weil ein leeres Volume erstellt und nichts archiviert wird. Speichern Sie die Archive nicht auf dem VPS. Wenn Sie bereits ein Backup-Tool verwenden, übernimmt restic oder BorgBackup den Offsite-Teil.
Das Upgrade des Servers besteht aus einem Pull und einer Neuerstellung:
docker compose pull
docker compose up -d
docker compose psBevor Sie sich darauf verlassen, führen Sie docker compose config | grep image: aus. Jeder Tag mit dem Wert latest sollte auf eine Version festgelegt werden. Das gilt aus demselben Grund wie für das Installationsskript: Sie müssen wissen, was ausgeführt wird, und eine Version zum Zurückkehren haben, falls sich ein Upgrade fehlerhaft verhält. Clients werden über den Paketmanager aktualisiert, mit dem sie installiert wurden.
FAQ
Benötige ich für selbst gehostetes NetBird einen eigenen Identity Provider?
Nein. Aktuelle Releases enthalten einen integrierten Benutzerspeicher. Sie erstellen das erste Administratorkonto im Browser unter https://netbird.example.com und fügen anschließend weitere Benutzer über das Dashboard hinzu. Ein externer OIDC-Provider ist optional und kann später mit vier Werten ergänzt werden: Name, Client-ID, Client-Secret und Issuer. Anleitungen, die vor NetBird zunächst die Bereitstellung von Zitadel oder Keycloak verlangen, beschreiben ein Setup, das nicht mehr erforderlich ist. Wenn Sie ihnen folgen, müssen Sie einen zusätzlichen Dienst betreiben.
Warum zeigen alle meine Peers Connection type: Relayed?
Es werden keine direkten Verbindungen aufgebaut. Deshalb läuft der Netzwerkverkehr über das Relay auf Ihrem VPS. Die häufigste Ursache ist ein blockierter UDP-Port 3478. Dies ist der STUN-Port, den Peers verwenden, um ihre eigene öffentliche Adresse und ihren eigenen Port zu ermitteln. Öffnen Sie den Port in der VPS-Firewall und in der separaten Netzwerk-Firewall Ihres Providers. Führen Sie anschließend erneut netbird status --detail aus und lesen Sie die Zeile Direct:. In einem Netzwerk, dessen NAT für jedes Ziel einen anderen Port zuweist, ist relayed das einzig mögliche Ergebnis. Die Konfiguration ist dann nicht fehlerhaft.
Mein Client ist verbunden, aber im Dashboard werden keine Peers angezeigt. Was ist passiert?
Der Client hat sich beim gehosteten Dienst von NetBird statt bei Ihrem Server registriert. Das passiert, wenn --management-url nicht gesetzt ist. netbird status --detail gibt in der Zeile Management: den Server aus, mit dem der Client kommuniziert. Ein Wert wie https://api.netbird.io:443 bestätigt dies. Führen Sie sudo netbird down und anschließend sudo netbird up --management-url https://netbird.example.com aus. Danach wird der Peer in Ihrem Dashboard angezeigt.
Wie unterscheidet sich selbst gehostetes NetBird von Headscale?
Beide ersetzen einen gehosteten Control Server durch einen Server, den Sie selbst betreiben. Headscale ist ausschließlich eine Control Plane. Sie verwalten sie mit dem Befehl headscale und einer Konfigurationsdatei. Eine offizielle Webkonsole gibt es nicht. Headscale steuert die offiziellen Tailscale-Clients. NetBird liefert in demselben Stack einen eigenen Client, ein Admin-Dashboard und die Integration eines Identity Providers. Headscale ist kleiner im Betrieb und speichert seinen Status in Dateien. NetBird lässt sich leichter an Personen übergeben, die kein Terminal verwenden.
Welche Größe muss ein VPS für einen selbst gehosteten NetBird-Server haben?
Das dokumentierte Minimum sind 1 CPU und 2 GB Arbeitsspeicher. 2 GB ist daher die passende Größe. Die praktische Untergrenze ist in aktuellen Releases auf etwa 1 GB gesunken, weil der Identity Provider jetzt integriert ist und nicht mehr separat bereitgestellt werden muss. Lehnen Sie während der Installation den optionalen Proxy und die CrowdSec-Dienste ab. Verwenden Sie weiterhin den standardmäßigen SQLite-Speicher, bis Sie PostgreSQL tatsächlich benötigen.