SSD Nodes Learn 🎉 VPS $5.50/నెల నుండి
మార్గదర్శకాలు Matt Connorద్వారా Matt Connor · అప్‌డేట్ చేయబడింది 2026-08-13

VPSలో NetBird VPN సర్వర్‌ను ఎలా సెటప్ చేయాలి?

మీ స్వంత VPSలో NetBird VPNను హోస్ట్ చేసే విధానం ఇక్కడ ఉంది. DNS, TLS కాన్ఫిగరేషన్, సెటప్ కీలు మరియు Headscaleతో పోలికల గురించి పూర్తి వివరాలను ఈ గైడ్‌లో తెలుసుకోండి.

NetBird VPN సర్వర్‌ను self-host చేయడం వల్ల కలిగే ప్రయోజనాలు

NetBird VPN సర్వర్‌ను self-host చేయడం ద్వారా, కంట్రోల్ ప్లేన్‌ను మీరు సొంతంగా కలిగి ఉన్న VPSపై ఉంచుకోవచ్చు: ఇది peer జాబితాను కలిగి ఉండి, ఏ యంత్రం దేనిని చేరుకోవాలో నిర్ణయిస్తుంది మరియు NAT (network address translation) వెనుక ఉన్న రెండు peerలు ఒకదానికొకటి కనుగొనడంలో సహాయపడుతుంది. టన్నెల్స్ అన్నీ ఇప్పటికీ WireGuard ద్వారానే ఉంటాయి, ఇవి మీ యంత్రాల మధ్య నేరుగా ఎన్‌క్రిప్ట్ చేయబడతాయి. దీనివల్ల మీ పరికరాల జాబితా లేదా లాగిన్ ప్రక్రియ ఏ బయటి సంస్థ వద్ద ఉండదు.

మీకు ఇప్పటికే తెలిసిన రెండు విషయాల మధ్య NetBird ఉంటుంది. ఇది ఒక mesh overlay, కాబట్టి ప్రతిదీ ఒకే gateway ద్వారా పంపే బదులు peerలు ఒకదానికొకటి కనెక్ట్ అవుతాయి. ఇది ఎండ్-టు-ఎండ్ self-host చేయదగినది, ఇది Headscale, the self-hosted Tailscale control server తో సమానంగా ఉంటుంది. మీరు ఇప్పటివరకు కేవలం ఒకే gateway ఉన్న టన్నెల్‌ను మాత్రమే నడిపి ఉంటే, ముందుగా the difference between plain WireGuard and a mesh overlay చదవండి, ఎందుకంటే ఆ అవగాహన ఉంటేనే ఈ పేజీలోని మిగిలిన సమాచారం ఉపయోగకరంగా ఉంటుంది.

మీకు కావాల్సింది మీ ట్రాఫిక్ అంతా బయటకు వెళ్లే ఒకే ఒక సర్వర్ అయితే, ఈ mesh అనేది ఆ పనికి అవసరమైన దానికంటే ఎక్కువ సంక్లిష్టతను కలిగిస్తుంది. A plain WireGuard VPN on a single VPS లేదా a Tailscale exit node తక్కువ శ్రమతో ఆ పనిని పూర్తి చేస్తాయి.

ఈ stack వాస్తవానికి ఎలా పనిచేస్తుంది

దీని లేఅవుట్ ఇటీవల మారింది, పాత కథనాలన్నీ పాత పద్ధతిని వివరిస్తాయి. ఆగస్టు 2026 నాటికి, v0.76.2 release లో, quickstart script డిఫాల్ట్‌గా మూడు services తో కూడిన Compose file ను రూపొందిస్తుంది.

  • netbird-server మేనేజ్‌మెంట్ API, సిగ్నల్ సర్వీస్, ఎంబెడెడ్ STUN లిజనర్‌తో కూడిన రిలే మరియు ఎంబెడెడ్ ఐడెంటిటీ ప్రొవైడర్‌ను కలిగి ఉంటుంది. పాత release లలో ఇవి వేర్వేరు containers గా ఉండేవి మరియు ఐడెంటిటీ ప్రొవైడర్ కోసం మీరు ముందుగా విడిగా Zitadel ను build చేయాల్సి వచ్చేది.
  • dashboard అనేది అడ్మిన్ వెబ్ కన్సోల్.
  • traefik TLS (ట్రాన్స్‌పోర్ట్ లేయర్ సెక్యూరిటీ) ను terminate చేస్తుంది మరియు మొదటిసారి start చేసినప్పుడు Let's Encrypt నుండి certificate ను అభ్యర్థిస్తుంది.

మరో రెండు services కూడా ఉన్నాయి, కానీ మీరు ప్రాంప్ట్‌లో 'yes' అని ఎంచుకుంటే తప్ప అవి ఆన్ అవ్వవు. NetBird Proxy సర్వీస్ అంతర్గత సేవలను పబ్లిక్ హోస్ట్‌నేమ్‌లలో ప్రచురిస్తుంది. CrowdSec హానికరమైన ట్రాఫిక్‌ను ఫిల్టర్ చేస్తుంది. పని చేసే మెష్‌ను నిర్మించడానికి వీటిలో ఏదీ అవసరం లేదు, మరియు రెండూ చిన్న సర్వర్‌లలో మెమరీని వినియోగిస్తాయి.

మీరు ఒకవేళ ఒకే Docker కంటైనర్‌లో wg-easy నుండి వస్తున్నట్లయితే, ఇది భాగాల సంఖ్యలో పెద్ద మార్పుగా అనిపించవచ్చు. దీనివల్ల మీకు లభించే ప్రయోజనం ఏమిటంటే, యాక్సెస్ పాలసీలు, ప్రతి వినియోగదారునికి ప్రత్యేక ఖాతాలు, మరియు ఒక గేట్‌వే ద్వారా కాకుండా నేరుగా ఒకదానికొకటి కనెక్ట్ అయ్యే peers.

ప్రారంభించే ముందు మీకు కావలసినవి

ఒక పబ్లిక్ డొమైన్ పేరు తప్పనిసరి. డాష్‌బోర్డ్, API మరియు రిలే అన్నీ 443 పోర్ట్ ద్వారా HTTPS పై పనిచేస్తాయి. Traefik తన సర్టిఫికేట్‌ను Let's Encrypt నుండి HTTP ఛాలెంజ్ ద్వారా పొందుతుంది, దీని కోసం పబ్లిక్ ఇంటర్నెట్ నుండి ఈ VPS కి రిజాల్వ్ అయ్యే డొమైన్ పేరు అవసరం. కేవలం IP అడ్రస్‌తో ఈ ప్రక్రియ పనిచేయదు.

ఒక A రికార్డును సృష్టించండి, netbird.example.com అది మీ VPS యొక్క పబ్లిక్ IPv4 అడ్రస్‌ను సూచించాలి. ఏదైనా రన్ చేసే ముందు అది అప్‌డేట్ అయ్యే వరకు వేచి ఉండండి.

dig +short netbird.example.com

ఇది మీ సర్వర్ అడ్రస్‌ను చూపించాలి. DNS ప్రాపగేట్ అవ్వకముందే ఇన్‌స్టాలర్‌ను రన్ చేస్తే, మొదటి ప్రయత్నంలోనే సర్టిఫికేట్ అభ్యర్థన విఫలమవుతుంది. పదేపదే విఫలమైన ధృవీకరణల వల్ల Let's Encrypt రేట్ లిమిట్స్ వర్తిస్తాయి, దీనివల్ల మీరు మళ్ళీ ప్రయత్నించడానికి ఒక గంట వేచి ఉండాల్సి వస్తుంది.

ఇంటర్నెట్ నుండి మూడు పోర్టులు అందుబాటులో ఉండాలి: సర్టిఫికేట్ ఛాలెంజ్ మరియు HTTPS కి రీడైరెక్ట్ చేయడానికి TCP 80, డాష్‌బోర్డ్, API, సిగ్నల్ మరియు రిలే ట్రాఫిక్ కోసం TCP 443, మరియు STUN కోసం UDP 3478.

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

మీ ప్రొవైడర్ నెట్‌వర్క్ ఫైర్‌వాల్‌లో కూడా వీటిని ఓపెన్ చేయండి. చాలా VPS ప్యానెల్స్‌లో ఇది ప్రత్యేకమైన నియంత్రణగా ఉంటుంది. సర్వర్ లోపల ufw status సరిగ్గా ఉన్నప్పటికీ కనెక్షన్‌లు నిరాకరించబడటానికి ఇదే ప్రధాన కారణం.

STUN (session traversal utilities for NAT) ద్వారా ఒక పీర్ తన NAT కేటాయించిన పబ్లిక్ అడ్రస్ మరియు పోర్ట్‌ను తెలుసుకుంటుంది, తద్వారా రెండు పీర్లు నేరుగా టన్నెల్ ఏర్పాటు చేసుకోవడానికి ప్రయత్నించవచ్చు. UDP 3478 ని బ్లాక్ చేస్తే, పీర్లు TCP 443 ద్వారా రిలే మీద కనెక్ట్ అవుతాయి, కాబట్టి ఏదీ విఫలమైనట్లు అనిపించదు. కానీ ప్రతి పీర్ వద్ద Connection type: Relayed కనిపిస్తుంది, మరియు ట్రాఫిక్ అంతా పీర్-టు-పీర్ కాకుండా మీ VPS ద్వారానే వెళ్తుంది.

సాఫ్ట్‌వేర్ పరంగా మీకు Docker తో పాటు Compose v2 ప్లగిన్, మరియు jq, curl అవసరం. స్క్రిప్ట్ వీటిని తనిఖీ చేస్తుంది మరియు ఏదైనా లేకపోతే ఆగిపోతుంది. ఈ సర్వర్‌లో Docker కొత్తగా ఇన్‌స్టాల్ చేసినట్లయితే, ముందుగా VPS పై Docker Compose ని సిద్ధం చేసుకోండి.

మీరు బండిల్డ్ రివర్స్ ప్రాక్సీని ఉపయోగించకపోతే అవసరమైన పోర్టులు

Traefik లేకుండా రన్ చేయడం అంటే వ్యక్తిగత సేవలు నేరుగా ఎక్స్‌పోజ్ అవుతాయి, అప్పుడు పోర్టుల జాబితా పెరుగుతుంది:

  • TCP 80, HTTP రీడైరెక్ట్స్
  • TCP 443, HTTPS
  • TCP 33073, మేనేజ్‌మెంట్ gRPC
  • TCP 10000, సిగ్నల్ gRPC
  • TCP 33080, WebSocket లేదా QUIC ద్వారా రిలే
  • UDP 3478, STUN

సర్వర్‌లో ఇప్పటికే వేరే దేనికోసం TLS టెర్మినేషన్ జరుగుతుంటేనే దీనిని ఎంచుకోండి. లేకపోతే, బండిల్డ్ Traefik ని వాడటం వల్ల తక్కువ నియమాలు ఉంటాయి మరియు తప్పులు జరిగే అవకాశం తక్కువ.

Quickstart script ఉపయోగించి NetBird సర్వర్‌ను ఇన్‌స్టాల్ చేయడం

డాక్యుమెంట్ చేయబడిన వన్-లైనర్ కమాండ్, లేటెస్ట్ రిలీజ్‌ను నేరుగా షెల్‌లోకి పైప్ చేస్తుంది:

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

దానికి బదులుగా ఒక వెర్షన్‌ను పిన్ చేయండి. latest మారుతూ ఉంటుంది, కాబట్టి రెండు వారాల తేడాతో అదే కమాండ్ రన్ చేస్తే రెండు వేర్వేరు ఇన్‌స్టాలేషన్లు వస్తాయి. మీ కాన్ఫిగరేషన్‌ను ఏ వెర్షన్ రాసిందో డిస్క్‌లో ఎక్కడా రికార్డ్ అవ్వదు. కాబట్టి, ఒక ట్యాగ్ చేయబడిన రిలీజ్‌ను డౌన్‌లోడ్ చేసి, దాన్ని పరిశీలించి, ఆపై రన్ చేయండి.

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

ఈ స్క్రిప్ట్ మొదట డొమైన్ పేరును అడుగుతుంది:

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

ఆ తర్వాత 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):

[0] ఎంచుకోండి. ఆప్షన్ 2 నుండి 5 వరకు ఒక కాన్ఫిగరేషన్ స్నిప్పెట్‌ను రాసి, మిగిలిన పనిని మీకే వదిలేస్తాయి. ఇది ఇప్పటికే ప్రాక్సీ నడుస్తున్న సర్వర్‌కు సరైనది, కానీ కొత్త సర్వర్‌కు ఇది తప్పు. ఆప్షన్ 0 ఎంచుకుంటే, ఎక్స్‌పైరీ నోటీసుల కోసం Let's Encrypt ఈమెయిల్ అడ్రస్‌ను అడుగుతుంది.

మొదటిసారి ఇన్‌స్టాల్ చేసేటప్పుడు NetBird Proxy సర్వీస్‌కు 'no' అని చెప్పండి. దీనికి అదనంగా రెండు DNS రికార్డులు, proxy.netbird.example.com మరియు వైల్డ్‌కార్డ్ *.proxy.netbird.example.com అవసరం. సాధారణ మెష్ నెట్‌వర్క్‌కు ఇది ఏమీ చేయదు. CrowdSec కి కూడా 'no' అని చెప్పండి. వీటిని తర్వాత ఎప్పుడైనా జోడించుకోవచ్చు.

ఈ స్క్రిప్ట్ ప్రస్తుత డైరెక్టరీలో ఫైళ్లను రాస్తుంది: docker-compose.yml, 600 మోడ్‌తో config.yaml, dashboard.env, మరియు మీరు బండిల్ చేసిన Traefik ఎంచుకుంటే traefik-dynamic.yaml. ఆ డైరెక్టరీని మీరు భద్రపరచాల్సిన స్టేట్ (state) గా పరిగణించండి, ఎందుకంటే config.yaml లో స్టోర్‌లోని డేటాను ఎన్‌క్రిప్ట్ చేసే కీ ఉంటుంది. అది పోతే, మళ్ళీ ఇన్‌స్టాల్ చేసినా సమస్య పరిష్కారం కాదు.

docker compose ps
docker compose logs -f netbird-server

ప్రతి సర్వీస్ running ను చదవాలి, మరియు సర్వర్ లాగ్ లూప్‌లో రీస్టార్ట్ అవ్వకుండా స్థిరంగా ఉండాలి. సర్టిఫికేట్‌ను విడిగా పర్యవేక్షించండి:

docker compose logs traefik | grep -i acme

ACME (automatic certificate management environment) అనేది Traefik సర్టిఫికేట్ పొందడానికి ఉపయోగించే ప్రోటోకాల్. ఇందులో వచ్చే లోపాలు దాదాపు ఎప్పుడూ DNS సమస్యలు లేదా పోర్ట్ 80 క్లోజ్ అయి ఉండటం వల్లనే వస్తాయి.

మొదటి అడ్మిన్ ఖాతాను సృష్టించడం

https://netbird.example.comని తెరవండి. కొత్తగా ఇన్‌స్టాల్ చేసినప్పుడు, ఇది లాగిన్ ఫారమ్‌కు బదులుగా సెటప్ పేజీకి దారి తీస్తుంది. ఒక ఈమెయిల్ అడ్రస్, పేరు మరియు పాస్‌వర్డ్‌ను నమోదు చేసి, ఆపై Create Account పై క్లిక్ చేయండి. అదే మొదటి అడ్మిన్ ఖాతా అవుతుంది, ఆ తర్వాత పేజీ లాగిన్ ఫారమ్‌కు రీడైరెక్ట్ అవుతుంది.

ఈ ఖాతా NetBird యొక్క సొంత యూజర్ స్టోర్‌లో ఉంటుంది, ఇది netbird-server కంటైనర్‌లో పొందుపరచబడిన ఐడెంటిటీ ప్రొవైడర్ ద్వారా పనిచేస్తుంది. దీనికి బయటి సేవలేవీ అవసరం లేదు. ఒక సంవత్సరం క్రితం ఉన్న self-hosted NetBird తో పోలిస్తే ఇది అతిపెద్ద మార్పు; అప్పట్లో ఇన్‌స్టాలేషన్ పనిచేయాలంటే ముందుగా Zitadel లేదా Keycloak ను సెటప్ చేసి, ఏదైనా ప్రారంభించే ముందు నాలుగు OIDC (OpenID Connect) విలువలను setup.env లో కాపీ చేయాల్సి ఉండేది.

ఒకవేళ మీకు సెటప్ పేజీకి బదులుగా బ్రౌజర్ సర్టిఫికేట్ హెచ్చరిక కనిపిస్తే, సర్టిఫికేట్ జారీ కాలేదని అర్థం. ముందుగా దానిని సరిచేయండి, ఎందుకంటే డాష్‌బోర్డ్ అదే హోస్ట్‌నేమ్ ద్వారా API తో కమ్యూనికేట్ అవుతుంది. తప్పుడు సర్టిఫికేట్ ఉన్నప్పుడు అది గందరగోళంగా విఫలమవుతుంది.

మీ మొదటి పీర్‌ను జాయిన్ చేయండి

మీరు మెష్‌లో చేర్చాలనుకుంటున్న VPS తో సహా, ఏదైనా Linux మెషీన్‌లో క్లయింట్‌ను ఇన్‌స్టాల్ చేయండి:

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

Debian మరియు Ubuntu లలో, ఆ స్క్రిప్ట్ NetBird యొక్క ప్యాకేజీ రిపోజిటరీని కాన్ఫిగర్ చేసి, ఆపై apt ద్వారా క్లయింట్‌ను ఇన్‌స్టాల్ చేస్తుంది, కాబట్టి ప్యాకేజీ మేనేజర్ దానిని పూర్తిగా నియంత్రిస్తుంది. ఒక స్క్రిప్ట్‌ను నేరుగా షెల్‌లోకి పైప్ చేయడం మీకు ఇష్టం లేకపోతే, ముందుగా దానిని curl -fsSL -o install.sh https://pkgs.netbird.io/install.sh తో సేవ్ చేసి, రన్ చేయడానికి ముందు sh install.sh తో చదవండి. ఏది ఏమైనా, ఏమి ఇన్‌స్టాల్ అయ్యిందో నిర్ధారించుకోండి:

apt-cache policy netbird

netbird అనేది కమాండ్ లైన్ క్లయింట్ మరియు డెమోన్. netbird-ui అనేది డెస్క్‌టాప్ ట్రే యాప్, హెడ్‌లెస్ సర్వర్‌కు దీని అవసరం ఉండదు.

ఇప్పుడు క్లయింట్‌ను మీ సర్వర్‌కు పాయింట్ చేయండి:

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

--management-url ని వదిలేస్తే, క్లయింట్ NetBird యొక్క హోస్టెడ్ సర్వీస్‌తో రిజిస్టర్ అవుతుంది, ఎందుకంటే అది కంపైల్ చేయబడిన డిఫాల్ట్ సెట్టింగ్. కమాండ్ విజయవంతమవుతుంది, మెషీన్ ఒక అడ్రస్‌ను పొందుతుంది, కానీ మీ సెల్ఫ్-హోస్టెడ్ డాష్‌బోర్డ్ ఖాళీగానే ఉంటుంది. ఇది దాదాపు అందరినీ ఒక్కసారైనా ఇబ్బంది పెడుతుంది.

ఈ కమాండ్ లాగిన్ పూర్తి చేయడానికి బ్రౌజర్‌లో ఓపెన్ చేయాల్సిన ఒక URLను ప్రింట్ చేస్తుంది. ఆ తర్వాత:

netbird status
ip addr show wt0

netbird status నుండి నాలుగు లైన్లను చదవండి: Management: Connected, Signal: Connected, అందుబాటులో ఉన్న ప్రతి రిలేను రిపోర్ట్ చేసే ఒక Relays: లైన్, మరియు ఓవర్‌లే పరిధిలో ఉన్న ఒక NetBird IP:. wt0 అనేది NetBird సృష్టించే WireGuard ఇంటర్‌ఫేస్, ఇది అదే అడ్రస్‌ను కలిగి ఉండాలి.

రెండవ మెషీన్‌ను setup key ఉపయోగించి అటెండెడ్ లేకుండా జాయిన్ చేయడం

బ్రౌజర్ లేని మరియు ఎవరూ పర్యవేక్షించని మెషీన్ల కోసం బ్రౌజర్ లాగిన్ పని చేయదు. Setup key అనేది ఒక ప్రీ-అథెంటికేషన్ టోకెన్, ఇది ఇంటరాక్టివ్ దశ లేకుండానే మెషీన్‌ను రిజిస్టర్ చేస్తుంది. దీనిని డాష్‌బోర్డ్‌లోని Setup Keys విభాగంలో సృష్టించవచ్చు.

ఇందులో రెండు రకాలు ఉన్నాయి. ఒక 'one-off' కీ సరిగ్గా ఒక మెషీన్‌ను మాత్రమే అథెంటికేట్ చేస్తుంది, ఆ తర్వాత అది వినియోగించబడుతుంది. 'Reusable' కీ అనేక మెషీన్లను రిజిస్టర్ చేస్తుంది, దీనికి ఎన్ని మెషీన్లను రిజిస్టర్ చేయవచ్చో పరిమితిని కూడా విధించవచ్చు. రెండింటికీ గడువు తేదీ (expiry) ఉంటుంది మరియు రెండూ కొత్త పీర్‌ను ఒక గ్రూప్‌కు ఆటో-అసైన్ చేయగలవు, తద్వారా మెషీన్ కనిపించిన వెంటనే ఆ గ్రూప్‌కు సంబంధించిన యాక్సెస్ నియమాలు వర్తిస్తాయి.

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

--hostname డాష్‌బోర్డ్‌లో కనిపించే పేరును సెట్ చేస్తుంది. ఇది లేకపోతే, మెషీన్ తనను తాను ఏమని పిలుచుకుంటుందో అదే పేరును పీర్ తీసుకుంటుంది, మరియు అన్నీ ubuntu అని పేరు ఉన్న అనేక ఎంట్రీలు ఉంటే ఎవరికీ ఉపయోగం ఉండదు.

కంటైనర్లు మరియు తక్కువ కాలం ఉండే బిల్డ్ ఏజెంట్ల కోసం, కీని సృష్టించేటప్పుడు దానిని ephemeral గా మార్క్ చేయండి. Ephemeral కీతో రిజిస్టర్ అయిన పీర్లు 10 నిమిషాల కంటే ఎక్కువ సమయం ఆఫ్‌లైన్‌లో ఉంటే స్వయంచాలకంగా తొలగించబడతాయి, ఇది పీర్ జాబితాలో పనికిరాని ఎంట్రీలు లేకుండా చేస్తుంది.

Setup keys గురించి ప్లాన్ చేసే ముందు అర్థం చేసుకోవాల్సిన ఒక పరిమితి: కీ గడువు ముగిసినా లేదా తొలగించినా కొత్త రిజిస్ట్రేషన్లు ఆగిపోతాయి, కానీ ఇప్పటికే ఆ కీతో రిజిస్టర్ అయిన మెషీన్లు డిస్‌కనెక్ట్ కావు. ఒక మెషీన్ యొక్క యాక్సెస్‌ను తొలగించాలంటే ఆ పీర్‌ను తొలగించాలి.

మీకు ఇప్పటికీ ప్రత్యేక identity provider అవసరమా?

చిన్న స్థాయి ఇన్‌స్టాలేషన్ అయితే, అవసరం లేదు. డ్యాష్‌బోర్డ్ నుండి సృష్టించిన ఖాతాలను అంతర్నిర్మిత user store నిర్వహిస్తుంది, ఇది కొద్దిమంది వినియోగదారులకు సరిపోతుంది.

మీకు ఇప్పటికే ఒక identity provider ఉండి, రెండో వినియోగదారుల జాబితాను నిర్వహించకూడదనుకున్నప్పుడు మీకు బాహ్య identity provider అవసరం. OIDC ప్రోటోకాల్‌ను అనుసరించే ఏదైనా provider ను NetBird అంగీకరిస్తుంది. మీ provider లో ఒక confidential OIDC client ను నమోదు చేయండి, ఆపై NetBird డ్యాష్‌బోర్డ్‌లో నాలుగు విలువలతో (name, client ID, client secret మరియు issuer) దాన్ని జోడించండి. NetBird మీకు ఒక redirect URL ఇస్తుంది, దాన్ని మీరు తిరిగి మీ provider లో పేస్ట్ చేయాలి. Google, Microsoft Entra ID, Okta, Zitadel, Keycloak, Authentik మరియు Pocket ID ల కోసం ప్రత్యేక integrations అందుబాటులో ఉన్నాయి, మిగిలిన వాటిని generic OIDC గా జోడించవచ్చు. మీరు ఇప్పటికే Authentik ను మీ self-hosted single sign-on గా వాడుతుంటే, రెండు వేర్వేరు ఖాతాల జాబితాలకు బదులుగా ఒకే జాబితాను నిర్వహించడానికి ఇదే సరైన మార్గం.

ఒక provider ను జోడించిన తర్వాత కూడా local login అందుబాటులో ఉంటుంది, మరియు కాన్ఫిగర్ చేసిన ప్రతి provider లాగిన్ పేజీలో కనిపిస్తుంది. ఒక local admin ఖాతాను బలమైన పాస్‌వర్డ్‌తో ఉంచుకోండి. దీనివల్ల OIDC కాన్ఫిగరేషన్ విఫలమైనా, మీరు సిస్టమ్‌లోకి ప్రవేశించడానికి ఒక మార్గం ఉంటుంది.

NetBird లేదా Headscale: మీరు ఏ కంట్రోల్ ప్లేన్‌ను రన్ చేయాలి?

రెండూ ఒకే రకమైన డిపెండెన్సీని తొలగిస్తాయి, అంటే మీ క్లయింట్లు సాధారణంగా కనెక్ట్ అయ్యే హోస్టెడ్ కంట్రోల్ సర్వర్ అవసరం ఉండదు. ఇవి ఒకే రకమైన ప్రాజెక్టులు కావు.

Headscale అనేది Tailscale కంట్రోల్ సర్వర్‌ను తిరిగి అమలు చేస్తుంది, మీరు అధికారిక Tailscale క్లయింట్లను ఉపయోగించడం కొనసాగిస్తారు. ఇందులో అధికారిక వెబ్ కన్సోల్ ఉండదు. మీరు వినియోగదారులను మరియు ప్రీ-అథెంటికేషన్ కీలను కాన్ఫిగరేషన్ ఫైల్‌కు వ్యతిరేకంగా headscale కమాండ్ ద్వారా నిర్వహిస్తారు. కమ్యూనిటీ వెబ్ ఇంటర్‌ఫేస్‌లు అందుబాటులో ఉన్నాయి, కానీ అవి ఈ ప్రాజెక్ట్‌లో భాగం కావు. తమ స్టేట్ ఫైళ్లలో ఉండాలని మరియు మార్పులు వెర్షన్ కంట్రోల్‌లో ఉండాలని కోరుకునే వారికి ఇది సరిపోతుంది.

NetBird మొత్తం ఉత్పత్తిని అందిస్తుంది: దాని స్వంత క్లయింట్, డాష్‌బోర్డ్, ఎంబెడెడ్ ఐడెంటిటీ ప్రొవైడర్ మరియు బ్రౌజర్‌లో ఎడిట్ చేయగల యాక్సెస్ పాలసీలు. మీ VPSలో ఇది ఎక్కువ భాగాలను కలిగి ఉంటుంది, కానీ టెర్మినల్ తెరవని సహోద్యోగికి దీనిని అప్పగించడం చాలా సులభం.

మీరు ఇప్పటికే Tailscale క్లయింట్లను ఉపయోగిస్తుంటే లేదా సాధ్యమైనంత చిన్న కంట్రోల్ ప్లేన్ కావాలనుకుంటే Headscale రన్ చేయండి. ఒకవేళ పలువురు వ్యక్తులు పియర్లను నిర్వహించాల్సి ఉండి, మీరు కన్సోల్ మరియు SSOలను విడివిడిగా అమర్చకుండా ఒకే చోట పొందాలనుకుంటే NetBird రన్ చేయండి.

దీనిని నడపడానికి ఎంత చిన్న VPS సరిపోతుంది?

డాక్యుమెంట్ చేయబడిన కనిష్ట అవసరం 1 CPU మరియు 2 GB మెమరీ. NetBird యొక్క సొంత గమనికల ప్రకారం, ప్రస్తుతం యూజర్ మేనేజ్‌మెంట్ లోకల్‌గా ఉండటంతో, 1 GB RAM సరిపోతుంది. పాత లేఅవుట్‌లో పూర్తి Zitadel డిప్లాయ్‌మెంట్ అవసరమైనప్పుడు 2 GB నుండి 4 GB వరకు అవసరమయ్యేది. 2 GB కొనుగోలు చేయడం మంచిది. అదనపు మెమరీ ఉండటం వల్ల, పాత ఇమేజ్‌లు డిస్క్‌లో ఉన్నప్పుడే కొత్త ఇమేజ్‌లను డౌన్‌లోడ్ చేసి అప్‌గ్రేడ్ చేయడానికి వీలవుతుంది.

చిన్న సర్వర్‌లో మూడు విషయాలను వదిలేయడం సురక్షితం. NetBird Proxy సర్వీస్‌ను నిరాకరించండి; ఇది అంతర్గత సేవలను పబ్లిక్ హోస్ట్‌నేమ్‌లలో ప్రచురించడానికి మాత్రమే ఉంటుంది, పీర్ల కనెక్టివిటీతో దీనికి సంబంధం లేదు. CrowdSec ను నిరాకరించండి; దీనిని మొదటి రోజే కాకుండా, సర్వర్ ఎక్స్‌పోజ్ అయిన తర్వాత ఎప్పుడైనా జోడించుకోవచ్చు. SQLite స్టోర్‌ను netbird_data వాల్యూమ్‌లోనే ఉంచండి. మీరు డిప్లాయ్‌మెంట్‌ను వేర్వేరు మెషీన్లకు విభజించినప్పుడు లేదా ఎక్కువ కన్కరెన్సీ (concurrency) సమస్యలు ఎదురైనప్పుడు మాత్రమే PostgreSQL కు మారండి; ఇది తర్వాత ఎప్పుడైనా చేయగలిగే మైగ్రేషన్ అని డాక్యుమెంట్ చేయబడింది.

Relay అనేది మీరు వదిలివేయలేని ఏకైక భాగం. రెండు పీర్లు వేర్వేరు గమ్యస్థానాలకు వేర్వేరు పోర్ట్‌లను కేటాయించే NAT వెనుక ఉన్నప్పుడు, అవి నేరుగా టన్నెల్‌ను ఏర్పాటు చేసుకోలేవు. కాబట్టి, అవి పనిచేయాలంటే Relay మాత్రమే ఏకైక మార్గం. దీనిని డిసేబుల్ చేయడం వల్ల మెమరీ ఆదా అయ్యేది చాలా తక్కువ, కానీ కనెక్షన్లు విఫలమైతే వాటిని గుర్తించడం కష్టమవుతుంది.

ఒక సర్వర్ సరిపోనప్పుడు, Relay ను వేరే సర్వర్‌కు తరలించడం మొదటి పని. ఒక స్వతంత్ర Relay, NB_LISTEN_ADDRESS, NB_EXPOSED_ADDRESS, NB_AUTH_SECRET మరియు NB_ENABLE_STUN తో నడుస్తుంది. Relay మరియు మెయిన్ సర్వర్‌లలో షేర్డ్ సీక్రెట్ (shared secret) ఒకేలా ఉండాలి, లేకపోతే క్లయింట్లు అథెంటికేట్ కాలేవు.

వైఫల్య రీతులు మరియు మీరు గమనించే అంశాలు

Dashboard సర్టిఫికేట్ హెచ్చరికను చూపుతోంది. Traefik సర్టిఫికేట్‌ను పొందలేకపోయింది. docker compose logs traefik | grep -i acme కమాండ్‌ను రన్ చేయండి. దీనికి రెండు కారణాలు ఉండవచ్చు. ఒకటి, dig +short netbird.example.com ఇంకా ఈ VPSని పాయింట్ చేయడం లేదు, లేదా Let's Encrypt మరియు కంటైనర్ మధ్య TCP 80 పోర్ట్ ఎక్కడైనా మూసివేయబడి ఉండవచ్చు; ఇది సాధారణంగా ufw లో కాకుండా ప్రొవైడర్ నెట్‌వర్క్ ఫైర్‌వాల్‌లో జరుగుతుంది. మళ్ళీ మళ్ళీ ప్రయత్నించే ముందు ఈ కారణాన్ని సరిచేయండి, ఎందుకంటే విఫలమైన ధృవీకరణలు (failed validations) రేట్ లిమిట్‌కు లోబడి ఉంటాయి, దీనివల్ల మీరు ఒక గంట పాటు ప్రయత్నించకుండా లాక్ చేయబడవచ్చు.

క్లయింట్ కనెక్ట్ అయిందని చెబుతోంది కానీ dashboard ఖాళీగా ఉంది. --management-url మిస్ అవ్వడం వల్ల క్లయింట్ NetBird యొక్క హోస్ట్ చేసిన సేవతో రిజిస్టర్ అయింది. netbird status --detail కమాండ్‌ను రన్ చేసి, Management: లైన్‌ను చదవండి; ఇది ప్రస్తుతం కనెక్ట్ అయి ఉన్న సర్వర్ పేరును చూపుతుంది. Management: Connected to https://api.netbird.io:443 కనిపిస్తే, అది క్లౌడ్‌కు వెళ్ళిందని అర్థం. sudo netbird down రన్ చేసి, ఆపై మళ్ళీ sudo netbird up --management-url https://netbird.example.com రన్ చేయండి.

ప్రతి peer Connection type: Relayed అని చూపుతోంది. నేరుగా టన్నెల్స్ ఏర్పడటం లేదు, కాబట్టి ట్రాఫిక్ అంతా మీ VPS ద్వారా వెళ్తూ latencyని పెంచుతోంది. VPS ఫైర్‌వాల్ మరియు ప్రొవైడర్ ఫైర్‌వాల్‌లో UDP 3478 పోర్ట్‌ను తనిఖీ చేయండి, ఎందుకంటే STUN ద్వారానే ఒక peer తన స్వంత పబ్లిక్ అడ్రస్ మరియు పోర్ట్‌ను తెలుసుకోగలదు. netbird status --detail కమాండ్ Direct: false ని మరియు ప్రతి peer కోసం ICE (interactive connectivity establishment) కాండిడేట్ రకాలను ప్రింట్ చేస్తుంది, ఇది ప్రయత్నం ఎంతవరకు జరిగిందో చూపుతుంది. కొన్ని నెట్‌వర్క్‌లలో relayed మాత్రమే సాధ్యమవుతుంది, అప్పుడు ఏ సమస్య లేదని అర్థం.

ఒక peer జాయిన్ అయింది కానీ దేనినీ చేరుకోలేకపోతోంది. మెష్‌లో ఉన్నంత మాత్రాన రెండు peers మాట్లాడుకోగలవని కాదు. Access policies దీనిని నిర్ణయిస్తాయి, కాబట్టి ఎటువంటి పాలసీ లేని గ్రూప్ దేనినీ చేరుకోలేదు. మీరు రూట్స్ మరియు ఫైర్‌వాల్స్‌ను డీబగ్ చేయడం ప్రారంభించే ముందు dashboardలో పాలసీని తనిఖీ చేయండి.

netbird status డెమన్ సమస్యను నివేదిస్తోంది. సర్వీస్ రన్ అవ్వడం లేదు. sudo netbird service status మరియు sudo netbird service start ఉపయోగించండి. క్లయింట్ లాగ్స్ /var/log/netbird/client.log వద్ద ఉంటాయి. మీరు దేనినైనా గుర్తించలేకపోతే, netbird debug bundle --anonymize --system-info కమాండ్ లాగ్స్, స్టేటస్, రూట్స్, DNS సెట్టింగ్స్ మరియు ఫైర్‌వాల్ స్థితిని ఒకే ఆర్కైవ్‌లోకి సేకరిస్తుంది.

బ్యాకప్‌లు మరియు అప్‌గ్రేడ్‌లు

మొత్తం ఇన్‌స్టాలేషన్‌ను రెండు అంశాలు కలిగి ఉంటాయి: docker-compose.yml మరియు config.yaml ఉన్న డైరెక్టరీ, మరియు డేటాబేస్ మరియు ఎన్‌క్రిప్షన్ కీలను కలిగి ఉన్న Docker వాల్యూమ్. వీటిని కలిపి బ్యాకప్ తీసుకోండి. config.yaml స్టోర్‌లోని డేటాను ఎన్‌క్రిప్ట్ చేసే కీని కలిగి ఉంటుంది, కాబట్టి అది లేకుండా డేటాబేస్ కాపీని తీసుకుంటే, మీరు ఏ డేటాను చదవలేరు.

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

Compose వాల్యూమ్ పేర్లకు ప్రాజెక్ట్ డైరెక్టరీని ప్రిఫిక్స్‌గా చేరుస్తుంది, కాబట్టి netbird_data గా డాక్యుమెంట్ చేయబడిన వాల్యూమ్ సాధారణంగా netbird_netbird_data గా కనిపిస్తుంది. ముందుగా docker volume ls ని రన్ చేసి, అది చూపించే పేరును ఉపయోగించండి, లేకపోతే పైన పేర్కొన్న docker run విఫలమవుతుంది మరియు ఖాళీ వాల్యూమ్‌ను సృష్టించి ఏమీ ఆర్కైవ్ చేయదు. ఆర్కైవ్‌లను VPS వెలుపల ఉంచండి. మీకు ఇప్పటికే బ్యాకప్ టూల్ ఉంటే, restic లేదా BorgBackup ఆఫ్‌సైట్ బ్యాకప్ ప్రక్రియను నిర్వహిస్తాయి.

సర్వర్‌ను అప్‌గ్రేడ్ చేయడం అంటే pull మరియు recreate చేయడం:

docker compose pull
docker compose up -d
docker compose ps

దానిపై ఆధారపడే ముందు, docker compose config | grep image: ని రన్ చేయండి. latest అని ఉన్న ఏదైనా ట్యాగ్‌ను ఒక నిర్దిష్ట వెర్షన్‌కు పిన్ చేయాలి, ఎందుకంటే మీరు ఇన్‌స్టాల్ స్క్రిప్ట్‌ను ఎందుకు పిన్ చేశారో అదే కారణం: ఏమి రన్ అవుతుందో మీకు తెలియాలి, మరియు అప్‌గ్రేడ్ సరిగ్గా జరగనప్పుడు తిరిగి వెళ్లడానికి ఒక వెర్షన్ సిద్ధంగా ఉండాలి. క్లయింట్లు వాటిని ఇన్‌స్టాల్ చేసిన ప్యాకేజీ మేనేజర్ ద్వారా అప్‌గ్రేడ్ అవుతాయి.

FAQ

NetBird ను self-host చేయడానికి నాకు సొంత identity provider అవసరమా?

అవసరం లేదు. ప్రస్తుత releases లో అంతర్నిర్మిత (built-in) user store ఉంది. కాబట్టి మీరు బ్రౌజర్‌లో https://netbird.example.com వద్ద మొదటి admin ఖాతాను సృష్టించి, ఆ తర్వాత dashboard నుండి వినియోగదారులను జోడించవచ్చు. బాహ్య OIDC provider అనేది ఐచ్ఛికం మరియు దీన్ని తర్వాత నాలుగు విలువలతో (name, client ID, client secret, issuer) జోడించవచ్చు. NetBird కు ముందు Zitadel లేదా Keycloak ను deploy చేయమని చెప్పే గైడ్‌లు ఇప్పుడు అవసరం లేని పద్ధతులను వివరిస్తున్నాయి; వాటిని అనుసరిస్తే మీరు అదనంగా మరొక సేవను నిర్వహించాల్సి వస్తుంది.

నా peers అన్నీ ఎందుకు Connection type: Relayed అని చూపిస్తున్నాయి?

నేరుగా కనెక్షన్‌లు ఏర్పడటం లేదు, కాబట్టి ట్రాఫిక్ మీ VPS లోని relay ద్వారా వెళ్తోంది. దీనికి సాధారణ కారణం UDP 3478 పోర్ట్ బ్లాక్ చేయబడటం. peers తమ సొంత public address మరియు port ను కనుగొనడానికి ఉపయోగించే STUN పోర్ట్ ఇదే. దీన్ని మీ VPS firewall లో మరియు మీ provider యొక్క నెట్‌వర్క్ firewall లో open చేయండి. ఆ తర్వాత netbird status --detail ను మళ్ళీ రన్ చేసి Direct: లైన్‌ను గమనించండి. ఒకవేళ మీ నెట్‌వర్క్ NAT ప్రతి destination కు వేర్వేరు port ను కేటాయిస్తుంటే, relayed కనెక్షన్ మాత్రమే సాధ్యమవుతుంది మరియు అక్కడ ఏదీ తప్పుగా కాన్ఫిగర్ కాలేదని అర్థం.

నా client కనెక్ట్ అయింది, కానీ dashboard లో peers కనిపించడం లేదు. ఏమి జరిగింది?

--management-url ను వదిలివేయడం వల్ల, client మీ సర్వర్‌కు బదులుగా NetBird యొక్క hosted సేవతో రిజిస్టర్ అయింది. netbird status --detail కమాండ్ అది ఏ సర్వర్‌తో మాట్లాడుతుందో Management: లైన్‌లో చూపిస్తుంది, కాబట్టి https://api.netbird.io:443 వంటి విలువ ఉంటే అది నిర్ధారణ అవుతుంది. sudo netbird down రన్ చేసి, ఆపై sudo netbird up --management-url https://netbird.example.com రన్ చేయండి; అప్పుడు peer మీ dashboard లో కనిపిస్తుంది.

Self-hosted NetBird, Headscale కంటే ఎలా భిన్నమైనది?

రెండూ కూడా hosted control server స్థానంలో మీరు సొంతంగా నిర్వహించే సర్వర్‌ను ఉపయోగిస్తాయి. Headscale కేవలం control plane మాత్రమే: మీరు దీన్ని headscale కమాండ్ మరియు ఒక config ఫైల్ ద్వారా నిర్వహిస్తారు, దీనికి అధికారిక web console లేదు మరియు ఇది అధికారిక Tailscale clients తో పనిచేస్తుంది. NetBird తన సొంత client, admin dashboard మరియు identity provider integration ను ఒకే stack లో అందిస్తుంది. Headscale తక్కువ వనరులతో నడుస్తుంది మరియు దాని స్థితిని ఫైల్స్‌లో ఉంచుతుంది. టెర్మినల్ ఉపయోగించని వ్యక్తులకు NetBird ను అందించడం సులభం.

Self-hosted NetBird సర్వర్‌కు ఎంత పరిమాణం గల VPS అవసరం?

డాక్యుమెంట్ చేయబడిన కనీస అవసరం 1 CPU మరియు 2 GB మెమరీ, కాబట్టి 2 GB మెమరీ ఉన్న సర్వర్‌ను ఎంచుకోండి. ఇటీవలి releases లో identity provider విడిగా కాకుండా అంతర్నిర్మితంగా ఉండటం వల్ల, ఆచరణాత్మక అవసరం సుమారు 1 GB కి తగ్గింది. ఇన్‌స్టాలేషన్ సమయంలో ఐచ్ఛిక proxy మరియు CrowdSec సేవలను నిలిపివేయండి, మరియు మీకు నిజంగా PostgreSQL అవసరమయ్యే వరకు డిఫాల్ట్ SQLite store నే ఉపయోగించండి.