SSD Nodes Learn 🎉 VPS mula $5.50/buwan
Mga Gabay Matt ConnorNi Matt Connor · Na-update 2026-08-13

Paano i-self-host ang NetBird VPN server sa VPS

Ipatakbo ang NetBird mesh VPN sa isang VPS: DNS at TLS setup, pinned quickstart script, setup keys para sa unattended peers, at paghahambing sa Headscale.

Ano ang makukuha sa self-hosting ng NetBird VPN server

Sa self-hosting ng NetBird VPN server, inilalagay mo ang control plane sa isang VPS na pagmamay-ari mo. Dito nakalista ang mga peer, dito tinutukoy kung aling machine ang maaaring kumonekta sa alin, at dito tinutulungan ang dalawang peer na mahanap ang isa’t isa sa likod ng NAT (network address translation). WireGuard pa rin ang mismong mga tunnel, at direktang naka-encrypt ang mga ito sa pagitan ng iyong mga machine. Ang nagbabago ay wala nang external na kumpanya na may hawak ng imbentaryo ng iyong device o ng proseso ng iyong pag-login.

Nasa pagitan ng dalawang konseptong maaaring pamilyar ka na ang NetBird. Mesh overlay ito, kaya direktang kumokonekta ang mga peer sa isa’t isa sa halip na ipadala ang lahat ng traffic sa iisang gateway. Maaari rin itong i-self-host mula simula hanggang dulo, kaya katapat nito ang Headscale, ang self-hosted Tailscale control server. Kung single-gateway tunnel lang ang dati mong ginagamit, basahin muna ang pagkakaiba ng plain WireGuard at mesh overlay, dahil ang modelong iyon ang tutulong para maging malinaw ang iba pang bahagi ng page na ito.

Kung ang kailangan mo talaga ay isang server na doon dumadaan palabas ang lahat ng traffic mo, mas kumplikado kaysa kinakailangan ang mesh. Mas kaunting component at maintenance ang kailangan ng plain WireGuard VPN sa iisang VPS o Tailscale exit node para dito.

Ano talaga ang pinapatakbo ng stack

Kamakailan ay nagbago ang layout, at karamihan sa mga lumang write-up ay naglalarawan pa rin ng dating setup. Noong August 2026, sa release na v0.76.2, ang quickstart script ay gumagawa bilang default ng Compose file na may tatlong service.

  • netbird-server ang naglalaman ng management API, signal service, relay na may naka-embed na STUN listener, at naka-embed na identity provider. Sa mga mas lumang release, magkakahiwalay na container ang mga ito, at hiwalay na Zitadel install ang identity provider na kailangan mo munang i-build.
  • dashboard ang admin web console.
  • traefik ang nagte-terminate ng TLS (transport layer security) at humihingi ng certificate sa Let's Encrypt sa unang pagsisimula.

May dalawa pang service na umiiral ngunit nananatiling naka-off maliban kung sumagot ka ng yes sa prompt. Ang NetBird Proxy service ang nagpa-publish ng mga internal service sa public hostname. Ang CrowdSec ang nagfi-filter ng abusadong traffic. Hindi kailangan ang alinman sa mga ito para makabuo ng gumaganang mesh, at parehong kumokonsumo ng memory sa maliit na server.

Kung galing ka sa wg-easy sa iisang Docker container, mas marami itong bahagi. Kapalit nito, nakakakuha ka ng access policy at account para sa bawat user, pati mga peer na direktang kumokonekta sa isa't isa sa halip na dumaan sa isang gateway.

Mga kailangan bago magsimula

Hindi opsyonal ang isang public domain name. HTTPS sa port 443 ang ginagamit ng dashboard, API, at relay, at kinukuha ng Traefik ang certificate nito mula sa Let's Encrypt gamit ang HTTP challenge. Kailangan nito ng pangalan na nagre-resolve sa VPS mula sa public internet. Hindi gagana ang bare IP address sa flow na ito.

Gumawa ng isang A record, netbird.example.com na tumuturo sa public IPv4 address ng VPS, at hintaying mag-propagate ito bago ka magpatakbo ng anuman.

dig +short netbird.example.com

Dapat i-print nito ang address ng server mo. Kapag pinatakbo ang installer bago mag-propagate ang DNS, mabibigo ang certificate request sa unang pagsisimula. Kapag paulit-ulit na nabigo ang validation, maaabot ang rate limit ng Let's Encrypt, kaya kailangan mong maghintay ng isang oras bago muling sumubok.

Tatlong port ang dapat maabot mula sa internet: TCP 80 para sa certificate challenge at redirect sa HTTPS, TCP 443 para sa dashboard, API, signal, at relay traffic, at UDP 3478 para sa STUN.

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 3478/udp
sudo ufw reload
sudo ufw status

Buksan din ang mga ito sa network firewall ng provider mo. Hiwalay itong control sa karamihan ng VPS panel, at ito ang dahilan kung bakit tumatangging tumanggap ng connections ang isang box kahit tama ang itsura ng sarili nitong ufw status.

Ang STUN (session traversal utilities for NAT) ang ginagamit ng isang peer upang malaman ang public address at port na itinalaga ng sarili nitong NAT. Dahil dito, maaaring subukan ng dalawang peer na gumawa ng direct tunnel. Kapag bina-block ang UDP 3478, kumokonekta pa rin ang mga peer sa pamamagitan ng relay sa TCP 443, kaya walang mukhang sira. Sa halip, nakakakuha ka ng Connection type: Relayed sa bawat peer, at dumadaan ang lahat ng traffic sa VPS mo sa halip na direktang peer to peer.

Sa software side, kailangan mo ng Docker na may Compose v2 plugin, pati ng jq at curl. Sinusuri ng script ang lahat ng ito at hihinto kung may nawawala. Kung bago ang Docker sa box na ito, ihanda muna ang Docker Compose sa VPS.

Mga port kung lalaktawan ang bundled reverse proxy

Kapag tumatakbo nang walang Traefik, direktang naka-expose ang mga indibidwal na serbisyo at humahaba ang listahan ng mga port:

  • TCP 80, HTTP redirects
  • TCP 443, HTTPS
  • TCP 33073, management gRPC
  • TCP 10000, signal gRPC
  • TCP 33080, relay sa WebSocket o QUIC
  • UDP 3478, STUN

Piliin lamang ito kapag may iba nang nagte-terminate ng TLS sa box. Kung hindi, mas kaunti ang rules at mas kaunti ang pagkakamali kapag ginagamit ang bundled Traefik.

I-install ang NetBird server gamit ang quickstart script

Direktang ipinapasa ng dokumentadong one-liner ang pinakabagong release sa shell:

curl -fsSL https://github.com/netbirdio/netbird/releases/latest/download/getting-started.sh | bash

I-pin muna ito. Nagbabago ang latest, kaya magkaibang install ang nalilikha ng parehong command kapag dalawang linggo ang pagitan ng pagpapatakbo. Wala ring nire-record sa disk kung aling release ang sumulat ng configuration mo. Mag-download ng tagged release, basahin ito, at saka patakbuhin.

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.sh

Una, itatanong ng script ang domain:

Enter the domain you want to use for NetBird (e.g. netbird.my-domain.com):

Pagkatapos, itatanong nito kung paano hahawakan ang 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):

Piliin ang [0]. Ang options 2 hanggang 5 ay sumusulat ng config snippet at iniiwan sa iyo ang pag-wire nito. Tama ito sa server na mayroon nang proxy, pero hindi sa bagong server. Pagkatapos, hihingin ng option 0 ang email address para sa Let's Encrypt. Gagamitin ito para sa mga abiso tungkol sa pag-expire.

Tumanggi sa NetBird Proxy service sa unang install. Kailangan nito ng dalawa pang DNS record, proxy.netbird.example.com at ang wildcard na *.proxy.netbird.example.com, at wala itong silbi para sa plain mesh. Tumanggi rin sa CrowdSec. Maidaragdag ang dalawang ito sa susunod.

Sumusulat ang script sa kasalukuyang directory: docker-compose.yml, config.yaml na may mode 600, dashboard.env, at traefik-dynamic.yaml kapag pinili mo ang bundled Traefik. Ituring ang directory na iyon bilang state na dapat mong panatilihin, dahil nasa config.yaml ang key na nag-e-encrypt ng data sa store. Hindi malulutas ng reinstall ang pagkawala nito.

docker compose ps
docker compose logs -f netbird-server

Dapat basahin ng bawat service ang running, at dapat maging stable ang server log sa halip na paulit-ulit na mag-restart. Hiwalay na i-monitor ang certificate:

docker compose logs traefik | grep -i acme

Ang ACME (automatic certificate management environment) ang protocol na ginagamit ng Traefik para kumuha ng certificate. Halos palaging DNS issue o saradong port 80 ang sanhi ng mga error dito.

Gawin ang unang admin account

Buksan ang https://netbird.example.com. Sa bagong install, setup page ang lalabas sa halip na login form. Maglagay ng email address, pangalan, at password, pagkatapos ay i-click ang Create Account. Ito ang magiging unang admin, at ire-redirect ng page ang browser sa login form.

Naka-store ang account na ito sa sariling user store ng NetBird, na pinapagana ng identity provider na naka-embed sa netbird-server container. Walang external na kasangkot. Ito ang pinakamalaking pagbabago kumpara sa self-hosted NetBird noong isang taon. Noon, kailangan munang mag-set up ng Zitadel o Keycloak at mag-copy ng apat na OIDC (OpenID Connect) value sa setup.env bago ito tuluyang magsimula.

Kung browser certificate warning ang makita mo sa halip na setup page, hindi na-issue ang certificate. Ayusin muna ito bago magpatuloy. Nakikipag-ugnayan ang dashboard sa API gamit ang parehong hostname, at maaaring magdulot ng nakakalitong mga failure ang maling certificate.

Sumali sa iyong unang peer

I-install ang client sa anumang Linux machine, kasama ang VPS mismo kung nais mo itong isama sa mesh:

curl -fsSL https://pkgs.netbird.io/install.sh | sh

Sa Debian at Ubuntu, kino-configure ng script na iyon ang package repository ng NetBird at pagkatapos ay ini-install ang client gamit ang apt. Dahil dito, ang package manager pa rin ang namamahala rito. Kung ayaw mong mag-pipe ng script sa shell, i-save muna ito gamit ang curl -fsSL -o install.sh https://pkgs.netbird.io/install.sh at basahin bago patakbuhin ang sh install.sh. Alinman ang piliin mo, kumpirmahin kung ano ang na-install:

apt-cache policy netbird

Ang netbird ay ang command line client at daemon. Ang netbird-ui ay ang desktop tray app, at walang silbi ito sa headless server.

Ngayon, ituro ang client sa iyong server:

sudo netbird up --management-url https://netbird.example.com

Alisin ang --management-url at magre-register ang client sa hosted service ng NetBird dahil iyon ang compiled-in default. Matagumpay pa rin ang command, magkakaroon pa rin ng address ang machine, at mananatiling walang laman ang iyong self-hosted dashboard. Halos lahat ay nagkakamali rito kahit isang beses.

Magpi-print ang command ng URL na bubuksan sa browser para makumpleto ang login. Pagkatapos:

netbird status
ip addr show wt0

Basahin ang apat na linya mula sa netbird status: Management: Connected, Signal: Connected, isang Relays: line na nag-uulat ng bawat available na relay, at isang NetBird IP: sa overlay range. Ang wt0 ang WireGuard interface na ginagawa ng NetBird, at dapat taglay nito ang parehong address.

Sumali ng pangalawang machine nang walang user interaction gamit ang setup key

Hindi gumagana ang browser login sa machine na walang browser at walang taong nasa harap nito. Ang setup key ay isang pre-authentication token na nagrerehistro ng machine nang hindi kailangan ang interactive na hakbang. Gumawa nito sa dashboard sa ilalim ng Setup Keys.

May dalawang uri. Ang one-off key ay nag-a-authenticate ng eksaktong isang machine at pagkatapos ay nagagamit na. Ang reusable key ay nagrerehistro ng maraming machine, na may optional na limitasyon sa bilang ng mga ito. Parehong may expiry, at parehong maaaring awtomatikong magtalaga sa bagong peer ng isang group. Dahil dito, agad na nalalapat ang access rules ng group kapag lumitaw ang machine.

sudo netbird up --setup-key <SETUP-KEY> \
  --management-url https://netbird.example.com \
  --hostname build-runner-01

Itinatakda ng --hostname ang pangalang ipinapakita sa dashboard. Kung wala ito, gagamitin ng peer ang pangalan na ginagamit ng machine para sa sarili nito. Walang silbi ang fleet ng mga entry na pare-parehong pinangalanang ubuntu.

Para sa mga container at short-lived build agent, itakda ang key bilang ephemeral kapag ginagawa ito. Ang mga peer na nakarehistro gamit ang ephemeral key ay awtomatikong inaalis kapag mahigit 10 minuto na silang offline. Napapanatili nitong malinis ang peer list mula sa mga hindi na aktibong entry.

May isang limitasyong dapat maunawaan bago umasa sa setup keys: ang pag-expire o pagtanggal ng key ay pumipigil sa mga bagong registration, pero hindi nito dini-disconnect ang mga machine na dati nang nakarehistro gamit ito. Para alisin ang access ng isang machine, alisin ang peer nito.

Kailangan mo pa ba ng hiwalay na identity provider?

Para sa maliit na installation, hindi. Hinahawakan ng built-in user store ang mga account na ginagawa mula sa dashboard, at sapat na iyon para sa iilang user.

Kailangan mo ng external identity provider kung mayroon ka na nito at ayaw mong magpanatili ng pangalawang listahan ng mga user. Tumatanggap ang NetBird ng anumang provider na gumagamit ng OIDC. Mag-register ng confidential OIDC client sa provider mo, pagkatapos ay idagdag ito sa NetBird dashboard gamit ang 4 na value: name, client ID, client secret, at issuer. Bibigyan ka ng NetBird ng redirect URL na ilalagay mo pabalik sa provider. May mga nakatalagang integration para sa Google, Microsoft Entra ID, Okta, Zitadel, Keycloak, Authentik, at Pocket ID. Para sa iba pang provider, gamitin ang generic OIDC. Kung nagpapatakbo ka na ng Authentik bilang self-hosted single sign-on, ito ang paraan para iisang listahan ng account lang ang mapanatili sa halip na dalawa.

Mananatiling available ang local login pagkatapos mong magdagdag ng provider, at lalabas ang bawat naka-configure na provider sa login page. Magpanatili ng isang local admin account na may matibay na password. Kung masira ang OIDC configuration, may paraan ka pa ring makapasok.

NetBird o Headscale: aling control plane ang dapat mong patakbuhin?

Pareho nilang inaalis ang parehong dependency: ang hosted control server na kung hindi ay kokontakin ng iyong mga client. Magkaiba ang disenyo ng mga project na ito.

Muling ipinapatupad ng Headscale ang Tailscale control server, at patuloy mong ginagamit ang mga opisyal na Tailscale client. Wala itong opisyal na web console. Pinamamahalaan mo ang mga user at pre-authentication key gamit ang headscale command laban sa isang config file. May mga community web interface, pero hindi bahagi ng project ang mga ito. Angkop ito sa mga gustong nasa mga file ang kanilang state at nasa version control ang kanilang mga pagbabago.

Ipinapadala ng NetBird ang buong product: sarili nitong client, sariling dashboard, embedded identity provider, at access policy na ine-edit sa browser. Mas marami itong component sa iyong VPS, pero mas kaunting trabaho itong ipasa sa isang kasamahang hindi naman gagamit ng terminal.

Patakbuhin ang Headscale kung gumagamit ka na ng mga Tailscale client o gusto mo ng pinakamaliit na posibleng control plane. Patakbuhin ang NetBird kung kailangang mamahala ng mga peer ang ilang tao at gusto mo ng console at SSO nang hindi bumubuo ng sarili mong solution.

Gaano kaliit ang VPS na kayang magpatakbo nito?

Ang nakadokumentong minimum ay 1 CPU at 2 GB memory. Ayon sa notes mismo ng NetBird, nasa halos 1 GB RAM na ang kasalukuyang minimum ngayong lokal na ang user management. Dati, kailangan ng 2 GB hanggang 4 GB nang kasama pa sa stack ang buong Zitadel deployment. Bumili ng 2 GB. Ang dagdag na headroom ang nagbibigay ng sapat na espasyo para makapag-pull ng mga bagong image ang upgrade habang nasa disk pa ang mga luma.

May tatlong bagay na ligtas alisin sa maliit na server. Huwag piliin ang NetBird Proxy service. Ginagamit ito para i-publish ang mga internal service sa public hostname at walang kinalaman sa pagkonekta ng mga peer. Huwag ding piliin ang CrowdSec. Mas mainam itong idagdag kalaunan sa exposed na server kaysa isama sa unang deployment. Panatilihin ang default na SQLite store sa netbird_data volume. Lumipat lamang sa PostgreSQL kapag hinati mo na ang deployment sa maraming machine o nakaranas ka na ng aktuwal na concurrency. Nakadokumento ang migration na ito bilang pagbabagong maaari mong gawin sa ibang pagkakataon.

Ang relay ang tanging component na hindi mo maaaring alisin. Kung nag-a-assign ang NAT ng magkaibang port para sa bawat destination, hindi kailanman makakapagtatag ng direct tunnel ang dalawang peer. Kaya relay lamang ang paraan para gumana ang mga ito. Kaunti lamang ang memory na matitipid sa pag-disable nito, ngunit masisira nito ang mga koneksyon sa paraang mahirap i-troubleshoot.

Kapag hindi na sapat ang isang server, relay ang unang dapat ilipat. Tumatakbo ang standalone relay gamit ang NB_LISTEN_ADDRESS, NB_EXPOSED_ADDRESS, NB_AUTH_SECRET at NB_ENABLE_STUN. Dapat magkapareho ang shared secret sa relay at sa main server. Kung hindi, mabibigo ang mga client na mag-authenticate dito.

Mga failure mode at mga makikita mo

Nagpapakita ang dashboard ng certificate warning. Hindi nakakuha ng certificate ang Traefik. Patakbuhin ang docker compose logs traefik | grep -i acme. May dalawang posibleng sanhi. Maaaring hindi pa nagre-resolve ang dig +short netbird.example.com sa VPS na ito, o sarado ang TCP 80 sa pagitan ng Let's Encrypt at ng container, karaniwan sa provider's network firewall at hindi sa ufw. Ayusin muna ang sanhi bago paulit-ulit na mag-retry, dahil may rate limit ang mga nabigong validation at mawawalan ka ng pagkakataong mag-retry sa loob ng isang oras.

Sinasabi ng client na nakakonekta ito pero walang laman ang dashboard. Nag-register ang client sa hosted service ng NetBird dahil nawawala ang --management-url. Patakbuhin ang netbird status --detail at basahin ang line na Management:, na nagsasabi kung saang server talaga ito kumokonekta. Kapag nakita ang Management: Connected to https://api.netbird.io:443, nangangahulugang cloud ang napuntahan nito. Patakbuhin ang sudo netbird down, pagkatapos ay muli ang sudo netbird up --management-url https://netbird.example.com.

Lahat ng peer ay nagpapakita ng Connection type: Relayed. Walang direktang tunnel na nabubuo, kaya dumadaan ang lahat ng traffic sa VPS at nadaragdagan ang latency dahil sa dagdag na hop. Suriin ang UDP 3478 sa firewall ng VPS at sa provider firewall, dahil ginagamit ang STUN upang malaman ng peer ang sarili nitong public address at port. Ipinapakita rin ng netbird status --detail ang Direct: false at ang mga ICE (interactive connectivity establishment) candidate type para sa bawat peer. Makikita rito kung gaano kalayo ang narating ng pagtatangka. Sa ilang network, relayed lang ang available na resulta at walang problema rito.

Sumasali ang isang peer pero wala itong maabot. Ang pagiging bahagi ng mesh ay hindi nangangahulugang maaaring mag-usap ang dalawang peer. Access policies ang nagtatakda nito, at walang maaabot ang isang group na walang naka-attach na policy. Suriin muna ang policy sa dashboard bago mag-debug ng routes at firewall.

Nag-uulat ang netbird status ng daemon problem. Hindi tumatakbo ang service. Gamitin ang sudo netbird service status at sudo netbird service start. Nasa /var/log/netbird/client.log ang mga client log. Para sa anumang problemang hindi mo matukoy, kinokolekta ng netbird debug bundle --anonymize --system-info ang logs, status, routes, DNS settings, at firewall state sa isang archive.

Mga backup at upgrade

Dalawang bagay ang bumubuo sa buong installation: ang directory na naglalaman ng docker-compose.yml at config.yaml, at ang Docker volume na naglalaman ng database at mga encryption key. I-back up ang mga ito nang magkasama. Nasa config.yaml ang key na nag-e-encrypt ng data sa store, kaya ang database copy na wala nito ay hindi makakapag-restore ng data na mababasa mo.

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 -d

Nilalagyan ng Compose ng project directory ang prefix ng mga pangalan ng volume, kaya ang volume na nakadokumento bilang netbird_data ay karaniwang lumalabas bilang netbird_netbird_data. Patakbuhin muna ang docker volume ls at gamitin ang pangalan na ipinapakita nito, o tahimik na gagawa ang docker run ng walang lamang volume at wala itong maa-archive. Itago ang mga archive sa labas ng VPS. Kung mayroon ka nang backup tool, ang restic o BorgBackup ang bahala sa offsite na bahagi.

Ang pag-upgrade sa server ay binubuo ng pull at recreate:

docker compose pull
docker compose up -d
docker compose ps

Bago ka umasa rito, patakbuhin ang docker compose config | grep image:. Dapat i-pin sa isang version ang anumang tag na may halagang latest, sa parehong dahilan kung bakit pina-pin mo ang install script: dapat alam mo kung ano ang tumatakbo, at dapat mayroon kang version na maaaring balikan kapag nagkaproblema ang upgrade. Nag-a-upgrade ang mga client gamit ang package manager na nag-install sa mga ito.

FAQ

Kailangan ko ba ng sarili kong identity provider para i-self-host ang NetBird?

Hindi. May built-in user store ang mga kasalukuyang release, kaya magagawa mo ang unang admin account sa browser sa https://netbird.example.com at makakapagdagdag ka ng mga user mula sa dashboard pagkatapos. Optional ang external OIDC provider at maaari itong idagdag sa ibang pagkakataon gamit ang apat na value: name, client ID, client secret, at issuer. Ang mga guide na nagsasabing kailangan mong mag-deploy ng Zitadel o Keycloak bago ang NetBird ay naglalarawan ng setup na hindi na kinakailangan, at kapag sinunod mo ang mga ito, madaragdagan ka ng isang buong service na kailangan mong patakbuhin.

Bakit Connection type: Relayed ang ipinapakita sa lahat ng peer ko?

Hindi nabubuo ang mga direct connection, kaya dumadaan ang traffic sa relay sa iyong VPS. Karaniwang sanhi nito ang pag-block sa UDP 3478, ang STUN port na ginagamit ng mga peer para tukuyin ang sarili nilang public address at port. Buksan ito sa firewall ng VPS at sa hiwalay na network firewall ng iyong provider, pagkatapos ay patakbuhin muli ang netbird status --detail at basahin ang linyang Direct:. Sa network na nag-a-assign ang NAT ng magkakaibang port sa bawat destination, relayed lamang ang posibleng resulta at walang maling configuration.

Nakakonekta ang client ko pero walang peer na ipinapakita ang dashboard. Ano ang nangyari?

Nag-register ang client sa hosted service ng NetBird sa halip na sa iyong server. Nangyayari ito kapag hindi nakalagay ang --management-url. Ipinapakita ng netbird status --detail kung saang server ito kumokonekta sa linyang Management:, kaya kinukumpirma ito ng value na gaya ng https://api.netbird.io:443. Patakbuhin ang sudo netbird down, pagkatapos ay sudo netbird up --management-url https://netbird.example.com, at lilitaw ang peer sa iyong dashboard.

Ano ang pinagkaiba ng self-hosted NetBird sa Headscale?

Pareho nilang pinapalitan ang hosted control server ng server na ikaw mismo ang nagpapatakbo. Control plane lamang ang Headscale: mina-manage mo ito gamit ang command na headscale at isang config file, walang official web console, at ginagamit nito ang official Tailscale clients. May sarili nitong client, admin dashboard, at identity provider integration ang NetBird sa iisang stack. Mas maliit patakbuhin ang Headscale at iniimbak nito ang state sa mga file. Mas madaling ipagamit ang NetBird sa mga taong hindi gagamit ng terminal.

Anong laki ng VPS ang kailangan ng self-hosted NetBird server?

Ang documented minimum ay 1 CPU at 2 GB memory, at 2 GB ang dapat mong kunin. Bumaba sa humigit-kumulang 1 GB ang practical floor sa mga recent release dahil naka-embed na ngayon ang identity provider sa halip na hiwalay na deployment. Huwag piliin ang optional proxy at CrowdSec services habang nag-i-install, at manatili sa default na SQLite store hanggang tunay mong kailanganin ang PostgreSQL.