NetBird VPN server-ஐ சொந்தமாக VPS-ல் நிறுவுவது எப்படி?
NetBird mesh VPN-ஐ உங்கள் சொந்த VPS-ல் நிறுவுவதற்கான முழுமையான வழிகாட்டி. இதில் DNS மற்றும் TLS அமைப்புகள், setup keys, unattended peers மற்றும் Headscale உடனான ஒப்பீடு உள்ளது.
NetBird VPN server-ஐ நீங்களே self-host செய்வதன் நன்மைகள்
NetBird VPN server-ஐ நீங்களே self-host செய்யும்போது, அதன் control plane உங்கள் சொந்த VPS-ல் இருக்கும். இதுவே peer-களின் பட்டியலை வைத்திருக்கும், எந்த machine எந்த machine-ஐ அணுகலாம் என்பதைத் தீர்மானிக்கும், மேலும் NAT (network address translation)-க்கு பின்னால் இருக்கும் இரண்டு peer-கள் ஒன்றையொன்று கண்டறிய உதவும். tunnel-கள் தொடர்ந்து WireGuard மூலமே இயங்கும், அவை உங்கள் machine-களுக்கு இடையே நேரடியாக encrypt செய்யப்படும். இதில் மாறும் விஷயம் என்னவென்றால், உங்கள் device விவரங்களையோ அல்லது login செயல்முறையையோ எந்த வெளி நிறுவனமும் வைத்திருக்காது.
NetBird உங்களுக்கு ஏற்கனவே தெரிந்த இரண்டு தொழில்நுட்பங்களுக்கு இடையில் அமைகிறது. இது ஒரு mesh overlay, எனவே traffic முழுவதையும் ஒரே gateway வழியாக அனுப்பாமல், peer-கள் நேரடியாக ஒன்றோடொன்று இணைக்கப்படுகின்றன. இது முழுமையாக self-host செய்யக்கூடியது, எனவே இது Headscale, the self-hosted Tailscale control server-க்கு மாற்றாக அமைகிறது. நீங்கள் இதுவரை ஒரே ஒரு gateway கொண்ட tunnel-ஐ மட்டுமே பயன்படுத்தியிருந்தால், முதலில் the difference between plain WireGuard and a mesh overlay என்பதைப் படியுங்கள். அந்த அடிப்படை புரிதல் இருந்தால்தான் இந்தப் பக்கத்தில் உள்ள மற்ற தகவல்கள் உங்களுக்குப் பயனுள்ளதாக இருக்கும்.
உங்கள் traffic முழுவதையும் ஒரே server வழியாக வெளியேற்ற வேண்டும் என்பதுதான் உங்கள் தேவை என்றால், mesh என்பது அந்த வேலைக்குத் தேவையானதை விட அதிகப்படியான தொழில்நுட்பமாகும். A plain WireGuard VPN on a single VPS அல்லது a Tailscale exit node ஆகியவற்றை மிகக் குறைந்த முயற்சியில் அந்தத் தேவைக்காகப் பயன்படுத்தலாம்.
இந்த stack உண்மையில் எவ்வாறு இயங்குகிறது
இதன் கட்டமைப்பு சமீபத்தில் மாற்றப்பட்டது, பழைய கட்டுரைகள் பெரும்பாலானவை பழைய கட்டமைப்பையே விவரிக்கின்றன. ஆகஸ்ட் 2026 நிலவரப்படி, v0.76.2 release-ல், quickstart script இயல்பாகவே மூன்று services கொண்ட ஒரு Compose கோப்பை உருவாக்குகிறது.
netbird-serverமேலாண்மை API, signal service, உட்பொதிக்கப்பட்ட STUN listener கொண்ட relay மற்றும் உட்பொதிக்கப்பட்ட identity provider ஆகியவற்றை உள்ளடக்கியது. பழைய release-களில் இவை தனித்தனி containers-ஆக இருந்தன, மேலும் identity provider என்பது நீங்கள் முதலில் உருவாக்க வேண்டிய தனி Zitadel நிறுவலாக இருந்தது.dashboardஎன்பது admin web console ஆகும்.traefikTLS (transport layer security)-ஐ முடிவுக்குக் கொண்டுவருகிறது (terminate) மற்றும் முதல்முறை தொடங்கும் போது Let's Encrypt-லிருந்து certificate-ஐக் கோருகிறது.
மேலும் இரண்டு services உள்ளன, ஆனால் நீங்கள் prompt-ல் ஆம் என்று கூறினால் மட்டுமே அவை இயங்கும். NetBird Proxy service உள்நாட்டு services-ஐ பொதுவான hostnames-ல் வெளியிடுகிறது. CrowdSec தவறான traffic-ஐ வடிகட்டுகிறது. ஒரு mesh-ஐ உருவாக்க இவை இரண்டும் தேவையில்லை, மேலும் சிறிய server-களில் இவை கூடுதல் memory-ஐப் பயன்படுத்தும்.
நீங்கள் ஒரே Docker container-ல் உள்ள wg-easy-லிருந்து மாறுகிறீர்கள் என்றால், இதில் பாகங்களின் எண்ணிக்கை அதிகமாக இருப்பதை உணரலாம். இது உங்களுக்கு access policies, பயனர் வாரியான கணக்குகள் மற்றும் ஒரு gateway வழியாகச் செல்லாமல் நேரடியாக ஒன்றோடொன்று இணைக்கப்படும் peers ஆகிய வசதிகளை வழங்குகிறது.
தொடங்குவதற்கு முன் உங்களுக்குத் தேவையானவை
ஒரு பொது டொமைன் பெயர் (public domain name) கட்டாயமானது. Dashboard, API மற்றும் relay ஆகிய அனைத்தும் 443 port-ல் HTTPS மூலம் இயங்குகின்றன. Traefik, Let's Encrypt-லிருந்து certificate-ஐப் பெற HTTP challenge-ஐப் பயன்படுத்துகிறது; இதற்குப் பொது இணையத்திலிருந்து உங்கள் VPS-ஐச் சென்றடையும் ஒரு டொமைன் பெயர் தேவை. வெறும் IP முகவரி இந்தச் செயல்பாட்டில் வேலை செய்யாது.
ஒரு A record-ஐ உருவாக்கி, netbird.example.com அதை உங்கள் VPS-ன் பொது IPv4 முகவரிக்குச் சுட்டிக்காட்டவும். எதையும் இயக்கும் முன் DNS propagation முடியும் வரை காத்திருக்கவும்.
dig +short netbird.example.comஇது உங்கள் server-ன் முகவரியைக் காட்ட வேண்டும். DNS propagation முடிவதற்கு முன்பே installer-ஐ இயக்கினால், முதல் தொடக்கத்திலேயே certificate கோரிக்கை தோல்வியடையும். மீண்டும் மீண்டும் தோல்வியடையும் 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உங்கள் service provider-ன் network firewall-லும் இவற்றைத் திறந்து வைக்கவும். பெரும்பாலான VPS panels-ல் இது தனிப்பட்ட கட்டுப்பாடாக இருக்கும். உங்கள் server-ன் ufw status சரியாகத் தெரிந்தாலும், இணைப்புகளை ஏற்க மறுப்பதற்கு இதுவே காரணமாக இருக்கலாம்.
STUN (session traversal utilities for NAT) என்பது ஒரு peer தனது NAT வழங்கிய பொது முகவரி மற்றும் port-ஐ அறிந்துகொள்ளும் முறையாகும்; இதன் மூலம் இரண்டு peers நேரடியாக tunnel அமைக்க முயற்சிக்கும். UDP 3478-ஐத் தடுத்தால், peers இன்னும் TCP 443-ல் relay வழியாக இணையும், எனவே எதுவும் பழுதடைந்தது போலத் தெரியாது. ஆனால், ஒவ்வொரு peer-லும் Connection type: Relayed-ஐப் பெறுவீர்கள், மேலும் அனைத்து traffic-ம் peer-to-peer என்பதற்குப் பதிலாக உங்கள் VPS வழியாகவே செல்லும்.
மென்பொருள் பக்கத்தில், Compose v2 plugin உடன் கூடிய Docker, மற்றும் jq, curl ஆகியவை தேவை. script இவை அனைத்தையும் சரிபார்க்கும், ஏதேனும் ஒன்று இல்லையென்றாலும் நின்றுவிடும். இந்த server-ல் Docker புதிது என்றால், முதலில் VPS-ல் Docker Compose-ஐச் செயல்படுத்துவது எப்படி என்பதைப் பார்க்கவும்.
bundled reverse proxy-ஐத் தவிர்த்தால் தேவைப்படும் ports
Traefik இல்லாமல் இயக்கினால், தனிப்பட்ட services நேரடியாக வெளிப்படும், அப்போது port பட்டியல் அதிகரிக்கும்:
- TCP 80, HTTP redirects
- TCP 443, HTTPS
- TCP 33073, management gRPC
- TCP 10000, signal gRPC
- TCP 33080, relay over WebSocket அல்லது QUIC
- UDP 3478, STUN
இந்த server ஏற்கனவே வேறொன்றிற்காக TLS termination செய்கிறது என்றால் மட்டுமே இதைத் தேர்ந்தெடுக்கவும். இல்லையெனில், bundled Traefik-ஐப் பயன்படுத்துவது குறைவான விதிகள் மற்றும் குறைவான தவறுகளுக்கு வழிவகுக்கும்.
Quickstart script மூலம் NetBird server-ஐ நிறுவுதல்
ஆவணப்படுத்தப்பட்ட ஒற்றை வரி கட்டளை (one-liner), புதிய release-ஐ நேரடியாக shell-க்கு அனுப்புகிறது:
curl -fsSL https://github.com/netbirdio/netbird/releases/latest/download/getting-started.sh | bashஅதற்கு பதிலாக, குறிப்பிட்ட பதிப்பைப் பயன்படுத்தவும் (pinning). latest அடிக்கடி மாறுவதால், இரண்டு வார இடைவெளியில் ஒரே கட்டளையை இயக்கினால் இரண்டு வெவ்வேறு நிறுவல்கள் கிடைக்கும்; உங்கள் configuration-ஐ எந்தப் பதிப்பு உருவாக்கியது என்பதை வட்டில் (disk) எங்கும் பதிவு செய்ய முடியாது. எனவே, ஒரு 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இந்த script முதலில் domain-ஐக் கேட்கும்:
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 வரை ஒரு config snippet-ஐ எழுதி, இணைப்புகளை உங்களிடமே விட்டுவிடும். ஏற்கனவே proxy இயங்கும் server-க்கு இது சரியானது, ஆனால் புதிய server-க்கு இது தவறு. விருப்பம் 0-ஐத் தேர்ந்தெடுத்தால், Let's Encrypt மின்னஞ்சல் முகவரியைக் கேட்கும்; இது சான்றிதழ் காலாவதி அறிவிப்புகளுக்குப் பயன்படுத்தப்படும்.
முதல் முறை நிறுவும் போது NetBird Proxy service-க்கு 'no' என்று பதிலளிக்கவும். இதற்கு proxy.netbird.example.com மற்றும் wildcard *.proxy.netbird.example.com என மேலும் இரண்டு DNS பதிவுகள் தேவைப்படும், மேலும் சாதாரண mesh அமைப்புக்கு இது தேவையில்லை. CrowdSec-க்கும் 'no' என்று பதிலளிக்கவும். இவை இரண்டையும் தேவைப்பட்டால் பிறகு சேர்த்துக்கொள்ளலாம்.
இந்த script தற்போதைய directory-ல் கோப்புகளை எழுதும்: docker-compose.yml, 600 mode-ல் config.yaml, dashboard.env, மற்றும் நீங்கள் bundled Traefik-ஐத் தேர்ந்தெடுத்தால் traefik-dynamic.yaml. இந்த directory-ஐ மிக முக்கியமான state-ஆகக் கருதவும், ஏனெனில் config.yaml-ல் தான் store-ல் உள்ள தரவை encrypt செய்யும் key உள்ளது. இதை இழந்துவிட்டால், மீண்டும் நிறுவுவதால் மட்டும் சரிசெய்ய முடியாது.
docker compose ps
docker compose logs -f netbird-serverஒவ்வொரு service-ம் running-ஐ வாசிக்க வேண்டும், மேலும் server log மீண்டும் மீண்டும் restart ஆகாமல் நிலையாக இருக்க வேண்டும். சான்றிதழைத் தனித்தனியாகக் கண்காணிக்கவும்:
docker compose logs traefik | grep -i acmeACME (automatic certificate management environment) என்பது Traefik சான்றிதழைப் பெறப் பயன்படுத்தும் protocol ஆகும். இதில் ஏற்படும் பிழைகள் பெரும்பாலும் DNS அல்லது 80-வது port மூடப்பட்டிருப்பதால் ஏற்படுபவை.
முதல் நிர்வாகி கணக்கை உருவாக்குதல்
https://netbird.example.com-ஐத் திறக்கவும். புதிய நிறுவலின்போது, இது login படிவத்திற்குப் பதிலாக setup பக்கத்திற்குச் செல்லும். மின்னஞ்சல் முகவரி, பெயர் மற்றும் கடவுச்சொல்லை உள்ளிட்டு, Create Account என்பதைக் கிளிக் செய்யவும். இதுவே முதல் நிர்வாகி கணக்காகும்; அதன் பிறகு பக்கம் login படிவத்திற்குத் திருப்பிவிடப்படும்.
இந்தக் கணக்கு NetBird-ன் சொந்த பயனர் சேமிப்பகத்தில் (user store) இருக்கும். இது netbird-server container-ல் உள்ளமைக்கப்பட்ட identity provider மூலம் இயங்குகிறது. இதில் வெளிப்புறத் தொடர்புகள் ஏதுமில்லை. ஒரு வருடத்திற்கு முன்பு இருந்த self-hosted NetBird-ஐ விட இதுவே மிகப்பெரிய மாற்றமாகும். அப்போது, ஒரு நிறுவலைச் செயல்படுத்த முதலில் Zitadel அல்லது Keycloak-ஐ அமைத்து, எதையும் தொடங்கும் முன்பே நான்கு OIDC (OpenID Connect) மதிப்புகளை setup.env-ல் நகலெடுக்க வேண்டியிருந்தது.
setup பக்கத்திற்குப் பதிலாக browser certificate எச்சரிக்கை வந்தால், certificate வழங்கப்படவில்லை என்று பொருள். இதைச் சரிசெய்த பின்னரே அடுத்த கட்டத்திற்குச் செல்லவும். ஏனெனில், dashboard அதே hostname வழியாக API-உடன் தொடர்பு கொள்கிறது; தவறான certificate இருந்தால் அது குழப்பமான பிழைகளை ஏற்படுத்தும்.
உங்கள் முதல் peer-ஐ இணைத்தல்
Mesh-ல் சேர்க்க விரும்பினால், VPS உட்பட எந்தவொரு Linux machine-லும் client-ஐ நிறுவவும்:
curl -fsSL https://pkgs.netbird.io/install.sh | shDebian மற்றும் Ubuntu-வில், இந்த script NetBird-ன் package repository-ஐ configure செய்து, apt மூலம் client-ஐ நிறுவுகிறது. எனவே, package manager-ன் கட்டுப்பாட்டிலேயே அது இருக்கும். ஒரு script-ஐ நேரடியாக shell-க்கு அனுப்புவது உங்களுக்கு விருப்பமில்லை என்றால், அதை முதலில் curl -fsSL -o install.sh https://pkgs.netbird.io/install.sh மூலம் சேமித்து, பின் sh install.sh மூலம் இயக்குவதற்கு முன் வாசித்துப் பார்க்கவும். எதுவாக இருந்தாலும், என்ன நிறுவப்பட்டது என்பதை உறுதிப்படுத்தவும்:
apt-cache policy netbirdnetbird என்பது command line client மற்றும் daemon ஆகும். netbird-ui என்பது desktop tray app; headless server-க்கு இதன் தேவை இல்லை.
இப்போது client-ஐ உங்கள் server-ஐ நோக்கிச் சுட்டிக்காட்டவும்:
sudo netbird up --management-url https://netbird.example.com--management-url-ஐத் தவிர்த்தால், client இயல்பாகவே NetBird-ன் hosted service-ல் பதிவு செய்யப்படும், ஏனெனில் அதுவே compiled-in default ஆகும். இந்த command வெற்றிகரமாக இயங்கி, machine ஒரு முகவரியைப் பெறும், ஆனால் உங்கள் self-hosted dashboard காலியாகவே இருக்கும். இது பலருக்கும் ஏற்படும் ஒரு பொதுவான தவறு.
இந்த command ஒரு URL-ஐத் தரும்; அதை browser-ல் திறந்து login-ஐ முடிக்கவும். அதன் பிறகு:
netbird status
ip addr show wt0netbird status-லிருந்து நான்கு வரிகளை வாசிக்கவும்: Management: Connected, Signal: Connected, கிடைக்கக்கூடிய அனைத்து relay-களையும் காட்டும் ஒரு Relays: வரி, மற்றும் overlay range-ல் உள்ள ஒரு NetBird IP:. wt0 என்பது NetBird உருவாக்கும் WireGuard interface ஆகும்; அதுவும் அதே முகவரியைக் கொண்டிருக்க வேண்டும்.
setup key-ஐப் பயன்படுத்தி இரண்டாவது machine-ஐ unattended முறையில் இணைத்தல்
Browser இல்லாத மற்றும் யாரும் நேரடியாக அணுக முடியாத machine-களில் browser login வேலை செய்யாது. Setup key என்பது ஒரு pre-authentication token ஆகும்; இது interactive படிநிலைகள் இன்றி ஒரு machine-ஐப் பதிவு செய்ய உதவுகிறது. Dashboard-ல் உள்ள Setup Keys பகுதிக்குச் சென்று ஒன்றை உருவாக்கவும்.
இதில் இரண்டு வகைகள் உள்ளன. One-off key என்பது சரியாக ஒரு machine-ஐ மட்டும் authenticate செய்யும், அதன் பிறகு அது காலாவதியாகிவிடும். Reusable key பல machine-களைப் பதிவு செய்ய உதவும், இதில் எத்தனை machine-களை இணைக்கலாம் என்பதற்கான வரம்பை (cap) விருப்பத்தேர்வாக அமைக்கலாம். இரண்டிற்கும் காலாவதி காலம் (expiry) உண்டு, மேலும் இவை இரண்டையுமே ஒரு குறிப்பிட்ட group-ல் தானாகச் சேர்க்க முடியும். இதனால், அந்த machine இணைந்த கணத்திலிருந்தே அந்த group-க்கான access rules அதற்குப் பொருந்தும்.
sudo netbird up --setup-key <SETUP-KEY> \
--management-url https://netbird.example.com \
--hostname build-runner-01--hostname என்பது dashboard-ல் காட்டப்படும் பெயரை அமைக்கும். இதைப் பயன்படுத்தவில்லை என்றால், machine தனக்குத்தானே என்ன பெயரை வைத்துக்கொண்டதோ அதையே எடுத்துக்கொள்ளும். ஒரே பெயரில் பல entries இருப்பது (உதாரணமாக, அனைத்தும் ubuntu என்று இருப்பது) நிர்வாகத்திற்கு உதவாது.
Containers மற்றும் குறுகிய காலம் இயங்கும் build agents-க்கு, key-ஐ உருவாக்கும்போது அதை ephemeral என்று குறிக்கவும். Ephemeral key மூலம் பதிவு செய்யப்பட்ட peers, 10 நிமிடங்களுக்கு மேல் offline-ல் இருந்தால் தானாகவே நீக்கப்படும். இது peer பட்டியலில் தேவையற்ற dead entries சேர்வதைத் தவிர்க்கும்.
Setup keys-ஐப் பயன்படுத்தத் திட்டமிடும் முன் கவனிக்க வேண்டிய ஒரு வரம்பு: ஒரு key-ஐ நீக்குவது அல்லது காலாவதியாக்குவது புதிய பதிவுகளை மட்டுமே தடுக்கும்; ஏற்கனவே அந்த key மூலம் பதிவு செய்த machine-களை அது துண்டிக்காது. ஒரு machine-ன் access-ஐ நீக்க வேண்டுமெனில், அந்த குறிப்பிட்ட peer-ஐ நீக்க வேண்டும்.
தனி அடையாள வழங்குநர் (identity provider) இன்னும் தேவையா?
சிறிய நிறுவல்கள் என்றால், தேவையில்லை. உள்ளமைக்கப்பட்ட பயனர் சேமிப்பகம் (built-in user store) dashboard மூலம் உருவாக்கப்படும் கணக்குகளைக் கையாளும்; இது ஒரு சில நபர்களுக்குப் போதுமானது.
உங்களிடம் ஏற்கனவே ஒரு அடையாள வழங்குநர் இருந்து, இரண்டாவது பயனர் பட்டியலை உருவாக்க விரும்பவில்லை என்றால், உங்களுக்கு வெளிப்புற அடையாள வழங்குநர் தேவை. OIDC-ஐ ஆதரிக்கும் எந்தவொரு வழங்குநரையும் NetBird ஏற்கும். உங்கள் வழங்குநரில் ஒரு confidential OIDC client-ஐப் பதிவு செய்யவும். பின், நான்கு மதிப்புகளைக் கொண்டு NetBird dashboard-ல் சேர்க்கவும்: name, client ID, client secret மற்றும் issuer. வழங்குநரிடம் மீண்டும் பதிவிட வேண்டிய redirect URL-ஐ NetBird உங்களுக்கு வழங்கும். Google, Microsoft Entra ID, Okta, Zitadel, Keycloak, Authentik மற்றும் Pocket ID ஆகியவற்றிற்குத் தனிப்பட்ட ஒருங்கிணைப்புகள் உள்ளன. மற்றவை அனைத்தும் generic OIDC ஆகச் சேர்க்கப்படும். நீங்கள் ஏற்கனவே Authentik-ஐ உங்கள் self-hosted single sign-on ஆக பயன்படுத்துகிறீர்கள் என்றால், இரண்டு கணக்கு பட்டியல்களைத் தவிர்த்து, ஒரே பட்டியலைப் பராமரிக்க இதுவே சரியான வழியாகும்.
வழங்குநர் ஒருவரைச் சேர்த்த பிறகும் local login வசதி இருக்கும். உள்ளமைக்கப்பட்ட ஒவ்வொரு வழங்குநரும் login பக்கத்தில் தோன்றும். வலுவான கடவுச்சொல்லுடன் ஒரு local admin கணக்கை எப்போதும் வைத்திருக்கவும். OIDC உள்ளமைப்பில் ஏதேனும் சிக்கல் ஏற்பட்டால், இது உங்களுக்குள் நுழைய உதவும்.
NetBird அல்லது Headscale: நீங்கள் எந்த control plane-ஐ இயக்க வேண்டும்?
இரண்டுமே ஒரே மாதிரியான சார்புநிலையை (dependency) நீக்குகின்றன; அதாவது, உங்கள் clients தகவல்களை அனுப்பும் hosted control server-ஐ இவை நீக்குகின்றன. ஆனால், இவை இரண்டும் ஒரே மாதிரியான திட்டங்கள் அல்ல.
Headscale என்பது Tailscale control server-ன் மறுவடிவமைப்பு ஆகும். நீங்கள் அதிகாரப்பூர்வ Tailscale clients-ஐயே தொடர்ந்து பயன்படுத்தலாம். இதில் அதிகாரப்பூர்வ web console கிடையாது. நீங்கள் users மற்றும் pre-authentication keys-ஐ ஒரு config file-ஐப் பயன்படுத்தி headscale கட்டளை மூலம் நிர்வகிக்க வேண்டும். சமூகத்தால் உருவாக்கப்பட்ட web interfaces உள்ளன, ஆனால் அவை இந்தத் திட்டத்தின் ஒரு பகுதி அல்ல. உங்கள் தரவுகள் கோப்புகளாக (files) இருக்க வேண்டும் மற்றும் மாற்றங்கள் version control-ல் இருக்க வேண்டும் என்று விரும்புபவர்களுக்கு இது ஏற்றது.
NetBird முழுமையான தயாரிப்பை வழங்குகிறது: இதற்கென சொந்த client, dashboard, உள்ளமைக்கப்பட்ட identity provider மற்றும் browser மூலம் திருத்தக்கூடிய access policies ஆகியவை உள்ளன. உங்கள் VPS-ல் இது அதிகப்படியான கூறுகளைக் கொண்டிருப்பதால், terminal-ஐப் பயன்படுத்த விரும்பாத ஒரு சக ஊழியரிடம் ஒப்படைப்பதற்கு இது மிகவும் எளிதானது.
நீங்கள் ஏற்கனவே Tailscale clients-ஐப் பயன்படுத்துபவர் என்றாலோ அல்லது மிகச்சிறிய அளவிலான control plane-ஐ விரும்பினாலோ Headscale-ஐ இயக்கவும். பல நபர்கள் peers-ஐ நிர்வகிக்க வேண்டிய சூழல் இருந்து, நீங்களாக எதையும் உருவாக்காமல் ஒரு console மற்றும் SSO வசதி வேண்டுமென்றால் NetBird-ஐ இயக்கவும்.
இந்த அமைப்பை இயக்க எவ்வளவு சிறிய VPS போதுமானது?
ஆவணப்படுத்தப்பட்ட குறைந்தபட்சத் தேவை 1 CPU மற்றும் 2 GB நினைவகம் ஆகும். பயனர் மேலாண்மை தற்போது உள்ளூர் அளவில் (local) இருப்பதால், NetBird-ன் சொந்தக் குறிப்புகளின்படி தற்போதைய குறைந்தபட்சத் தேவை 1 GB RAM-ஆக உள்ளது; பழைய அமைப்பில் முழுமையான Zitadel deployment இருந்தபோது 2 GB முதல் 4 GB வரை தேவைப்பட்டது. 2 GB-ஐத் தேர்வு செய்யவும். கூடுதல் நினைவகம் இருப்பதால், பழைய images வட்டில் இருக்கும்போதே புதிய images-ஐ upgrade செய்யும்போது பதிவிறக்க முடியும்.
சிறிய server-ல் மூன்று விஷயங்களைத் தவிர்ப்பது பாதுகாப்பானது. NetBird Proxy சேவையைத் தவிர்க்கவும்; இது உள்நாட்டுச் சேவைகளை பொதுவான hostnames-ல் வெளியிட மட்டுமே பயன்படுகிறது, peers இணைப்பிற்கும் இதற்கும் தொடர்பில்லை. CrowdSec-ஐத் தவிர்க்கவும்; இதைத் தொடக்கத்திலேயே நிறுவுவதை விட, server-ஐ பொது இணையத்தில் வெளிப்படுத்திய பிறகு பின்னர் சேர்த்துக்கொள்ளலாம். SQLite store-ஐ netbird_data volume-ல் இயல்பாகவே வைத்திருக்கவும்; deployment-ஐப் பல இயந்திரங்களுக்குப் பிரிக்கும்போதோ அல்லது அதிகப்படியான concurrency ஏற்படும்போதோ மட்டும் PostgreSQL-க்கு மாறவும். இது பின்னர் செய்யக்கூடிய migration முறையாக ஆவணப்படுத்தப்பட்டுள்ளது.
Relay என்பது தவிர்க்க முடியாத ஒரு கூறு ஆகும். இரண்டு peers-ன் NAT ஒவ்வொரு இலக்கிற்கும் வெவ்வேறு port-ஐ ஒதுக்கினால், அவற்றுக்கிடையே நேரடி tunnel உருவாக்க முடியாது; எனவே, அவை செயல்படுவதற்கு relay மட்டுமே ஒரே வழியாகும். இதை முடக்குவதால் மிகக் குறைந்த நினைவகமே மிச்சமாகும், ஆனால் இணைப்புகளில் ஏற்படும் சிக்கல்களைக் கண்டறிவது கடினமாகிவிடும்.
ஒரு server போதுமானதாக இல்லாதபோது, முதலில் relay-ஐ வேறொரு இடத்திற்கு மாற்ற வேண்டும். ஒரு தனிப்பட்ட relay-ஐ NB_LISTEN_ADDRESS, NB_EXPOSED_ADDRESS, NB_AUTH_SECRET மற்றும் NB_ENABLE_STUN ஆகியவற்றைக் கொண்டு இயக்கலாம். Relay மற்றும் முதன்மை server இரண்டிலும் shared secret ஒரே மாதிரியாக இருக்க வேண்டும், இல்லையெனில் clients அங்கீகரிக்கப்பட மாட்டார்கள்.
தோல்விக்கான காரணங்கள் மற்றும் நீங்கள் காண்பவை
Dashboard ஒரு certificate எச்சரிக்கையைக் காட்டுகிறது. Traefik ஒரு certificate-ஐப் பெறவில்லை. docker compose logs traefik | grep -i acme-ஐ இயக்கவும். இதற்கு இரண்டு காரணங்கள் உள்ளன. ஒன்று, dig +short netbird.example.com இன்னும் இந்த VPS-ஐச் சுட்டிக்காட்டவில்லை, அல்லது Let's Encrypt மற்றும் container-க்கு இடையே எங்கோ TCP 80 port மூடப்பட்டுள்ளது; இது பெரும்பாலும் ufw-ல் இல்லாமல், provider-ன் network firewall-ல் இருக்கும். மீண்டும் மீண்டும் முயற்சிக்கும் முன் காரணத்தைச் சரிசெய்யவும், ஏனெனில் தோல்வியுற்ற சரிபார்ப்புகள் rate limit செய்யப்படும், இதனால் ஒரு மணி நேரத்திற்கு உங்களால் மீண்டும் முயற்சி செய்ய முடியாது.
Client இணைக்கப்பட்டுவிட்டதாகக் கூறுகிறது, ஆனால் dashboard காலியாக உள்ளது. --management-url விடுபட்டதால், client NetBird-ன் hosted service-உடன் பதிவு செய்துள்ளது. netbird status --detail-ஐ இயக்கி, Management: வரியைப் படிக்கவும்; அது தற்போது எந்த server-உடன் தொடர்புகொள்கிறது என்பதைக் காட்டும். 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 என்று காட்டுகிறது. நேரடி tunnels உருவாகவில்லை, எனவே அனைத்து traffic-உம் உங்கள் VPS வழியாகச் செல்கிறது, இது latency-ஐ அதிகரிக்கிறது. VPS firewall மற்றும் provider firewall-ல் UDP 3478-ஐச் சரிபார்க்கவும், ஏனெனில் STUN மூலமே ஒரு peer தனது சொந்த public address மற்றும் port-ஐ அறிந்துகொள்ள முடியும். netbird status --detail கட்டளை ஒவ்வொரு peer-க்கும் Direct: false மற்றும் ICE (interactive connectivity establishment) candidate வகைகளையும் அச்சிடும், இது முயற்சி எந்த நிலை வரை சென்றுள்ளது என்பதைக் காட்டும். சில network-களில் relayed மட்டுமே சாத்தியம், அதில் தவறு ஏதுமில்லை.
ஒரு peer இணைகிறது, ஆனால் எதையும் அணுக முடியவில்லை. mesh-ல் இருப்பது என்பது இரண்டு peer-கள் பேச முடியும் என்று அர்த்தமல்ல. Access policies தான் அதைத் தீர்மானிக்கின்றன, policy இல்லாத group எதையும் அணுக முடியாது. routes மற்றும் firewalls-ஐ debug செய்வதற்கு முன் dashboard-ல் உள்ள 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 நிலை ஆகியவற்றை ஒரே archive-ஆகச் சேகரிக்கும்.
காப்புப்பிரதிகள் மற்றும் மேம்படுத்தல்கள்
முழு நிறுவலையும் இந்த இரண்டு விஷயங்களே தீர்மானிக்கின்றன: docker-compose.yml மற்றும் config.yaml ஆகியவற்றை உள்ளடக்கிய கோப்பகம் (directory), மற்றும் தரவுத்தளம் (database) மற்றும் குறியாக்க சாவிகளை (encryption keys) வைத்திருக்கும் Docker volume. இவை இரண்டையும் ஒன்றாக காப்புப்பிரதி எடுக்கவும். 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, திட்டக் கோப்பகத்தின் பெயரை வைத்து volume பெயர்களுக்கு முன்னொட்டை (prefix) சேர்க்கிறது. எனவே netbird_data என ஆவணப்படுத்தப்பட்ட volume, பொதுவாக netbird_netbird_data என்ற பெயரில் இருக்கும். முதலில் docker volume ls கட்டளையை இயக்கவும்; அது காட்டும் பெயரைப் பயன்படுத்தவும். இல்லையெனில், மேலே உள்ள docker run கட்டளை, காலியான volume-ஐ உருவாக்கி எதையும் காப்புப்பிரதி எடுக்காமல் தோல்வியடையும். காப்புப்பிரதிகளை VPS-க்கு வெளியே சேமிக்கவும். உங்களிடம் ஏற்கனவே காப்புப்பிரதி கருவி இருந்தால், restic அல்லது BorgBackup மூலம் அவற்றை வெளியக சேமிப்பகத்திற்கு மாற்றலாம்.
சர்வரை மேம்படுத்துவது என்பது ஒரு pull மற்றும் recreate செயல்முறையாகும்:
docker compose pull
docker compose up -d
docker compose psஅதைச் செய்வதற்கு முன், docker compose config | grep image: கட்டளையை இயக்கவும். latest என்று இருக்கும் எந்தவொரு tag-ம் ஒரு குறிப்பிட்ட பதிப்பிற்கு (version) மாற்றப்பட வேண்டும். நிறுவல் ஸ்கிரிப்டை (install script) நீங்கள் குறிப்பிட்ட பதிப்பிற்கு மாற்றிய அதே காரணத்திற்காக இதையும் செய்ய வேண்டும்: எந்நேரமும் என்ன இயங்குகிறது என்பது உங்களுக்குத் தெரிந்திருக்க வேண்டும், மேலும் மேம்படுத்தலில் சிக்கல் ஏற்பட்டால் பழைய பதிப்பிற்குத் திரும்ப அது உதவும். கிளையண்டுகள், அவற்றை நிறுவிய package manager மூலமாகவே மேம்படுத்தப்படும்.
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 என்று காட்டுகின்றன?
நேரடி இணைப்புகள் (direct connections) உருவாகவில்லை, எனவே traffic உங்கள் VPS-ல் உள்ள relay வழியாகச் செல்கிறது. பொதுவாக UDP 3478 port தடுக்கப்பட்டிருப்பதே இதற்குக் காரணம். இது peers தங்கள் சொந்த public முகவரி மற்றும் port-ஐக் கண்டறியப் பயன்படுத்தும் STUN port ஆகும். இதை உங்கள் VPS firewall மற்றும் உங்கள் provider-ன் தனிப்பட்ட network firewall-ல் திறந்துவிட்டு, மீண்டும் netbird status --detail-ஐ இயக்கி Direct: வரியைப் பார்க்கவும். ஒரு network-ன் NAT ஒவ்வொரு destination-க்கும் வெவ்வேறு port-ஐ ஒதுக்கினால், relay இணைப்பே சாத்தியமான ஒரே முடிவாகும்; இதில் எந்தத் தவறும் இல்லை.
எனது client இணைக்கப்பட்டுள்ளது, ஆனால் dashboard-ல் peers எதையும் காட்டவில்லை. என்ன நடந்தது?
--management-url விடுபட்டதால், client உங்கள் server-க்கு பதிலாக NetBird-ன் hosted சேவையுடன் பதிவு செய்துள்ளது. netbird status --detail அது எந்த server-உடன் தொடர்பு கொள்கிறது என்பதை 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-க்கு மாற்றாக நீங்கள் இயக்கும் server-ஐ வழங்குகின்றன. Headscale என்பது control plane மட்டுமே: இதை நீங்கள் headscale கட்டளை மற்றும் ஒரு config கோப்பு மூலம் நிர்வகிக்கிறீர்கள்; இதில் அதிகாரப்பூர்வ web console கிடையாது, மேலும் இது அதிகாரப்பூர்வ Tailscale clients-ஐ இயக்குகிறது. NetBird அதன் சொந்த client, admin dashboard மற்றும் identity provider ஒருங்கிணைப்பு ஆகியவற்றை ஒரே stack-ல் வழங்குகிறது. Headscale-ஐ இயக்குவது எளிது மற்றும் அது தனது நிலையை (state) கோப்புகளில் வைத்திருக்கும். Terminal-ஐப் பயன்படுத்தாதவர்களுக்கு NetBird-ஐக் கையாள்வது எளிது.
Self-hosted NetBird server-க்கு எந்த அளவுள்ள VPS தேவை?
ஆவணப்படுத்தப்பட்ட குறைந்தபட்ச தேவை 1 CPU மற்றும் 2 GB memory ஆகும்; 2 GB-ஐ வாங்குவதே சிறந்தது. சமீபத்திய releases-ல் identity provider தனியாக இல்லாமல் உள்ளமைக்கப்பட்டுள்ளதால், நடைமுறைத் தேவை சுமார் 1 GB ஆகக் குறைந்துள்ளது. நிறுவலின் போது விருப்பத்தேர்வாக உள்ள proxy மற்றும் CrowdSec சேவைகளைத் தவிர்த்துவிடவும், மேலும் உங்களுக்கு PostgreSQL தேவைப்படும் வரை இயல்பான SQLite store-லேயே இருக்கவும்.