VPSలో NetBird VPN సర్వర్ను సెటప్ చేయడం ఎలా?
మీ స్వంత VPSలో NetBird VPNని హోస్ట్ చేసే విధానం ఇక్కడ ఉంది. DNS, TLS కాన్ఫిగరేషన్, సెటప్ కీలు మరియు Headscaleతో పోలికల గురించి పూర్తి వివరాలను ఈ గైడ్లో తెలుసుకోండి.
NetBird VPN సర్వర్ను self-host చేయడం వల్ల కలిగే ప్రయోజనాలు
NetBird VPN సర్వర్ను self-host చేయడం ద్వారా, కంట్రోల్ ప్లేన్ను మీ సొంత VPSపై ఉంచుకోవచ్చు: ఇది పీర్ల జాబితాను కలిగి ఉండి, ఏ యంత్రం దేనిని చేరుకోవాలో నిర్ణయిస్తుంది, మరియు NAT (network address translation) వెనుక ఉన్న రెండు పీర్లు ఒకదానికొకటి కనుగొనడంలో సహాయపడుతుంది. టన్నెల్స్ అన్నీ ఇప్పటికీ WireGuard ద్వారానే ఉంటాయి, ఇవి మీ యంత్రాల మధ్య నేరుగా ఎన్క్రిప్ట్ చేయబడతాయి. దీనివల్ల మారేది ఏమిటంటే, మీ పరికరాల జాబితాను లేదా మీ లాగిన్ ప్రక్రియను ఏ బయటి సంస్థా కలిగి ఉండదు. దీనివల్ల మీకు ఏమి లభిస్తుందో స్పష్టంగా తెలుసుకోండి, ఎందుకంటే హోస్ట్ చేయబడిన కంట్రోల్ ప్లేన్ కూడా మీ ట్రాఫిక్ను ఎన్క్రిప్ట్ చేసే కీలను కలిగి ఉండదు, మరియు ఒక కోఆర్డినేషన్ సర్వర్ రాజీ పడితే అది నిజంగా ఏమి చేయగలదు అనే అంశంపై ఉన్న పరిమితులు చాలామంది ఊహించిన దానికంటే తక్కువగానే ఉంటాయి.
NetBird మీకు ఇప్పటికే తెలిసిన రెండు విషయాల మధ్య ఉంటుంది. ఇది ఒక మెష్ ఓవర్లే, కాబట్టి పీర్లు ప్రతిదీ ఒకే గేట్వే ద్వారా పంపే బదులు ఒకదానికొకటి నేరుగా కనెక్ట్ అవుతాయి. ఇది ఎండ్-టు-ఎండ్ self-host చేయదగినది, ఇది Headscale, self-hosted Tailscale కంట్రోల్ సర్వర్ తో పోటీపడుతుంది. మీరు ఇప్పటివరకు కేవలం సింగిల్-గేట్వే టన్నెల్ను మాత్రమే నడిపినట్లయితే, ముందుగా సాధారణ WireGuard మరియు మెష్ ఓవర్లే మధ్య తేడాలను చదవండి, ఎందుకంటే ఆ అవగాహన ఉంటేనే ఈ పేజీలోని మిగిలిన సమాచారం మీకు ఉపయోగకరంగా ఉంటుంది.
మీకు నిజంగా కావాల్సింది మీ ట్రాఫిక్ అంతా బయటకు వెళ్లే ఒకే ఒక సర్వర్ అయితే, మెష్ అనేది ఆ పనికి అవసరమైన దానికంటే ఎక్కువ సంక్లిష్టమైనది. ఒక VPSపై సాధారణ WireGuard VPN లేదా Tailscale exit node తక్కువ శ్రమతో ఆ పనిని పూర్తి చేస్తాయి. ఒకవేళ మీ లక్ష్యం యంత్రాలను ఒకదానికొకటి అనుసంధానించడం కాకుండా, ఒక ప్రైవేట్ నెట్వర్క్ను చేరుకోవడం అయితే, VPSపై ఉన్న Tailscale subnet router ఆ నెట్వర్క్ పరిధిని మీకు ఇప్పటికే ఉన్న tailnet కి తెలియజేస్తుంది, దీనికి కింద పేర్కొన్న స్టాక్ ఏదీ అవసరం లేదు.
స్టాక్ వాస్తవానికి ఏమి రన్ చేస్తుంది
లేఅవుట్ ఇటీవల మారింది, పాత కథనాలు చాలా వరకు పాత పద్ధతినే వివరిస్తాయి. ఆగస్టు 2026 నాటికి, v0.76.2 రిలీజ్లో, క్విక్స్టార్ట్ స్క్రిప్ట్ డిఫాల్ట్గా మూడు సర్వీసులతో కూడిన Compose ఫైల్ను రూపొందిస్తుంది.
netbird-serverమేనేజ్మెంట్ API, సిగ్నల్ సర్వీస్, ఎంబెడెడ్ STUN లిజనర్తో కూడిన రిలే మరియు ఎంబెడెడ్ ఐడెంటిటీ ప్రొవైడర్ను కలిగి ఉంటుంది. పాత రిలీజ్లలో ఇవి విడివిడి కంటైనర్లుగా ఉండేవి మరియు ఐడెంటిటీ ప్రొవైడర్ కోసం మీరు ముందుగా విడిగా Zitadel ను ఇన్స్టాల్ చేయాల్సి వచ్చేది.dashboardఅనేది అడ్మిన్ వెబ్ కన్సోల్.traefikTLS (ట్రాన్స్పోర్ట్ లేయర్ సెక్యూరిటీ) ను టెర్మినేట్ చేస్తుంది మరియు మొదటిసారి స్టార్ట్ చేసినప్పుడు Let's Encrypt నుండి సర్టిఫికేట్ను అభ్యర్థిస్తుంది.
మరో రెండు సర్వీసులు ఉన్నాయి, ప్రాంప్ట్ వద్ద మీరు 'yes' అని ఎంచుకుంటే తప్ప అవి ఆన్ అవ్వవు. NetBird Proxy సర్వీస్ అంతర్గత సర్వీసులను పబ్లిక్ హోస్ట్నేమ్లలో ప్రచురిస్తుంది. CrowdSec హానికరమైన ట్రాఫిక్ను ఫిల్టర్ చేస్తుంది. పని చేసే మెష్ను నిర్మించడానికి వీటిలో ఏదీ అవసరం లేదు, మరియు చిన్న సర్వర్లలో ఇవి మెమరీని వినియోగిస్తాయి.
మీరు ఒకే Docker కంటైనర్లో wg-easy నుండి వస్తున్నట్లయితే, ఇది భాగాల సంఖ్యలో పెద్ద మార్పుగా అనిపించవచ్చు. దీని వల్ల మీకు లభించే ప్రయోజనాలు: యాక్సెస్ పాలసీలు, ప్రతి వినియోగదారునికి ప్రత్యేక ఖాతాలు, మరియు ఒక గేట్వే ద్వారా కాకుండా నేరుగా ఒకదానికొకటి కనెక్ట్ అయ్యే పీర్లు.
ప్రారంభించే ముందు మీకు కావాల్సినవి
పబ్లిక్ డొమైన్ పేరు తప్పనిసరి. డాష్బోర్డ్, API మరియు రిలే అన్నీ పోర్ట్ 443లో HTTPS ద్వారా పనిచేస్తాయి. Traefik తన సర్టిఫికేట్ను Let's Encrypt నుండి HTTP ఛాలెంజ్ ద్వారా పొందుతుంది, దీని కోసం పబ్లిక్ ఇంటర్నెట్ నుండి మీ VPSకి రిజాల్వ్ అయ్యే డొమైన్ పేరు అవసరం. కేవలం IP అడ్రస్తో ఈ ప్రక్రియ పనిచేయదు.
ఒక A రికార్డును సృష్టించి, netbird.example.com దానిని మీ VPS యొక్క పబ్లిక్ IPv4 అడ్రస్కు పాయింట్ చేయండి. ఏదైనా రన్ చేసే ముందు DNS అప్డేట్ అయ్యే వరకు వేచి ఉండండి.
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 సర్వర్ను ఇన్స్టాల్ చేయడం
డాక్యుమెంట్ చేయబడిన వన్-లైనర్ కమాండ్, తాజా release ను నేరుగా shell లోకి పైప్ చేస్తుంది:
curl -fsSL https://github.com/netbirdio/netbird/releases/latest/download/getting-started.sh | bashదానికి బదులుగా ఒక వెర్షన్ను పిన్ (pin) చేయండి. latest మారుతూ ఉంటుంది, కాబట్టి రెండు వారాల వ్యవధిలో అదే కమాండ్ రన్ చేస్తే రెండు వేర్వేరు ఇన్స్టాల్లు వస్తాయి. మీ కాన్ఫిగరేషన్ను ఏ వెర్షన్ రాసిందో డిస్క్లో ఎక్కడా రికార్డ్ అవ్వదు. ఒక tagged release ను డౌన్లోడ్ చేసి, దాన్ని చదివి, ఆపై రన్ చేయండి.
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 వరకు ఉన్న ఆప్షన్లు ఒక కాన్ఫిగరేషన్ స్నిప్పెట్ను రాసి, మిగిలిన పనిని మీకే వదిలేస్తాయి. ఇది ఇప్పటికే proxy నడుస్తున్న సర్వర్కు సరైనది, కానీ కొత్త సర్వర్కు ఇది తప్పు. ఆప్షన్ 0 ఎంచుకుంటే, Let's Encrypt గడువు ముగింపు నోటీసుల కోసం ఒక ఈమెయిల్ అడ్రస్ను అడుగుతుంది.
మొదటిసారి ఇన్స్టాల్ చేసేటప్పుడు NetBird Proxy సేవకు 'no' అని చెప్పండి. దీనికి అదనంగా రెండు DNS రికార్డులు, proxy.netbird.example.com మరియు wildcard *.proxy.netbird.example.com అవసరం, మరియు సాధారణ mesh నెట్వర్క్కు ఇది ఏమీ చేయదు. CrowdSec కు కూడా 'no' అని చెప్పండి. వీటిని తర్వాత ఎప్పుడైనా జోడించుకోవచ్చు.
ఈ స్క్రిప్ట్ ప్రస్తుత డైరెక్టరీలో ఫైళ్లను రాస్తుంది: docker-compose.yml, 600 మోడ్తో config.yaml, dashboard.env, మరియు మీరు bundled Traefik ను ఎంచుకుంటే traefik-dynamic.yaml. ఆ డైరెక్టరీని మీరు భద్రపరచాల్సిన state గా పరిగణించండి, ఎందుకంటే config.yaml లో స్టోర్లోని డేటాను ఎన్క్రిప్ట్ చేసే కీ ఉంటుంది. దీన్ని కోల్పోతే, మళ్ళీ ఇన్స్టాల్ చేసినా సమస్య పరిష్కారం కాదు.
docker compose ps
docker compose logs -f netbird-serverప్రతి సేవ running ను చదవాలి, మరియు సర్వర్ లాగ్ లూప్లో రీస్టార్ట్ అవ్వకుండా స్థిరంగా ఉండాలి. సర్టిఫికేట్ను విడిగా పర్యవేక్షించండి:
docker compose logs traefik | grep -i acmeACME (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 | shDebian మరియు Ubuntu లలో, ఆ స్క్రిప్ట్ NetBird యొక్క ప్యాకేజీ రిపోజిటరీని కాన్ఫిగర్ చేసి, ఆపై apt ద్వారా క్లయింట్ను ఇన్స్టాల్ చేస్తుంది, కాబట్టి ప్యాకేజీ మేనేజర్ దానిని నియంత్రిస్తుంది. ఒక స్క్రిప్ట్ను నేరుగా షెల్లోకి పైప్ చేయడం మీకు ఇష్టం లేకపోతే, దానిని ముందుగా curl -fsSL -o install.sh https://pkgs.netbird.io/install.sh తో సేవ్ చేసి, రన్ చేసే ముందు sh install.sh తో చదవండి. ఏది ఏమైనా, ఏమి ఇన్స్టాల్ అయ్యిందో నిర్ధారించుకోండి:
apt-cache policy netbirdnetbird అనేది కమాండ్ లైన్ క్లయింట్ మరియు డెమోన్. netbird-ui అనేది డెస్క్టాప్ ట్రే యాప్, హెడ్లెస్ సర్వర్కు దీని అవసరం ఉండదు.
ఇప్పుడు క్లయింట్ను మీ సర్వర్ వైపు మళ్లించండి:
sudo netbird up --management-url https://netbird.example.com--management-url ని వదిలేస్తే, క్లయింట్ NetBird యొక్క హోస్టెడ్ సర్వీస్తో రిజిస్టర్ అవుతుంది, ఎందుకంటే అది డిఫాల్ట్గా సెట్ చేయబడి ఉంటుంది. కమాండ్ విజయవంతమవుతుంది, మెషీన్కు ఒక అడ్రస్ వస్తుంది, కానీ మీ సెల్ఫ్-హోస్టెడ్ డాష్బోర్డ్ ఖాళీగానే ఉంటుంది. చాలామంది ఈ పొరపాటు చేస్తుంటారు.
లాగిన్ పూర్తి చేయడానికి బ్రౌజర్లో ఓపెన్ చేయాల్సిన URL ను ఈ కమాండ్ ప్రింట్ చేస్తుంది. ఆ తర్వాత:
netbird status
ip addr show wt0netbird status నుండి నాలుగు లైన్లను చదవండి: Management: Connected, Signal: Connected, అందుబాటులో ఉన్న ప్రతి రిలేను రిపోర్ట్ చేసే Relays: లైన్, మరియు ఓవర్లే పరిధిలో ఉన్న NetBird IP:. wt0 అనేది NetBird సృష్టించే WireGuard ఇంటర్ఫేస్, ఇది అదే అడ్రస్ను కలిగి ఉండాలి.
సెటప్ కీని ఉపయోగించి రెండవ మెషీన్ను అటెండెడ్ లేకుండా జాయిన్ చేయడం
బ్రౌజర్ లేని మరియు ఎవరూ పర్యవేక్షించని మెషీన్ల కోసం బ్రౌజర్ లాగిన్ పనిచేయదు. సెటప్ కీ అనేది ఇంటరాక్టివ్ దశ లేకుండా మెషీన్ను రిజిస్టర్ చేసే ఒక ప్రీ-అథెంటికేషన్ టోకెన్. డాష్బోర్డ్లోని 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 నిమిషాల కంటే ఎక్కువ సమయం ఆఫ్లైన్లో ఉంటే స్వయంచాలకంగా తొలగించబడతాయి. ఇది పీర్ జాబితాలో పనికిరాని ఎంట్రీలు లేకుండా చేస్తుంది.
సెటప్ కీలను ఉపయోగించే ముందు అర్థం చేసుకోవాల్సిన ఒక పరిమితి: కీ గడువు ముగిసినా లేదా తొలగించినా కొత్త రిజిస్ట్రేషన్లు ఆగిపోతాయి, కానీ ఇప్పటికే ఆ కీతో రిజిస్టర్ అయిన మెషీన్లు డిస్కనెక్ట్ కావు. ఒక మెషీన్ యొక్క యాక్సెస్ను తొలగించాలంటే ఆ పీర్ను తొలగించాలి.
మీకు ఇప్పటికీ ప్రత్యేక identity provider అవసరమా?
చిన్న స్థాయి ఇన్స్టాలేషన్ అయితే, అవసరం లేదు. డాష్బోర్డ్ నుండి సృష్టించిన ఖాతాలను అంతర్నిర్మిత (built-in) యూజర్ స్టోర్ నిర్వహిస్తుంది, ఇది కొద్దిమంది వ్యక్తులకు సరిపోతుంది.
మీకు ఇప్పటికే ఒక identity provider ఉండి, రెండో యూజర్ జాబితాను నిర్వహించడం ఇష్టం లేనప్పుడు మీకు బాహ్య (external) identity provider అవసరం. OIDCని సపోర్ట్ చేసే ఏదైనా ప్రొవైడర్ను NetBird అంగీకరిస్తుంది. మీ ప్రొవైడర్లో ఒక confidential OIDC clientని రిజిస్టర్ చేయండి, ఆపై NetBird డాష్బోర్డ్లో నాలుగు విలువలతో (name, client ID, client secret మరియు issuer) దాన్ని జోడించండి. NetBird మీకు ఒక redirect URLని ఇస్తుంది, దాన్ని మీరు ప్రొవైడర్లో పేస్ట్ చేయాలి. Google, Microsoft Entra ID, Okta, Zitadel, Keycloak, Authentik మరియు Pocket ID కోసం ప్రత్యేక ఇంటిగ్రేషన్లు ఉన్నాయి, మిగిలిన వాటిని generic OIDCగా జోడించవచ్చు. మీరు ఇప్పటికే Authentikని మీ self-hosted single sign-onగా వాడుతుంటే, రెండు వేర్వేరు ఖాతాల జాబితాలకు బదులుగా ఒకే జాబితాను నిర్వహించడానికి ఇదే సరైన మార్గం.
మీరు ఒక ప్రొవైడర్ను జోడించిన తర్వాత కూడా local login అందుబాటులో ఉంటుంది, మరియు కాన్ఫిగర్ చేసిన ప్రతి ప్రొవైడర్ లాగిన్ పేజీలో కనిపిస్తుంది. బలమైన పాస్వర్డ్తో ఒక local admin ఖాతాను ఉంచుకోండి. ఒకవేళ OIDC కాన్ఫిగరేషన్ విఫలమైతే, ఇది మీకు సిస్టమ్లోకి ప్రవేశించడానికి ఒక మార్గాన్ని ఉంచుతుంది.
NetBird లేదా Headscale: మీరు ఏ control plane ను రన్ చేయాలి?
ఈ రెండూ ఒకే రకమైన డిపెండెన్సీని తొలగిస్తాయి, అంటే మీ క్లయింట్లు సాధారణంగా కనెక్ట్ అయ్యే hosted control server అవసరం ఉండదు. అయితే, ఇవి రెండూ ఒకే రకమైన ప్రాజెక్టులు కావు.
Headscale అనేది Tailscale control server యొక్క పునర్నిర్మాణం (reimplementation), మీరు అధికారిక Tailscale క్లయింట్లను ఉపయోగించడం కొనసాగించవచ్చు. ఇందులో అధికారిక web console ఉండదు. మీరు వినియోగదారులను మరియు pre-authentication keys ను config ఫైల్పై headscale కమాండ్ ఉపయోగించి నిర్వహిస్తారు. కమ్యూనిటీ web interfaces అందుబాటులో ఉన్నప్పటికీ, అవి ప్రాజెక్టులో భాగం కావు. తమ డేటా ఫైళ్లలో ఉండాలని, మార్పులు version control లో ఉండాలని కోరుకునే వారికి ఇది సరిపోతుంది.
NetBird పూర్తి ఉత్పత్తిని అందిస్తుంది: దీనికి సొంత క్లయింట్, సొంత dashboard, అంతర్నిర్మిత identity provider మరియు బ్రౌజర్లో ఎడిట్ చేయగల access policies ఉంటాయి. మీ VPS పై ఇది ఎక్కువ భాగాలను కలిగి ఉంటుంది, కానీ టెర్మినల్ ఉపయోగించని సహోద్యోగికి దీనిని అప్పగించడం చాలా సులభం.
మీరు ఇప్పటికే Tailscale క్లయింట్లను ఉపయోగిస్తుంటే లేదా వీలైనంత చిన్న control plane కావాలనుకుంటే Headscale ను ఎంచుకోండి. ఒకవేళ చాలా మంది వ్యక్తులు peers ను నిర్వహించాల్సి ఉంటే మరియు మీరు కన్సోల్, SSO వంటివి విడివిడిగా అమర్చకుండా ఒకే చోట పొందాలనుకుంటే NetBird ను ఎంచుకోండి. దేనినైనా ఎంచుకునే ముందు, Tailscale ఉచిత ప్లాన్ దేనిని కవర్ చేస్తుందో చూడండి, ఎందుకంటే ఆరుగురు వినియోగదారులు మరియు అపరిమిత పరికరాలు ఉన్న సమూహానికి hosted control plane కోసం ఎటువంటి ఖర్చు ఉండదు, కాబట్టి దానిని సొంతంగా రన్ చేయాల్సిన అవసరం ఉండకపోవచ్చు. ఆ పరిమితి దాటిన తర్వాత, బిల్లు యంత్రాల సంఖ్యపై కాకుండా వ్యక్తుల సంఖ్యపై ఆధారపడి పెరుగుతుంది, కాబట్టి మీ సమూహానికి Tailscale ఎంత ఛార్జ్ చేస్తుందో లెక్కించడం ద్వారా, VPS ఖర్చు మరియు దీని నిర్వహణకు పట్టే సమయంతో పోల్చుకోవడానికి మీకు ఒక అంచనా వస్తుంది.
ఈ అప్లికేషన్ను నడపడానికి ఎంత చిన్న VPS సరిపోతుంది?
డాక్యుమెంట్ చేయబడిన కనిష్ట అవసరం 1 CPU మరియు 2 GB మెమరీ. యూజర్ మేనేజ్మెంట్ స్థానికంగా మారినందున, NetBird ప్రస్తుత కనిష్ట అవసరం దాదాపు 1 GB RAM అని పేర్కొంది. గతంలో Zitadel పూర్తి డిప్లాయ్మెంట్ అవసరమైనప్పుడు 2 GB నుండి 4 GB వరకు అవసరమయ్యేది. 2 GB ఉన్న ప్లాన్ను ఎంచుకోండి. అదనపు మెమరీ ఉండటం వల్ల, పాత ఇమేజ్లు డిస్క్లో ఉన్నప్పుడే కొత్త ఇమేజ్లను డౌన్లోడ్ చేసి అప్గ్రేడ్ చేయడం సాధ్యమవుతుంది.
చిన్న సర్వర్లలో మూడు అంశాలను వదిలివేయడం సురక్షితం. NetBird Proxy సేవను నిలిపివేయండి; ఇది అంతర్గత సేవలను పబ్లిక్ హోస్ట్నేమ్లలో ప్రచురించడానికి మాత్రమే ఉపయోగపడుతుంది, పీర్ల కనెక్టివిటీతో దీనికి సంబంధం లేదు. CrowdSec ను కూడా వదిలివేయవచ్చు, ఎందుకంటే దీన్ని మొదటి రోజే కాకుండా, సర్వర్ పబ్లిక్గా ఎక్స్పోజ్ అయిన తర్వాత ఎప్పుడైనా ఇన్స్టాల్ చేసుకోవచ్చు. డిఫాల్ట్ SQLite స్టోర్ను netbird_data వాల్యూమ్లోనే ఉంచండి. మీరు డిప్లాయ్మెంట్ను వేర్వేరు మెషీన్లకు విభజించినప్పుడు లేదా ఎక్కువ మంది వినియోగదారులు ఉన్నప్పుడు మాత్రమే PostgreSQL కి మారండి; ఇది తర్వాత ఎప్పుడైనా చేయగల మైగ్రేషన్ అని డాక్యుమెంటేషన్లో ఉంది.
Relay అనేది మీరు వదిలివేయకూడని ఏకైక భాగం. NAT ద్వారా ప్రతి గమ్యస్థానానికి వేర్వేరు పోర్ట్లను కేటాయించే ఇద్దరు పీర్లు నేరుగా టన్నెల్ను ఏర్పాటు చేసుకోలేరు, కాబట్టి Relay మాత్రమే వారిని అనుసంధానించగల ఏకైక మార్గం. దీన్ని నిలిపివేయడం వల్ల మెమరీ ఆదా చాలా తక్కువ, కానీ కనెక్షన్లు విఫలమవుతాయి మరియు ఆ సమస్యను గుర్తించడం కష్టమవుతుంది.
ఒక సర్వర్ సరిపోనప్పుడు, మొదట Relay ను వేరే సర్వర్కు తరలించాలి. ఒక స్వతంత్ర Relay ను NB_LISTEN_ADDRESS, NB_EXPOSED_ADDRESS, NB_AUTH_SECRET మరియు NB_ENABLE_STUN తో రన్ చేయవచ్చు. Relay మరియు ప్రధాన సర్వర్ రెండింటిలోనూ shared secret ఒకేలా ఉండాలి, లేకపోతే క్లయింట్లు దానికి అథెంటికేట్ కాలేవు.
వైఫల్య రీతులు మరియు మీరు గమనించే అంశాలు
డ్యాష్బోర్డ్ సర్టిఫికేట్ హెచ్చరికను చూపుతోంది. Traefik సర్టిఫికేట్ను పొందలేదు. docker compose logs traefik | grep -i acmeని రన్ చేయండి. దీనికి రెండు కారణాలు ఉండవచ్చు. ఒకటి, dig +short netbird.example.com ఇంకా ఈ VPSని పాయింట్ చేయడం లేదు, లేదా Let's Encrypt మరియు కంటైనర్ మధ్య ఎక్కడో TCP 80 పోర్ట్ మూసివేయబడి ఉంది. ఇది సాధారణంగా ufwలో కాకుండా, ప్రొవైడర్ నెట్వర్క్ ఫైర్వాల్లో జరుగుతుంది. మళ్ళీ మళ్ళీ ప్రయత్నించే ముందు ఈ సమస్యను పరిష్కరించండి, ఎందుకంటే విఫలమైన ధృవీకరణలు (validations) రేట్ లిమిట్కు లోనవుతాయి, దీనివల్ల ఒక గంట పాటు మీరు మళ్ళీ ప్రయత్నించకుండా లాక్ అవుతారు.
క్లయింట్ కనెక్ట్ అయిందని చెబుతోంది కానీ డ్యాష్బోర్డ్ ఖాళీగా ఉంది. --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 ద్వారా వెళ్తూ అదనపు లేటెన్సీని కలిగిస్తోంది. VPS ఫైర్వాల్ మరియు ప్రొవైడర్ ఫైర్వాల్లో UDP 3478 పోర్ట్ను తనిఖీ చేయండి, ఎందుకంటే STUN ద్వారానే ఒక పీర్ తన సొంత పబ్లిక్ అడ్రస్ మరియు పోర్ట్ను తెలుసుకోగలదు. netbird status --detail కమాండ్ Direct: falseని మరియు ప్రతి పీర్కు సంబంధించిన ICE (interactive connectivity establishment) క్యాండిడేట్ రకాలను ప్రింట్ చేస్తుంది, ఇది ప్రయత్నం ఎంతవరకు జరిగిందో చూపిస్తుంది. కొన్ని నెట్వర్క్లలో relayed మాత్రమే సాధ్యమవుతుంది, కాబట్టి అలా జరిగితే ఏమీ తప్పు లేదని అర్థం.
ఒక పీర్ జాయిన్ అయ్యింది కానీ దేనినీ చేరుకోలేకపోతోంది. మెష్లో ఉన్నంత మాత్రాన రెండు పీర్లు మాట్లాడుకోగలవని కాదు. యాక్సెస్ పాలసీలు దీనిని నిర్ణయిస్తాయి, పాలసీ లేని గ్రూప్ దేనినీ చేరుకోలేదు. మీరు రూట్లు మరియు ఫైర్వాల్లను డీబగ్ చేయడం ప్రారంభించే ముందు డ్యాష్బోర్డ్లో పాలసీని తనిఖీ చేయండి.
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 -dCompose వాల్యూమ్ పేర్లకు ప్రాజెక్ట్ డైరెక్టరీని ప్రిఫిక్స్గా చేరుస్తుంది, కాబట్టి 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 అని ఉన్న ఏదైనా ట్యాగ్ను ఒక నిర్దిష్ట వెర్షన్కు పిన్ (pin) చేయాలి; ఇన్స్టాల్ స్క్రిప్ట్ను ఎందుకు పిన్ చేశారో అదే కారణం ఇక్కడ కూడా వర్తిస్తుంది: ఏ వెర్షన్ రన్ అవుతుందో మీకు తెలియాలి, మరియు అప్గ్రేడ్ సరిగ్గా జరగనప్పుడు తిరిగి వెళ్లడానికి ఒక వెర్షన్ సిద్ధంగా ఉండాలి. క్లయింట్లు వాటిని ఇన్స్టాల్ చేసిన ప్యాకేజీ మేనేజర్ ద్వారా అప్గ్రేడ్ అవుతాయి.
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 port. దీనిని VPS firewall లో మరియు మీ ప్రొవైడర్ యొక్క నెట్వర్క్ 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 ను రన్ చేయడం తక్కువ వనరులతో సాధ్యమవుతుంది మరియు ఇది తన స్థితిని (state) ఫైళ్లలో ఉంచుతుంది. టెర్మినల్ ఉపయోగించని వ్యక్తులకు NetBird ను అందించడం సులభం.
Self-hosted NetBird సర్వర్కు ఎంత పరిమాణం గల VPS అవసరం?
డాక్యుమెంట్ చేయబడిన కనిష్ట అవసరం 1 CPU మరియు 2 GB memory, కాబట్టి 2 GB ని ఎంచుకోండి. ఇటీవలి releases లో identity provider విడిగా కాకుండా అంతర్నిర్మితంగా ఉండటం వల్ల, ఆచరణాత్మక అవసరం 1 GB కి తగ్గింది. ఇన్స్టాలేషన్ సమయంలో ఐచ్ఛిక proxy మరియు CrowdSec సేవలను నిలిపివేయండి, మరియు మీకు నిజంగా PostgreSQL అవసరమయ్యే వరకు డిఫాల్ట్ SQLite store నే ఉపయోగించండి.