SSD Nodes Learn 🎉 VPS $4.99/माह से
गाइड Matt Connorलेखक: Matt Connor

NetBird VPN सर्वर को VPS पर कैसे self-host करें

NetBird VPN को अपने VPS पर self-host करने का पूरा तरीका जानें। इसमें DNS और TLS कॉन्फ़िगरेशन, unattended peers के लिए setup keys और Headscale के साथ इसकी तुलना शामिल है।

NetBird VPN सर्वर को self-host करने के लाभ

NetBird VPN सर्वर को self-host करने से control plane आपके अपने VPS पर रहता है: यह वह हिस्सा है जो peer list को रखता है, यह तय करता है कि कौन सी मशीन किससे जुड़ सकती है, और NAT (network address translation) के पीछे दो peers को एक-दूसरे को खोजने में मदद करता है। tunnels स्वयं WireGuard ही रहती हैं, जो सीधे आपकी मशीनों के बीच encrypted होती हैं। बदलाव यह है कि कोई बाहरी कंपनी आपकी device inventory या login flow को नियंत्रित नहीं करती है।

NetBird उन दो चीजों के बीच स्थित है जिन्हें आप शायद पहले से जानते हों। यह एक mesh overlay है, इसलिए peers एक gateway के माध्यम से सब कुछ भेजने के बजाय सीधे एक-दूसरे से जुड़ते हैं। यह end-to-end self-hostable भी है, जो इसे Headscale, self-hosted Tailscale control server के समकक्ष खड़ा करता है। यदि आपने अब तक केवल single-gateway tunnel का उपयोग किया है, तो पहले plain WireGuard और mesh overlay के बीच का अंतर पढ़ें, क्योंकि वही mental model इस पृष्ठ के बाकी हिस्सों को उपयोगी बनाता है।

यदि आप वास्तव में एक ऐसा सर्वर चाहते हैं जिससे आपका सारा traffic बाहर निकले, तो mesh की आवश्यकता से अधिक जटिलता है। एक single VPS पर plain WireGuard VPN या एक Tailscale exit node कम मेहनत में यह काम कर देता है।

स्टैक वास्तव में क्या चलाता है

लेआउट हाल ही में बदल गया है, और अधिकांश पुराने लेख पुराने लेआउट का वर्णन करते हैं। अगस्त 2026 तक, v0.76.2 release पर, quickstart script डिफ़ॉल्ट रूप से तीन services के साथ एक Compose file लिखती है।

  • netbird-server में management API, signal service, embedded STUN listener के साथ relay, और एक embedded identity provider शामिल हैं। पुराने releases में ये अलग-अलग containers थे और identity provider एक अलग Zitadel install था जिसे आपको पहले build करना पड़ता था।
  • dashboard एडमिन वेब कंसोल है।
  • traefik TLS (transport layer security) को terminate करता है और पहली बार start होने पर Let's Encrypt से certificate का अनुरोध करता है।

दो और services मौजूद हैं और जब तक आप प्रॉम्प्ट पर हाँ नहीं कहते, तब तक वे बंद रहती हैं। NetBird Proxy service आंतरिक services को public hostnames पर प्रकाशित करती है। CrowdSec हानिकारक traffic को फ़िल्टर करता है। एक कार्यशील mesh बनाने के लिए इनमें से किसी की भी आवश्यकता नहीं है, और दोनों ही छोटे सर्वर पर memory का उपयोग करते हैं।

यदि आप एकल Docker container में wg-easy से आ रहे हैं, तो यह components की संख्या में एक बड़ी वृद्धि है। यह आपको access policies, प्रति-उपयोगकर्ता accounts, और ऐसे peers प्रदान करता है जो एक gateway के बजाय सीधे एक-दूसरे से जुड़ते हैं।

शुरू करने से पहले आपको क्या चाहिए

एक public domain name का होना अनिवार्य है। Dashboard, API और relay सभी port 443 पर HTTPS का उपयोग करते हैं, और Traefik, Let's Encrypt से certificate प्राप्त करने के लिए HTTP challenge का उपयोग करता है। इसके लिए एक ऐसे नाम की आवश्यकता होती है जो public internet से आपके VPS पर resolve हो सके। इस प्रक्रिया में केवल IP address काम नहीं करेगा।

एक A record बनाएँ, netbird.example.com जो आपके VPS के public IPv4 address की ओर इशारा करता हो, और कुछ भी चलाने से पहले इसके propagate होने का इंतज़ार करें।

dig +short netbird.example.com

यह कमांड आपके सर्वर का address दिखाना चाहिए। DNS propagate होने से पहले installer चलाने का मतलब है कि certificate request पहली बार में ही विफल हो जाएगी, और बार-बार विफल validation के कारण आप Let's Encrypt की rate limits में फंस जाएंगे, जिससे आपको दोबारा प्रयास करने के लिए एक घंटे तक इंतज़ार करना पड़ेगा।

इंटरनेट से तीन ports तक पहुँच संभव होनी चाहिए: certificate challenge और HTTPS पर redirect के लिए TCP 80, dashboard, API, signal और relay traffic के लिए 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

इन्हें अपने provider के network firewall पर भी खोलें। अधिकांश VPS panels में यह एक अलग control होता है, और यही कारण है कि जिस box का अपना ufw status सही दिखता है, वह भी connections को अस्वीकार कर देता है।

STUN (session traversal utilities for NAT) वह तरीका है जिससे एक peer उस public address और port को सीखता है जो उसके NAT ने उसे assign किया है, ताकि दो peers एक direct tunnel बनाने का प्रयास कर सकें। यदि आप UDP 3478 को block करते हैं, तो भी peers TCP 443 पर relay के माध्यम से connect हो जाएंगे, इसलिए कुछ भी टूटा हुआ नहीं लगेगा। इसके बजाय आपको हर peer पर Connection type: Relayed दिखाई देगा, और सारा traffic peer-to-peer जाने के बजाय आपके VPS से होकर गुजरेगा।

Software side पर आपको Docker के साथ Compose v2 plugin, और साथ ही jq और curl की आवश्यकता होगी। Script इन सभी की जाँच करती है और यदि कोई एक भी missing हो तो रुक जाती है। यदि इस box पर Docker नया है, तो पहले VPS पर Docker Compose को काम करने योग्य बनाएँ

यदि आप bundled reverse proxy को छोड़ देते हैं तो आवश्यक ports

Traefik के बिना चलाने का मतलब है कि individual services सीधे expose हो जाती हैं, और port list बढ़ जाती है:

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

इसे केवल तभी चुनें जब box पहले से ही किसी अन्य चीज़ के लिए TLS terminate कर रहा हो। अन्यथा, bundled Traefik का उपयोग करना कम नियमों और कम गलतियों वाला विकल्प है।

Quickstart script के साथ NetBird सर्वर इंस्टॉल करें

दस्तावेजीकृत one-liner सबसे नए release को सीधे shell में pipe करता है:

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

इसके बजाय इसे pin करें। latest बदलता रहता है, इसलिए दो सप्ताह के अंतराल पर चलाई गई एक ही command दो अलग-अलग installs बनाती है, और disk पर ऐसा कुछ नहीं होता जो यह record करे कि आपके config को किसने लिखा है। एक tagged release download करें, उसे पढ़ें, और फिर उसे चलाएं।

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

script सबसे पहले domain के बारे में पूछती है:

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

फिर यह पूछती है कि TLS को कैसे handle किया जाएगा:

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 एक config snippet लिखते हैं और wiring का काम आप पर छोड़ देते हैं, जो उस सर्वर पर सही है जहाँ पहले से proxy चल रहा है, लेकिन एक नए सर्वर पर यह गलत है। विकल्प 0 फिर Let's Encrypt email address मांगता है, जिसका उपयोग expiry notices के लिए किया जाता है।

पहले install पर NetBird Proxy service के लिए 'no' कहें। इसे दो और DNS records की आवश्यकता होती है, proxy.netbird.example.com और wildcard *.proxy.netbird.example.com, और यह एक साधारण mesh के लिए कुछ नहीं करता है। CrowdSec के लिए भी 'no' कहें। दोनों को बाद में जोड़ा जा सकता है।

script वर्तमान directory में लिखती है: docker-compose.yml, 600 mode के साथ config.yaml, dashboard.env, और जब आप bundled Traefik चुनते हैं तो traefik-dynamic.yaml। उस directory को उस state के रूप में मानें जिसे आप सुरक्षित रखते हैं, क्योंकि config.yaml में वह key होती है जो store में डेटा को encrypt करती है। इसे खोना ऐसी समस्या नहीं है जिसे reinstall से ठीक किया जा सके।

docker compose ps
docker compose logs -f netbird-server

हर service को running पढ़ना चाहिए, और सर्वर log को loop में restart होने के बजाय स्थिर हो जाना चाहिए। certificate को अलग से monitor करें:

docker compose logs traefik | grep -i acme

ACME (automatic certificate management environment) वह protocol है जिसका उपयोग Traefik certificate प्राप्त करने के लिए करता है। यहाँ होने वाली त्रुटियां लगभग हमेशा DNS या बंद port 80 के कारण होती हैं।

पहला एडमिन अकाउंट बनाना

https://netbird.example.com खोलें। नए इंस्टॉलेशन पर यह लॉगिन फॉर्म के बजाय सेटअप पेज पर ले जाता है। एक ईमेल पता, नाम और पासवर्ड दर्ज करें, फिर Create Account पर क्लिक करें। यह पहला एडमिन बन जाता है, और पेज लॉगिन फॉर्म पर रीडायरेक्ट हो जाता है।

वह अकाउंट NetBird के अपने यूजर स्टोर में रहता है, जो netbird-server कंटेनर में एम्बेडेड एक आइडेंटिटी प्रोवाइडर द्वारा संचालित होता है। इसमें कोई बाहरी चीज़ शामिल नहीं है। यह एक साल पहले के सेल्फ-होस्टेड NetBird से सबसे बड़ा बदलाव है, जब एक वर्किंग इंस्टॉलेशन का मतलब था कि पहले Zitadel या Keycloak को खड़ा करना और किसी भी चीज़ के शुरू होने से पहले setup.env में चार OIDC (OpenID Connect) वैल्यूज को कॉपी करना।

यदि आपको सेटअप पेज के बजाय ब्राउज़र सर्टिफिकेट चेतावनी मिलती है, तो सर्टिफिकेट जारी नहीं हुआ है। आगे बढ़ने से पहले इसे ठीक करें, क्योंकि डैशबोर्ड उसी होस्टनेम पर API से बात करता है और खराब सर्टिफिकेट के कारण भ्रमित करने वाले तरीकों से विफल हो जाता है।

अपने पहले peer को जोड़ें

किसी भी Linux मशीन पर client install करें, जिसमें VPS भी शामिल है यदि आप उसे mesh में रखना चाहते हैं:

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

Debian और Ubuntu पर वह script NetBird का package repository configure करती है और फिर apt के माध्यम से client install करती है, इसलिए package manager ही इसका प्रबंधन करता है। यदि आपको script को सीधे shell में pipe करना पसंद नहीं है, तो इसे पहले curl -fsSL -o install.sh https://pkgs.netbird.io/install.sh के साथ save करें और sh install.sh चलाने से पहले इसे पढ़ लें। किसी भी स्थिति में, पुष्टि करें कि क्या install हुआ है:

apt-cache policy netbird

netbird command line client और daemon है। netbird-ui desktop tray app है, और headless server के लिए इसकी कोई आवश्यकता नहीं है।

अब client को अपने server की ओर point करें:

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

--management-url को न छोड़ें, अन्यथा client NetBird की hosted service के साथ register हो जाएगा, क्योंकि यह compiled-in default है। command सफल हो जाएगी, मशीन को एक address मिल जाएगा, लेकिन आपका self-hosted dashboard खाली रहेगा। लगभग हर कोई एक बार इस गलती का शिकार होता है।

command login पूरा करने के लिए browser में खोलने हेतु एक URL print करती है। उसके बाद:

netbird status
ip addr show wt0

netbird status से चार line पढ़ें: Management: Connected, Signal: Connected, एक Relays: line जो उपलब्ध हर relay की जानकारी देती है, और overlay range में एक NetBird IP:wt0 वह WireGuard interface है जिसे NetBird बनाता है, और इसमें वही address होना चाहिए।

एक सेटअप की (setup key) का उपयोग करके दूसरी मशीन को अनअटेंडेड (unattended) तरीके से जोड़ना

जिस मशीन पर ब्राउज़र नहीं है और जिसे कोई संचालित नहीं कर रहा है, उस पर ब्राउज़र लॉगिन काम नहीं करता है। सेटअप की (setup key) एक प्री-ऑथेंटिकेशन टोकन है जो इंटरैक्टिव चरण के बिना मशीन को रजिस्टर करता है। इसे डैशबोर्ड में Setup Keys के अंतर्गत बनाएँ।

ये दो प्रकार की होती हैं। एक वन-ऑफ (one-off) की ठीक एक मशीन को प्रमाणित करती है और फिर समाप्त हो जाती है। एक रीयूजेबल (reusable) की कई मशीनों को रजिस्टर करती है, जिसमें कितनी मशीनों को रजिस्टर करना है, इसकी एक वैकल्पिक सीमा तय की जा सकती है। दोनों की एक समाप्ति अवधि (expiry) होती है, और दोनों नए पीयर (peer) को स्वचालित रूप से एक ग्रुप में असाइन कर सकती हैं, ताकि मशीन के जुड़ते ही उस ग्रुप पर लागू एक्सेस नियम उस पर भी प्रभावी हो जाएँ।

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

--hostname डैशबोर्ड में दिखाई देने वाले नाम को सेट करता है। इसके बिना, पीयर वही नाम ले लेता है जो मशीन का अपना नाम होता है, और ubuntu नाम वाली कई प्रविष्टियाँ किसी के काम नहीं आतीं।

कंटेनर और कम समय तक चलने वाले बिल्ड एजेंटों के लिए, की (key) बनाते समय उसे ephemeral के रूप में चिह्नित करें। ephemeral की के साथ रजिस्टर किए गए पीयर 10 मिनट से अधिक समय तक ऑफलाइन रहने पर स्वचालित रूप से हटा दिए जाते हैं, जिससे पीयर सूची में मृत प्रविष्टियाँ नहीं रहतीं।

सेटअप की के आधार पर योजना बनाने से पहले एक सीमा को समझना आवश्यक है: की (key) की समय-सीमा समाप्त होने या उसे डिलीट करने से नए रजिस्ट्रेशन रुक जाते हैं, लेकिन यह उन मशीनों को डिस्कनेक्ट नहीं करता है जो पहले ही इसके साथ रजिस्टर हो चुकी हैं। किसी मशीन का एक्सेस हटाने का अर्थ है उस पीयर को हटाना।

क्या आपको अभी भी एक अलग identity provider की आवश्यकता है?

एक छोटे इंस्टॉलेशन के लिए, नहीं। इन-बिल्ट user store डैशबोर्ड से बनाए गए खातों को संभाल लेता है, और यह कुछ लोगों के लिए पर्याप्त है।

आपको एक बाहरी identity provider की आवश्यकता तब होती है जब आपके पास पहले से एक मौजूद हो और आप उपयोगकर्ताओं की दूसरी सूची नहीं बनाना चाहते। NetBird किसी भी ऐसे provider को स्वीकार करता है जो OIDC का उपयोग करता है। अपने 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: आपको कौन सा control plane चलाना चाहिए?

दोनों ही एक ही dependency को हटाते हैं, यानी वह hosted control server जिससे आपके clients अन्यथा संपर्क करते। ये दोनों एक ही तरह के project नहीं हैं।

Headscale, Tailscale control server को फिर से implement करता है, और आप आधिकारिक Tailscale clients का उपयोग करना जारी रखते हैं। इसमें कोई आधिकारिक web console नहीं है। आप headscale command का उपयोग करके config file के माध्यम से users और pre-authentication keys को manage करते हैं। Community web interfaces मौजूद हैं, लेकिन वे इस project का हिस्सा नहीं हैं। यह उन लोगों के लिए उपयुक्त है जो अपनी state को files में और अपने बदलावों को version control में रखना चाहते हैं।

NetBird पूरा product प्रदान करता है: इसका अपना client, अपना dashboard, एक embedded identity provider, और browser में edit की जाने वाली access policies। आपके VPS पर इसमें अधिक components होते हैं, लेकिन किसी ऐसे सहकर्मी को सौंपने के लिए यह बहुत कम काम है जो कभी terminal नहीं खोलेगा।

यदि आप पहले से ही Tailscale clients का उपयोग कर रहे हैं या आप सबसे छोटा संभव control plane चाहते हैं, तो Headscale चलाएं। यदि कई लोगों को peers को manage करने की आवश्यकता है और आप बिना किसी अतिरिक्त setup के console और SSO चाहते हैं, तो NetBird चलाएं।

इसे चलाने के लिए न्यूनतम VPS कितना छोटा हो सकता है?

दस्तावेजीकरण के अनुसार न्यूनतम आवश्यकता 1 CPU और 2 GB मेमोरी है। NetBird के अपने नोट्स के अनुसार, अब जब user management स्थानीय (local) है, तो वर्तमान न्यूनतम आवश्यकता लगभग 1 GB RAM है। पुराने लेआउट में, जब पूरा Zitadel deployment स्टैक का हिस्सा था, तब 2 GB से 4 GB की आवश्यकता होती थी। 2 GB खरीदें। अतिरिक्त headroom होने से upgrade के दौरान नए images को pull करना संभव होता है, जबकि पुराने images अभी भी डिस्क पर मौजूद होते हैं।

छोटे सर्वर पर तीन चीजों को छोड़ना सुरक्षित है। NetBird Proxy service को न चुनें, जो internal services को public hostnames पर प्रकाशित करने के लिए होती है और इसका peers के कनेक्ट होने से कोई लेना-देना नहीं है। CrowdSec को न चुनें; इसे पहले दिन के बजाय बाद में किसी exposed सर्वर पर जोड़ना बेहतर है। netbird_data volume में डिफ़ॉल्ट SQLite store का उपयोग करें, और PostgreSQL पर तभी जाएँ जब आप deployment को अलग-अलग मशीनों पर विभाजित करें या वास्तविक concurrency का सामना करें। इसे बाद में किए जा सकने वाले migration के रूप में प्रलेखित किया गया है।

relay वह एकमात्र घटक है जिसे आप हटा नहीं सकते। दो peers जिनके NAT हर destination के लिए अलग port assign करते हैं, वे कभी भी direct tunnel स्थापित नहीं कर पाएंगे, इसलिए relay ही एकमात्र रास्ता है जो उन्हें काम करने योग्य बनाता है। इसे disable करने से बहुत कम मेमोरी बचती है और यह connections को इस तरह तोड़ देता है जिसे ट्रैक करना मुश्किल होता है।

जब एक सर्वर पर्याप्त न रहे, तो relays को सबसे पहले वहां से हटाना चाहिए। एक standalone relay NB_LISTEN_ADDRESS, NB_EXPOSED_ADDRESS, NB_AUTH_SECRET और NB_ENABLE_STUN के साथ चलता है। shared secret का relay और मुख्य सर्वर पर समान होना अनिवार्य है, अन्यथा clients उस पर authenticate करने में विफल हो जाएंगे।

विफलता के प्रकार और आप क्या देखेंगे

डैशबोर्ड पर certificate warning दिखाई देती है। Traefik ने certificate प्राप्त नहीं किया है। docker compose logs traefik | grep -i acme चलाएँ। इसके दो कारण हैं। या तो dig +short netbird.example.com अभी तक इस VPS को return नहीं कर रहा है, या Let's Encrypt और container के बीच कहीं TCP 80 बंद है, जो आमतौर पर ufw के बजाय प्रदाता के नेटवर्क फायरवॉल पर होता है। पुनः प्रयास करने से पहले कारण को ठीक करें, क्योंकि विफल validations पर rate limit लागू होती है और आप एक घंटे के लिए retry करने से लॉक हो जाएंगे।

Client कहता है कि वह कनेक्ट हो गया है लेकिन डैशबोर्ड खाली है। Client ने NetBird की hosted service के साथ register किया है, क्योंकि --management-url गायब था। netbird status --detail चलाएँ और Management: लाइन को पढ़ें, जो उस सर्वर का नाम बताती है जिससे वह वास्तव में बात कर रहा है। Management: Connected to https://api.netbird.io:443 देखने का मतलब है कि यह cloud पर चला गया है। sudo netbird down चलाएँ, फिर दोबारा sudo netbird up --management-url https://netbird.example.com चलाएँ।

प्रत्येक peer Connection type: Relayed दिखाता है। कोई direct tunnel नहीं बन रही है, इसलिए सारा traffic आपके VPS से होकर गुजरता है और latency का एक hop जुड़ जाता है। VPS फायरवॉल और प्रदाता के फायरवॉल पर UDP 3478 की जाँच करें, क्योंकि STUN ही वह माध्यम है जिससे peer को अपना public address और port पता चलता है। netbird status --detail प्रत्येक peer के लिए Direct: false और ICE (interactive connectivity establishment) candidate types भी print करता है, जो यह दिखाता है कि प्रयास कहाँ तक पहुँचा। कुछ नेटवर्क पर केवल relayed ही एकमात्र परिणाम होता है और इसमें कुछ भी गलत नहीं है।

एक peer जुड़ता है लेकिन किसी भी चीज़ तक नहीं पहुँच पाता। Mesh में होने का मतलब यह नहीं है कि दो peers आपस में बात कर सकते हैं। Access policies यह तय करती हैं, और जिस group के साथ कोई policy नहीं जुड़ी होती, वह कहीं नहीं पहुँच पाता। routes और firewalls को debug करना शुरू करने से पहले डैशबोर्ड में policy की जाँच करें।

netbird status daemon समस्या की रिपोर्ट करता है। Service चल नहीं रही है। sudo netbird service status और sudo netbird service start का उपयोग करें। Client logs /var/log/netbird/client.log पर स्थित हैं। ऐसी किसी भी चीज़ के लिए जिसे आप समझ नहीं पा रहे हैं, netbird debug bundle --anonymize --system-info logs, status, routes, DNS settings और firewall state को एक archive में collect करता है।

Backups and upgrades

पूरे इंस्टॉलेशन को सुरक्षित रखने के लिए दो चीजें आवश्यक हैं: वह डायरेक्टरी जिसमें docker-compose.yml और config.yaml मौजूद हैं, और वह Docker volume जिसमें डेटाबेस और एन्क्रिप्शन कीज़ (encryption keys) रखी गई हैं। इन दोनों का बैकअप एक साथ लें। config.yaml में वह की (key) होती है जो स्टोर में मौजूद डेटा को एन्क्रिप्ट करती है, इसलिए इसके बिना डेटाबेस की कॉपी को रिस्टोर करने पर आप डेटा को पढ़ नहीं पाएंगे।

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 account बनाते हैं और उसके बाद dashboard से users जोड़ते हैं। एक बाहरी OIDC provider वैकल्पिक है और इसे बाद में चार मानों (name, client ID, client secret और issuer) के साथ जोड़ा जा सकता है। जो guides आपको NetBird से पहले Zitadel या Keycloak deploy करने के लिए कहती हैं, वे एक ऐसे setup का वर्णन करती हैं जिसकी अब आवश्यकता नहीं है, और उनका पालन करने से आपको एक अतिरिक्त service चलानी पड़ती है।

मेरे सभी peers Connection type: Relayed क्यों दिखाते हैं?

Direct connections नहीं बन पा रहे हैं, इसलिए traffic आपके VPS पर मौजूद relay के माध्यम से जा रहा है। इसका सामान्य कारण UDP 3478 का block होना है, जो वह STUN port है जिसका उपयोग peers अपने स्वयं के public address और port को खोजने के लिए करते हैं। इसे VPS firewall और अपने provider के अलग network firewall पर खोलें, फिर netbird status --detail को दोबारा चलाएं और Direct: line को पढ़ें। ऐसे network पर जहाँ NAT प्रत्येक destination के लिए एक अलग port assign करता है, relayed ही एकमात्र संभव परिणाम है और कुछ भी गलत configure नहीं है।

मेरा client connect हो गया है लेकिन dashboard पर कोई peer नहीं दिख रहा है। क्या हुआ?

Client ने आपके server के बजाय NetBird की hosted service के साथ register किया है, जो तब होता है जब --management-url को छोड़ दिया जाता है। netbird status --detail उस server को print करता है जिससे वह बात कर रहा है, जो Management: line पर दिखता है, इसलिए 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 को आपके द्वारा चलाए जाने वाले server से बदल देते हैं। Headscale केवल एक control plane है: आप इसे headscale command और एक config file के साथ manage करते हैं, इसमें कोई official web console नहीं है, और यह official Tailscale clients को चलाता है। NetBird अपना स्वयं का client, एक admin dashboard और identity provider integration एक ही stack में प्रदान करता है। Headscale को चलाना छोटा है और यह अपनी state को files में रखता है। NetBird को उन लोगों को देना आसान है जो terminal का उपयोग नहीं करेंगे।

Self-hosted NetBird server के लिए किस आकार के VPS की आवश्यकता है?

दस्तावेजीकृत न्यूनतम आवश्यकता 1 CPU और 2 GB memory है, और आपको 2 GB ही लेना चाहिए। हाल के releases में व्यावहारिक न्यूनतम आवश्यकता घटकर लगभग 1 GB हो गई है क्योंकि identity provider अब अलग deployment के बजाय embedded है। Install करते समय वैकल्पिक proxy और CrowdSec services को न चुनें, और तब तक default SQLite store पर रहें जब तक आपको वास्तव में PostgreSQL की आवश्यकता न हो।