Jak zainstalować NetBird VPN na własnym serwerze VPS
Instrukcja samodzielnej konfiguracji serwera NetBird na VPS. Omówienie DNS, certyfikatów TLS, skryptu instalacyjnego oraz zarządzania kluczami dla węzłów w trybie unattended.
Co daje samodzielne hostowanie serwera NetBird VPN
Samodzielne hostowanie serwera NetBird VPN przenosi płaszczyznę sterowania (control plane) na własny VPS. Jest to komponent przechowujący listę węzłów, decydujący o uprawnieniach do połączeń oraz ułatwiający wzajemne odnajdywanie się węzłów za NAT (network address translation). Same tunele nadal wykorzystują protokół WireGuard i są szyfrowane bezpośrednio między maszynami. Zmiana polega na tym, że żadna zewnętrzna firma nie posiada spisu urządzeń ani nie obsługuje procesu logowania. Należy mieć świadomość korzyści, ponieważ hostowana płaszczyzna sterowania również nie posiada kluczy szyfrujących ruch, a co faktycznie może zrobić serwer koordynujący w przypadku przejęcia jest zakresem węższym, niż większość osób zakłada przed lekturą dokumentacji.
NetBird pozycjonuje się pomiędzy rozwiązaniami, które mogą być już znane. Jest to nakładka typu mesh, w której węzły łączą się bezpośrednio ze sobą, zamiast przesyłać cały ruch przez jedną bramę. Jest to również rozwiązanie w pełni hostowalne samodzielnie, co stawia je w jednym rzędzie z Headscale, samodzielnie hostowanym serwerem sterującym Tailscale. Jeśli dotychczas używano wyłącznie tuneli z pojedynczą bramą, należy najpierw przeczytać różnice między zwykłym WireGuard a nakładką mesh, ponieważ ten model pojęciowy jest niezbędny do zrozumienia dalszej części strony.
Jeśli celem jest posiadanie jednego serwera, przez który wychodzi cały ruch, architektura mesh jest rozwiązaniem zbyt złożonym. Zwykły VPN WireGuard na pojedynczym VPS lub węzeł wyjściowy Tailscale realizują to zadanie przy znacznie mniejszym nakładzie pracy. Jeśli natomiast celem jest uzyskanie dostępu do jednej sieci prywatnej, a nie łączenie maszyn ze sobą, router podsieci Tailscale na VPS rozgłasza ten zakres do istniejącej sieci typu tailnet bez konieczności wdrażania całego poniższego stosu.
Co faktycznie uruchamia ten stos
Układ uległ niedawno zmianie, a większość starszych opracowań opisuje poprzednią wersję. Według stanu na sierpień 2026, w wydaniu v0.76.2, skrypt quickstart domyślnie tworzy plik Compose z trzema usługami.
netbird-serverobsługuje API zarządzania, usługę sygnałową, przekaźnik z wbudowanym słuchaczem STUN oraz wbudowanego dostawcę tożsamości. W starszych wydaniach były to oddzielne kontenery, a dostawca tożsamości stanowił osobną instalację Zitadel, którą należało najpierw zbudować.dashboardto administracyjna konsola internetowa.traefikdokonuje terminacji TLS (transport layer security) i przy pierwszym uruchomieniu żąda certyfikatu od Let's Encrypt.
Istnieją dwie dodatkowe usługi, które pozostają wyłączone, chyba że użytkownik wyrazi zgodę w monicie. Usługa NetBird Proxy publikuje usługi wewnętrzne pod publicznymi nazwami hostów. CrowdSec filtruje niepożądany ruch. Żadna z nich nie jest wymagana do zbudowania działającej sieci mesh, a obie zużywają pamięć na małych jednostkach.
Jeśli użytkownik przechodzi z wg-easy w pojedynczym kontenerze Docker, oznacza to wzrost liczby komponentów. W zamian otrzymuje się polityki dostępu, konta dla poszczególnych użytkowników oraz węzły, które łączą się bezpośrednio ze sobą, zamiast przez jedną bramę.
Wymagania wstępne
Publiczna nazwa domenowa jest niezbędna. Panel sterowania, API oraz przekaźnik (relay) korzystają z HTTPS na porcie 443, a Traefik pobiera certyfikat z Let's Encrypt przy użyciu wyzwania HTTP. Wymaga to nazwy, która wskazuje na VPS z publicznego Internetu. Sam adres IP nie zadziała w tym procesie.
Utwórz jeden rekord A, netbird.example.com wskazujący na publiczny adres IPv4 serwera VPS i poczekaj na propagację przed uruchomieniem jakichkolwiek działań.
dig +short netbird.example.comPolecenie to musi zwrócić adres Twojego serwera. Uruchomienie instalatora przed propagacją DNS spowoduje niepowodzenie żądania certyfikatu przy pierwszym starcie. Wielokrotne nieudane próby walidacji prowadzą do przekroczenia limitów Let's Encrypt, co wymusza godzinne oczekiwanie przed kolejną próbą.
Trzy porty muszą być dostępne z Internetu: TCP 80 dla wyzwania certyfikatu i przekierowania na HTTPS, TCP 443 dla panelu, API, sygnałów oraz ruchu przekaźnika, a także UDP 3478 dla STUN.
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 3478/udp
sudo ufw reload
sudo ufw statusOtwórz te porty również w sieciowej zaporze ogniowej dostawcy. Jest to oddzielne ustawienie w większości paneli VPS i stanowi najczęstszą przyczynę sytuacji, w której konfiguracja ufw status na serwerze jest poprawna, a połączenia nadal są odrzucane.
STUN (session traversal utilities for NAT) pozwala węzłom poznać publiczny adres i port przypisany przez ich własny NAT, co umożliwia próbę nawiązania bezpośredniego tunelu. Zablokowanie UDP 3478 nie powoduje zerwania połączeń, ponieważ węzły łączą się przez przekaźnik na TCP 443, więc wszystko wydaje się sprawne. W efekcie jednak na każdym węźle występuje Connection type: Relayed, a cały ruch przechodzi przez Twój VPS zamiast bezpośrednio między węzłami.
Od strony oprogramowania wymagany jest Docker z wtyczką Compose v2 oraz pakiety jq i curl. Skrypt sprawdza ich obecność i przerywa działanie w przypadku braku któregokolwiek z nich. Jeśli Docker jest nową instalacją na tym serwerze, najpierw skonfiguruj Docker Compose na VPS.
Porty w przypadku rezygnacji z dołączonego reverse proxy
Uruchomienie bez Traefik oznacza bezpośrednie wystawienie poszczególnych usług, co zwiększa listę wymaganych portów:
- TCP 80, przekierowania HTTP
- TCP 443, HTTPS
- TCP 33073, zarządzanie gRPC
- TCP 10000, sygnały gRPC
- TCP 33080, przekaźnik przez WebSocket lub QUIC
- UDP 3478, STUN
Wybierz to rozwiązanie tylko wtedy, gdy serwer obsługuje już terminację TLS dla innych usług. W przeciwnym razie dołączony Traefik oznacza mniej reguł i mniejsze ryzyko błędów.
Instalacja serwera NetBird za pomocą skryptu quickstart
Udokumentowane polecenie typu one-liner przesyła najnowsze wydanie bezpośrednio do powłoki:
curl -fsSL https://github.com/netbirdio/netbird/releases/latest/download/getting-started.sh | bashZamiast tego przypnij wersję. latest zmienia się, więc to samo polecenie uruchomione w odstępie dwóch tygodni generuje dwie różne instalacje, a na dysku nie ma informacji, która z nich utworzyła konfigurację. Pobierz oznaczone wydanie, przejrzyj je, a następnie uruchom.
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.shSkrypt najpierw prosi o podanie domeny:
Enter the domain you want to use for NetBird (e.g. netbird.my-domain.com):Następnie pyta o sposób obsługi TLS:
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):Wybierz [0]. Opcje od 2 do 5 zapisują fragment konfiguracji i pozostawiają kwestię połączeń użytkownikowi, co jest poprawne na serwerze z działającym proxy, ale błędne na czystej instalacji. Opcja 0 prosi o adres e-mail dla Let's Encrypt, używany do powiadomień o wygaśnięciu certyfikatu.
Przy pierwszej instalacji odmów uruchomienia usługi NetBird Proxy. Wymaga ona dwóch dodatkowych rekordów DNS, proxy.netbird.example.com oraz wildcard *.proxy.netbird.example.com, i nie wnosi nic do standardowej sieci mesh. Odmów również instalacji CrowdSec. Oba komponenty można dodać później.
Skrypt zapisuje pliki w bieżącym katalogu: docker-compose.yml, config.yaml z uprawnieniami 600, dashboard.env oraz traefik-dynamic.yaml w przypadku wyboru dołączonego Traefik. Traktuj ten katalog jako stan, który należy zachować, ponieważ config.yaml zawiera klucz szyfrujący dane w magazynie. Utrata tego pliku nie zostanie naprawiona przez ponowną instalację.
docker compose ps
docker compose logs -f netbird-serverKażda usługa powinna odczytać running, a dziennik serwera powinien się ustabilizować, zamiast restartować się w pętli. Monitoruj certyfikat oddzielnie:
docker compose logs traefik | grep -i acmeACME (automatic certificate management environment) to protokół, którego Traefik używa do uzyskania certyfikatu. Błędy w tym obszarze niemal zawsze wynikają z problemów z DNS lub zamkniętego portu 80.
Tworzenie pierwszego konta administratora
Otwórz https://netbird.example.com. W przypadku świeżej instalacji zamiast formularza logowania wyświetlona zostanie strona konfiguracji. Wprowadź adres e-mail, nazwę użytkownika oraz hasło, a następnie kliknij Create Account. Konto to stanie się pierwszym kontem administratora, a strona przekieruje użytkownika do formularza logowania.
Konto to jest przechowywane w wewnętrznej bazie użytkowników NetBird, obsługiwanej przez dostawcę tożsamości wbudowanego w kontener netbird-server. Nie wymaga to żadnych zewnętrznych zależności. Jest to największa zmiana w stosunku do samodzielnie hostowanej wersji NetBird sprzed roku, kiedy to poprawne wdrożenie wymagało najpierw uruchomienia Zitadel lub Keycloak, a następnie skopiowania czterech wartości OIDC (OpenID Connect) do setup.env przed rozpoczęciem jakichkolwiek działań.
Jeśli zamiast strony konfiguracji pojawi się ostrzeżenie przeglądarki dotyczące certyfikatu, oznacza to, że certyfikat nie został wystawiony. Należy rozwiązać ten problem przed przejściem dalej, ponieważ panel sterowania komunikuje się z API za pośrednictwem tej samej nazwy hosta i w przypadku nieprawidłowego certyfikatu wystąpią trudne do zdiagnozowania błędy.
Dołączanie pierwszego węzła
Zainstaluj klienta na dowolnej maszynie z systemem Linux, w tym na samym VPS, jeśli ma on należeć do sieci mesh:
curl -fsSL https://pkgs.netbird.io/install.sh | shW systemach Debian i Ubuntu skrypt konfiguruje repozytorium pakietów NetBird, a następnie instaluje klienta za pomocą apt, dzięki czemu menedżer pakietów przejmuje zarządzanie oprogramowaniem. Jeśli przesyłanie skryptu bezpośrednio do powłoki budzi zastrzeżenia, zapisz go najpierw za pomocą curl -fsSL -o install.sh https://pkgs.netbird.io/install.sh i przejrzyj przed uruchomieniem sh install.sh. Niezależnie od metody, sprawdź poprawność instalacji:
apt-cache policy netbirdnetbird to klient wiersza poleceń oraz demon. netbird-ui to aplikacja z ikoną w zasobniku systemowym, która jest zbędna na serwerze typu headless.
Teraz wskaż klientowi swój serwer:
sudo netbird up --management-url https://netbird.example.comPominięcie --management-url spowoduje zarejestrowanie klienta w hostowanej usłudze NetBird, ponieważ jest to domyślne ustawienie wkompilowane w oprogramowanie. Polecenie zostanie wykonane poprawnie, maszyna otrzyma adres, ale Twój własny panel sterowania pozostanie pusty. Jest to częsty błąd.
Polecenie wyświetli adres URL, który należy otworzyć w przeglądarce, aby dokończyć logowanie. Następnie:
netbird status
ip addr show wt0Odczytaj cztery linie z netbird status: Management: Connected, Signal: Connected, linię Relays: raportującą wszystkie dostępne przekaźniki oraz NetBird IP: w zakresie sieci nakładkowej. wt0 to interfejs WireGuard utworzony przez NetBird, który powinien posiadać ten sam adres.
Dołączanie drugiej maszyny w trybie bezobsługowym za pomocą klucza instalacyjnego
Logowanie przez przeglądarkę nie działa na maszynie pozbawionej interfejsu graficznego, do której nikt nie ma bezpośredniego dostępu. Klucz instalacyjny (setup key) to token preautoryzacji, który rejestruje maszynę bez konieczności interakcji użytkownika. Klucz taki tworzy się w panelu sterowania w sekcji Setup Keys.
Dostępne są dwa rodzaje kluczy. Klucz jednorazowy uwierzytelnia dokładnie jedną maszynę, po czym traci ważność. Klucz wielorazowy rejestruje wiele maszyn, z opcjonalnym limitem ich liczby. Oba typy wymagają określenia czasu wygaśnięcia i oba pozwalają na automatyczne przypisanie nowego węzła do grupy, dzięki czemu reguły dostępu dla tej grupy zaczynają obowiązywać w momencie pojawienia się maszyny w sieci.
sudo netbird up --setup-key <SETUP-KEY> \
--management-url https://netbird.example.com \
--hostname build-runner-01--hostname ustawia nazwę widoczną w panelu sterowania. Bez tego parametru węzeł przyjmuje nazwę własną systemu, a lista zawierająca wiele wpisów o nazwie ubuntu nie ułatwia zarządzania.
W przypadku kontenerów oraz krótkotrwałych agentów budujących, podczas tworzenia klucza należy oznaczyć go jako efemeryczny. Węzły zarejestrowane za pomocą klucza efemerycznego są automatycznie usuwane, gdy pozostają w trybie offline przez ponad 10 minut, co zapobiega gromadzeniu się nieaktywnych wpisów na liście węzłów.
Przed zaplanowaniem wdrożenia z użyciem kluczy instalacyjnych należy zrozumieć jedno ograniczenie: wygaśnięcie lub usunięcie klucza blokuje możliwość rejestracji nowych maszyn, ale nie powoduje rozłączenia maszyn, które zostały już za jego pomocą zarejestrowane. Aby odebrać maszynie dostęp, należy usunąć dany węzeł.
Czy nadal potrzebny jest oddzielny dostawca tożsamości?
W przypadku małej instalacji nie. Wbudowany magazyn użytkowników obsługuje konta tworzone z poziomu panelu sterowania, co jest wystarczające dla kilku osób.
Zewnętrzny dostawca tożsamości jest potrzebny, gdy już posiadasz takie rozwiązanie i nie chcesz utrzymywać drugiej listy użytkowników. NetBird akceptuje każdego dostawcę obsługującego protokół OIDC. Zarejestruj poufnego klienta OIDC u swojego dostawcy, a następnie dodaj go w panelu NetBird, podając cztery wartości: nazwę, client ID, client secret oraz issuer. NetBird wygeneruje adres URL przekierowania, który należy wkleić w konfiguracji dostawcy. Dostępne są gotowe integracje dla Google, Microsoft Entra ID, Okta, Zitadel, Keycloak, Authentik oraz Pocket ID, a każde inne rozwiązanie można dodać jako generyczny OIDC. Jeśli już korzystasz z Authentik jako własnego rozwiązania single sign-on, jest to droga pozwalająca na utrzymanie jednej listy kont zamiast dwóch.
Logowanie lokalne pozostaje dostępne po dodaniu dostawcy, a każdy skonfigurowany dostawca pojawia się na stronie logowania. Zachowaj jedno lokalne konto administratora z silnym hasłem. Dzięki temu w przypadku błędnej konfiguracji OIDC nadal będziesz mieć możliwość uzyskania dostępu.
NetBird czy Headscale: który płaszczyzna sterowania wybrać?
Oba rozwiązania eliminują tę samą zależność, czyli zewnętrzny serwer sterujący, z którym klienci musieliby się łączyć. Nie są to jednak projekty o tym samym charakterze.
Headscale stanowi reimplementację serwera sterującego Tailscale, co pozwala na korzystanie z oficjalnych klientów Tailscale. Projekt nie posiada oficjalnej konsoli internetowej. Zarządzanie użytkownikami oraz kluczami preautoryzacyjnymi odbywa się za pomocą polecenia headscale w odniesieniu do pliku konfiguracyjnego. Istnieją społecznościowe interfejsy webowe, jednak nie stanowią one części projektu. Rozwiązanie to jest odpowiednie dla osób preferujących przechowywanie stanu w plikach oraz wersjonowanie zmian.
NetBird dostarcza kompletny produkt: własnego klienta, pulpit nawigacyjny, wbudowanego dostawcę tożsamości oraz polityki dostępu edytowane w przeglądarce. Oznacza to więcej komponentów do utrzymania na serwerze VPS, ale znacznie mniej pracy przy przekazywaniu narzędzia współpracownikom, którzy nie korzystają z terminala.
Wybierz Headscale, jeśli korzystasz już z klientów Tailscale lub zależy Ci na jak najmniejszej płaszczyźnie sterowania. Wybierz NetBird, jeśli zarządzaniem węzłami musi zajmować się kilka osób i oczekujesz konsoli oraz SSO bez konieczności samodzielnego konfigurowania tych elementów. Przed podjęciem decyzji sprawdź co faktycznie obejmuje darmowy plan Tailscale, ponieważ grupa licząca do sześciu użytkowników z nieograniczoną liczbą urządzeń nie ponosi kosztów za hostowaną płaszczyznę sterowania i może nie mieć powodów do uruchamiania własnej. Po przekroczeniu tego limitu opłaty rosną wraz z liczbą osób, a nie urządzeń, dlatego obliczenie kosztów Tailscale dla Twojej grupy pozwoli uzyskać kwotę, którą można zestawić z kosztami utrzymania VPS oraz czasem poświęconym na obsługę własnego stosu technologicznego.
Jak mały VPS wystarczy do uruchomienia tego rozwiązania?
Dokumentowane minimum to 1 CPU i 2 GB pamięci RAM. Według własnych notatek NetBird, obecny próg wynosi około 1 GB RAM, odkąd zarządzanie użytkownikami odbywa się lokalnie, w porównaniu do 2 GB – 4 GB wymaganych przez starszą architekturę, gdy pełne wdrożenie Zitadel było częścią stosu. Należy zakupić 2 GB. Dodatkowy zapas pozwala na pobranie nowych obrazów podczas aktualizacji, gdy stare nadal znajdują się na dysku.
Trzy elementy można bezpiecznie pominąć na małej maszynie. Należy zrezygnować z usługi NetBird Proxy, która służy do publikowania usług wewnętrznych pod publicznymi nazwami hostów i nie ma wpływu na łączenie się peerów. Należy zrezygnować z CrowdSec, który warto dodać do wystawionej na świat maszyny w późniejszym terminie, a nie pierwszego dnia. Należy zachować domyślny magazyn SQLite w wolumenie netbird_data, a na PostgreSQL przejść dopiero w momencie rozdzielenia wdrożenia na kilka maszyn lub osiągnięcia rzeczywistego poziomu współbieżności, co jest udokumentowane jako migracja możliwa do przeprowadzenia później.
Relay jest jedynym komponentem, którego nie można usunąć. Dwa peery, których NAT przypisuje inny port dla każdego miejsca docelowego, nigdy nie ustanowią bezpośredniego tunelu, więc relay jest jedyną ścieżką, która w ogóle umożliwia ich działanie. Wyłączenie go oszczędza niewiele pamięci, a przerywa połączenia w sposób trudny do zdiagnozowania.
Gdy jedna maszyna przestaje wystarczać, relay jest pierwszym elementem, który należy przenieść. Samodzielny relay działa z użyciem NB_LISTEN_ADDRESS, NB_EXPOSED_ADDRESS, NB_AUTH_SECRET oraz NB_ENABLE_STUN. Wspólny sekret (shared secret) musi być identyczny na relayu oraz na serwerze głównym, w przeciwnym razie klienci nie przejdą uwierzytelnienia.
Tryby awarii i ich objawy
Panel sterowania wyświetla ostrzeżenie o certyfikacie. Traefik nie uzyskał certyfikatu. Uruchom docker compose logs traefik | grep -i acme. Istnieją dwie przyczyny. Albo dig +short netbird.example.com nie wskazuje jeszcze na ten VPS, albo port TCP 80 jest zablokowany na trasie między Let's Encrypt a kontenerem, zazwyczaj przez firewall dostawcy, a nie przez ufw. Usuń przyczynę przed ponowną próbą, ponieważ nieudane walidacje podlegają limitom częstotliwości i zablokujesz sobie możliwość ponowienia prób na godzinę.
Klient zgłasza połączenie, a panel jest pusty. Klient zarejestrował się w usłudze hostowanej NetBird, ponieważ brakowało --management-url. Uruchom netbird status --detail i odczytaj linię Management:, która wskazuje serwer, z którym klient faktycznie się komunikuje. Widoczność Management: Connected to https://api.netbird.io:443 oznacza, że klient połączył się z chmurą. Uruchom sudo netbird down, a następnie ponownie sudo netbird up --management-url https://netbird.example.com.
Każdy węzeł wyświetla Connection type: Relayed. Bezpośrednie tunele nie są nawiązywane, więc cały ruch przechodzi przez VPS, co zwiększa opóźnienia. Sprawdź port UDP 3478 na firewallu VPS oraz na firewallu dostawcy, ponieważ STUN pozwala węzłowi poznać własny publiczny adres i port. Polecenie netbird status --detail wyświetla również Direct: false oraz typy kandydatów ICE (interactive connectivity establishment) dla każdego węzła, co pozwala ocenić etap nieudanego połączenia. W niektórych sieciach połączenie typu relayed jest jedynym dostępnym i nie oznacza błędu.
Węzeł dołącza do sieci, ale nie ma z niczym łączności. Obecność w sieci mesh nie oznacza, że dwa węzły mogą się komunikować. Decydują o tym polityki dostępu, a grupa bez przypisanej polityki nie ma dostępu do żadnych zasobów. Sprawdź politykę w panelu sterowania przed rozpoczęciem debugowania tras i firewalli.
netbird status zgłasza problem z daemonem. Usługa nie działa. Użyj sudo netbird service status oraz sudo netbird service start. Dzienniki klienta znajdują się w /var/log/netbird/client.log. W przypadku problemów, których nie można zdiagnozować, netbird debug bundle --anonymize --system-info zbiera dzienniki, status, trasy, ustawienia DNS oraz stan firewalla do jednego archiwum.
Kopie zapasowe i aktualizacje
Cała instalacja opiera się na dwóch elementach: katalogu zawierającym docker-compose.yml oraz config.yaml, a także wolumenie Docker przechowującym bazę danych i klucze szyfrujące. Należy tworzyć ich kopie zapasowe łącznie. Plik config.yaml zawiera klucz szyfrujący dane w magazynie, więc kopia bazy danych bez niego uniemożliwia odczytanie jakichkolwiek informacji po przywróceniu.
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 dodaje prefiks katalogu projektu do nazw wolumenów, dlatego wolumen opisany jako netbird_data zazwyczaj występuje pod nazwą netbird_netbird_data. Najpierw należy uruchomić docker volume ls i użyć wyświetlonej nazwy, w przeciwnym razie polecenie docker run zakończy się niepowodzeniem, tworząc pusty wolumen i nie archiwizując żadnych danych. Archiwa należy przechowywać poza serwerem VPS. Jeśli używane jest już narzędzie do kopii zapasowych, restic lub BorgBackup obsłuży proces przesyłania danych do zewnętrznej lokalizacji.
Aktualizacja serwera polega na pobraniu nowej wersji obrazów i ponownym utworzeniu kontenerów:
docker compose pull
docker compose up -d
docker compose psZanim proces ten zostanie wdrożony, należy uruchomić docker compose config | grep image:. Każdy tag oznaczony jako latest powinien być przypięty do konkretnej wersji z tego samego powodu, dla którego przypięto skrypt instalacyjny: administrator musi wiedzieć, co jest uruchomione, oraz posiadać wersję, do której można wrócić w przypadku problemów po aktualizacji. Klienci aktualizują się za pomocą menedżera pakietów, który został użyty do ich instalacji.
FAQ
Czy do samodzielnego hostowania NetBird potrzebuję własnego dostawcy tożsamości?
Nie. Bieżące wydania zawierają wbudowany magazyn użytkowników, więc pierwsze konto administratora tworzy się w przeglądarce pod adresem https://netbird.example.com, a kolejnych użytkowników dodaje się później z poziomu panelu sterowania. Zewnętrzny dostawca OIDC jest opcjonalny i można go dodać później, podając cztery wartości: nazwę, client ID, client secret oraz issuer. Poradniki zalecające wdrożenie Zitadel lub Keycloak przed NetBird opisują konfigurację, która nie jest już wymagana, a ich stosowanie wiąże się z koniecznością utrzymywania dodatkowej usługi.
Dlaczego wszystkie moje węzły (peers) wyświetlają Connection type: Relayed?
Połączenia bezpośrednie nie są nawiązywane, więc ruch przechodzi przez przekaźnik (relay) na Twoim VPS. Typową przyczyną jest zablokowany port UDP 3478, czyli port STUN, którego węzły używają do wykrywania własnego publicznego adresu i portu. Otwórz go na zaporze sieciowej VPS oraz na zewnętrznej zaporze sieciowej dostawcy, a następnie uruchom ponownie netbird status --detail i sprawdź linię Direct:. W sieciach, w których NAT przypisuje inny port dla każdego miejsca docelowego, połączenie przekaźnikowe jest jedynym możliwym wynikiem i nie oznacza błędu konfiguracji.
Mój klient się połączył, ale panel sterowania nie pokazuje żadnych węzłów. Co się stało?
Klient zarejestrował się w hostowanej usłudze NetBird zamiast na Twoim serwerze, co dzieje się, gdy pominięto --management-url. Polecenie netbird status --detail wyświetla serwer, z którym nawiązano komunikację w linii Management:, więc wartość taka jak https://api.netbird.io:443 potwierdza ten stan. Uruchom sudo netbird down, a następnie sudo netbird up --management-url https://netbird.example.com, aby węzeł pojawił się w panelu sterowania.
Czym różni się samodzielnie hostowany NetBird od Headscale?
Oba rozwiązania zastępują hostowany serwer kontrolny własną instancją. Headscale to tylko płaszczyzna sterowania: zarządza się nim za pomocą polecenia headscale oraz pliku konfiguracyjnego, nie posiada oficjalnej konsoli webowej i obsługuje oficjalnych klientów Tailscale. NetBird dostarcza własnego klienta, panel administracyjny oraz integrację z dostawcą tożsamości w ramach jednego stosu. Headscale jest lżejszy w utrzymaniu i przechowuje stan w plikach. NetBird jest łatwiejszy do przekazania osobom, które nie korzystają z terminala.
Jakiego rozmiaru VPS wymaga samodzielnie hostowany serwer NetBird?
Dokumentowane minimum to 1 CPU i 2 GB pamięci RAM, przy czym 2 GB to wartość zalecana przy zakupie. Praktyczny próg spadł do około 1 GB w ostatnich wydaniach, ponieważ dostawca tożsamości jest teraz wbudowany, a nie stanowi osobnego wdrożenia. Podczas instalacji można zrezygnować z opcjonalnego proxy oraz usług CrowdSec i pozostać przy domyślnym magazynie SQLite, dopóki nie zaistnieje rzeczywista potrzeba użycia PostgreSQL.