Jak samodzielnie hostować serwer NetBird VPN na VPS
Instrukcja konfiguracji własnego serwera NetBird VPN na VPS. Dowiedz się jak poprawnie wdrożyć TLS, DNS oraz klucze dostępowe dla węzłów. Porównanie z Headscale w jednym miejscu.
Co daje samodzielne hostowanie serwera NetBird VPN
Samodzielne hostowanie serwera NetBird VPN przenosi płaszczyznę sterowania (control plane) na posiadany przez użytkownika VPS. Jest to komponent przechowujący listę węzłów, decydujący o uprawnieniach do połączeń oraz wspomagający nawiązywanie sesji między węzłami znajdującymi się za NAT (network address translation). Same tunele nadal wykorzystują protokół WireGuard i są szyfrowane bezpośrednio między urządzeniami. Zmiana polega na tym, że żadna zewnętrzna firma nie zarządza spisem urządzeń ani procesem logowania.
NetBird łączy cechy rozwiązań, które mogą być już znane. Jest to nakładka typu mesh, w której węzły łączą się ze sobą bezpośrednio, zamiast przesyłać cały ruch przez jedną bramę. Możliwość pełnego samodzielnego hostowania stawia to rozwiązanie w jednym rzędzie z Headscale, samodzielnie hostowanym serwerem sterującym dla Tailscale. Jeśli dotychczas używano wyłącznie tuneli z pojedynczą bramą, należy najpierw zapoznać się z różnicami między standardowym WireGuard a nakładką mesh, ponieważ ten model pojęciowy jest niezbędny do zrozumienia dalszej części strony.
Jeśli celem jest uzyskanie jednego serwera, przez który wychodzi cały ruch, architektura mesh jest rozwiązaniem zbyt złożonym dla tego zadania. Standardowy VPN WireGuard na pojedynczym VPS lub węzeł wyjściowy Tailscale realizują to zadanie przy znacznie mniejszym nakładzie pracy.
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 (relay) z wbudowanym słuchaczem STUN oraz wbudowanego dostawcę tożsamości. W starszych wydaniach były to oddzielne kontenery, a dostawca tożsamości wymagał wcześniejszej instalacji Zitadel.dashboardto konsola administracyjna WWW.traefikdokonuje terminacji TLS (transport layer security) i przy pierwszym uruchomieniu żąda certyfikatu od Let's Encrypt.
Istnieją jeszcze dwie 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 uzyskuje 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 protokołu 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 poziomu publicznego Internetu. Sam adres IP w tym procesie nie zadziała.
Należy utworzyć jeden rekord A, netbird.example.com, wskazujący na publiczny adres IPv4 serwera VPS i odczekać na propagację przed uruchomieniem jakichkolwiek działań.
dig +short netbird.example.comPolecenie to musi zwrócić adres 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ą.
Z Internetu muszą być dostępne trzy porty: 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 statusPorty te należy również otworzyć w sieciowej zaporze ogniowej dostawcy. W większości paneli VPS jest to osobne ustawienie i stanowi częstą przyczynę sytuacji, w której serwer, mimo poprawnej konfiguracji ufw status, odrzuca połączenia.
STUN (Session Traversal Utilities for NAT) pozwala węzłowi poznać publiczny adres i port przypisany przez jego własny NAT, co umożliwia próbę nawiązania bezpośredniego tunelu między węzłami. 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 widoczne jest Connection type: Relayed, a cały ruch przechodzi przez serwer 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 świeżo zainstalowany na serwerze, należy najpierw skonfigurować Docker Compose na VPS.
Porty w przypadku rezygnacji z dołączonego reverse proxy
Uruchomienie bez Traefik oznacza, że poszczególne usługi są wystawione bezpośrednio, 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
Udokumentowana metoda „jednej linii” 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 ulega zmianom, więc to samo polecenie uruchomione w odstępie dwóch tygodni wygeneruje dwie różne instalacje, a na dysku nie pozostanie żaden ślad wskazujący, 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 w przypadku czystej instalacji. Opcja 0 prosi o adres e-mail dla Let's Encrypt, wykorzystywany do powiadomień o wygaśnięciu certyfikatu.
Przy pierwszej instalacji odrzuć usługę NetBird Proxy. Wymaga ona dwóch dodatkowych rekordów DNS, proxy.netbird.example.com oraz wildcard *.proxy.netbird.example.com, i nie wnosi żadnych korzyści w przypadku standardowej sieci mesh. Odrzuć również CrowdSec. Obie te funkcje 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 (jeśli wybrano dołączony Traefik). Traktuj ten katalog jako stan, który należy zachować, ponieważ config.yaml przechowuje 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świetli się strona konfiguracji. Wprowadź adres e-mail, nazwę oraz hasło, a następnie kliknij Create Account. To konto stanie się pierwszym administratorem, a strona przekieruje użytkownika do formularza logowania.
Konto to znajduje się 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 hostowanego NetBird sprzed roku, kiedy to poprawna instalacja wymagała najpierw uruchomienia Zitadel lub Keycloak i 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 to naprawić przed przejściem dalej, ponieważ panel sterowania komunikuje się z API za pośrednictwem tej samej nazwy hosta i w przypadku błędnego certyfikatu generuje niejasne 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 kontrolę nad instalacją. Jeśli przesyłanie skryptu potokiem 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ź wynik instalacji:
apt-cache policy netbirdnetbird to klient wiersza poleceń oraz demon. netbird-ui to aplikacja z ikoną w zasobniku systemowym; serwer bez interfejsu graficznego jej nie wymaga.
Teraz wskaż klientowi swój serwer:
sudo netbird up --management-url https://netbird.example.comPominięcie --management-url spowoduje, że klient zarejestruje się w hostowanej usłudze NetBird, ponieważ jest to domyślne ustawienie wbudowane w kod. Polecenie zakończy się powodzeniem, maszyna otrzyma adres, a Twój własny panel sterowania pozostanie pusty. Jest to błąd, który popełnia niemal każdy użytkownik.
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 (overlay). wt0 to interfejs WireGuard tworzony przez NetBird; powinien on 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 bez interfejsu graficznego, do której nikt nie ma bezpośredniego dostępu. Klucz instalacyjny (setup key) to token wstępnej autoryzacji, który rejestruje maszynę bez konieczności interakcji użytkownika. Można go utworzyć 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 daty wygaśnięcia i oba mogą automatycznie przypisywać nowy węzeł do grupy, dzięki czemu reguły dostępu dla tej grupy zaczną 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ę wyświetlaną w panelu sterowania. Bez tego parametru węzeł przyjmuje nazwę własną systemu, a lista zawierająca wiele wpisów o nazwie ubuntu nie jest użyteczna.
W przypadku kontenerów i krótkotrwałych agentów budowania, 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 uniemożliwia rejestrację 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 osobny 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 ścieżka pozwalająca zachować jedną listę 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 błędna konfiguracja OIDC nie zablokuje dostępu do systemu.
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ć. Projekty te różnią się jednak charakterystyką.
Headscale stanowi reimplementację serwera sterującego Tailscale, co pozwala na korzystanie z oficjalnych klientów Tailscale. Projekt nie posiada oficjalnej konsoli webowej. Zarządzanie użytkownikami oraz kluczami pre-autoryzacyjnymi odbywa się za pomocą polecenia headscale w oparciu o plik konfiguracyjny. Istnieją społecznościowe interfejsy webowe, jednak nie stanowią one części projektu. Rozwiązanie to jest odpowiednie dla użytkowników 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. Wymaga to utrzymywania większej liczby komponentów na serwerze VPS, ale jest znacznie wygodniejsze w przekazaniu współpracownikowi, który nie korzysta z terminala.
Wybierz Headscale, jeśli korzystasz już z klientów Tailscale lub potrzebujesz możliwie najlżejszej płaszczyzny sterowania. Wybierz NetBird, jeśli zarządzaniem węzłami musi zajmować się kilka osób i oczekujesz gotowej konsoli oraz SSO bez konieczności samodzielnej integracji komponentów.
Jak mały VPS wystarczy do uruchomienia tego rozwiązania?
Dokumentowane minimum to 1 CPU i 2 GB pamięci RAM. Według notatek NetBird obecny próg wynosi około 1 GB RAM, ponieważ zarządzanie użytkownikami odbywa się lokalnie, w przeciwieństwie do wcześniejszej architektury wymagającej od 2 GB do 4 GB przy pełnym wdrożeniu Zitadel. Zaleca się zakup 2 GB. Dodatkowy zapas pozwala na pobranie nowych obrazów podczas aktualizacji, gdy stare pliki nadal zajmują miejsce na dysku.
W przypadku małego serwera można bezpiecznie zrezygnować z trzech elementów. Należy pominąć usługę NetBird Proxy, która służy do publikowania usług wewnętrznych pod publicznymi nazwami hostów i nie wpływa na nawiązywanie połączeń między węzłami (peers). Można również zrezygnować z CrowdSec, który warto dodać do wystawionego na świat serwera w późniejszym terminie, a nie w dniu wdrożenia. Należy pozostać przy domyślnej bazie SQLite w wolumenie netbird_data, a na PostgreSQL przejść dopiero w momencie rozdzielenia wdrożenia na kilka maszyn lub przy wystąpieniu realnych problemów z współbieżnością; migracja ta jest udokumentowana jako operacja, którą można wykonać później.
Relay jest jedynym komponentem, z którego nie można zrezygnować. Dwa węzły, których NAT przypisuje inny port dla każdego miejsca docelowego, nigdy nie nawiążą bezpośredniego tunelu, więc relay jest jedyną ścieżką umożliwiającą ich współpracę. Wyłączenie go oszczędza znikomą ilość pamięci, a powoduje problemy z połączeniami, które są trudne do zdiagnozowania.
Gdy jeden serwer 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 klucz (shared secret) musi być identyczny na relayu oraz na serwerze głównym, w przeciwnym razie klienci nie przejdą autoryzacji.
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 drodze 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, ale 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 faktycznie nawiązano komunikację. 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ą tworzone, 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 na poznanie własnego publicznego adresu i portu. 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, na którym połączenie zostało przerwane. 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 dostępu do zasobów. Obecność w sieci mesh nie oznacza automatycznie możliwości komunikacji między węzłami. Decydują o tym polityki dostępu, a grupa bez przypisanej polityki nie ma dostępu do niczego. Przed rozpoczęciem debugowania tras i firewalli sprawdź politykę w panelu sterowania.
netbird status zgłasza problem z demonem. Usługa nie jest uruchomiona. 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, dlatego kopia bazy danych bez tego pliku uniemożliwia odczytanie przywróconych informacji.
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, więc wolumen opisany jako netbird_data zazwyczaj występuje pod nazwą netbird_netbird_data. Najpierw należy uruchomić docker volume ls i użyć nazwy, którą wyświetli to polecenie, w przeciwnym razie 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 lokalizacji zewnętrznej.
Aktualizacja serwera polega na pobraniu nowej wersji i ponownym utworzeniu kontenerów:
docker compose pull
docker compose up -d
docker compose psPrzed wykonaniem tej operacji 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: użytkownik 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. Obecne 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. 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 wyświetlają Connection type: Relayed?
Połączenia bezpośrednie nie są nawiązywane, więc ruch przechodzi przez przekaźnik na Twoim VPS. Zazwyczaj 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, których NAT przypisuje inny port dla każdego miejsca docelowego, tryb przekaźnika jest jedynym możliwym wynikiem i nie oznacza błędnej konfiguracji.
Mój klient się połączył, ale panel 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. netbird status --detail wyświetla serwer, z którym nawiązano połączenie 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.
Czym różni się samodzielnie hostowany NetBird od Headscale?
Oba rozwiązania zastępują hostowany serwer kontrolny własną instancją. Headscale to wyłącznie płaszczyzna kontrolna: zarządza się nią za pomocą polecenia headscale i 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 wymaga mniej zasobów i przechowuje stan w plikach. NetBird jest łatwiejszy w przekazaniu osobom, które nie korzystają z terminala.
Jakiego rozmiaru VPS wymaga samodzielnie hostowany serwer NetBird?
Zalecane minimum to 1 CPU i 2 GB pamięci RAM, przy czym 2 GB to wartość, którą należy wybrać. W ostatnich wydaniach realne zapotrzebowanie spadło do około 1 GB, ponieważ dostawca tożsamości jest teraz wbudowany, a nie stanowi osobnego wdrożenia. Podczas instalacji zrezygnuj z opcjonalnych usług proxy i CrowdSec oraz pozostań przy domyślnym magazynie SQLite, dopóki faktycznie nie zaistnieje potrzeba użycia PostgreSQL.