SSD Nodes Learn Hosting plans →
கல்வி வழிகாட்டிகள் Matt Connorஆல் Matt Connor · புதுப்பிக்கப்பட்டது 2026-08-30

NetBird VPN server-ஐ VPS-ல் self-host செய்வது எப்படி?

NetBird mesh VPN-ஐ உங்கள் சொந்த VPS-ல் நிறுவுவதற்கான முழுமையான வழிகாட்டி. DNS, TLS அமைப்பு, setup keys மற்றும் Headscale உடனான ஒப்பீடு ஆகியவற்றை உள்ளடக்கிய விரிவான தொழில்நுட்ப கட்டுரை.

NetBird VPN server-ஐ நீங்களே self-host செய்வதால் கிடைக்கும் பயன்கள்

NetBird VPN server-ஐ நீங்களே self-host செய்யும்போது, அதன் control plane உங்கள் கட்டுப்பாட்டில் உள்ள VPS-ல் இயங்கும். இதுவே peer பட்டியல், எந்த machine எந்த machine-ஐ அணுகலாம் என்ற முடிவுகள், மற்றும் NAT (network address translation)-க்கு பின்னால் உள்ள இரண்டு peers-ஐ ஒன்றோடொன்று இணைத்தல் போன்ற பணிகளைச் செய்கிறது. தரவுப் பரிமாற்றத்திற்கான tunnels எப்போதும் WireGuard மூலமே அமையும், இவை உங்கள் machine-களுக்கு இடையே நேரடியாக encrypt செய்யப்படும். இதில் மாறுவது என்னவென்றால், உங்கள் சாதனங்களின் பட்டியல் அல்லது login விவரங்களை எந்த வெளி நிறுவனமும் வைத்திருக்காது. இதனால் உங்களுக்குக் கிடைக்கும் பயன் என்ன என்பதைத் தெளிவாகப் புரிந்துகொள்ளுங்கள், ஏனெனில் hosted control plane-ல் கூட உங்கள் traffic-ஐ encrypt செய்யும் keys இருக்காது. மேலும், ஒரு coordination server-ல் பாதிப்பு ஏற்பட்டால் அதனால் என்ன செய்ய முடியும் என்பது பலரும் நினைப்பதை விட மிகக் குறைவானதே.

NetBird உங்களுக்கு ஏற்கனவே தெரிந்த இரண்டு தொழில்நுட்பங்களுக்கு இடையில் அமைகிறது. இது ஒரு mesh overlay, எனவே அனைத்து traffic-ஐயும் ஒரே gateway வழியாக அனுப்பாமல், peers நேரடியாக ஒன்றோடொன்று இணைக்கப்படுகின்றன. இது முழுமையாக self-host செய்யக்கூடியது, எனவே இது Headscale, the self-hosted Tailscale control server-க்கு மாற்றாக அமைகிறது. நீங்கள் இதுவரை ஒரே ஒரு gateway கொண்ட tunnel-ஐ மட்டுமே பயன்படுத்தியிருந்தால், முதலில் plain WireGuard மற்றும் mesh overlay-க்கு இடையிலான வேறுபாடு என்பதைப் படியுங்கள், ஏனெனில் அந்த அடிப்படை புரிதல் இருந்தால் மட்டுமே இந்தப் பக்கத்தில் உள்ள தகவல்கள் பயனுள்ளதாக இருக்கும்.

உங்கள் அனைத்து traffic-ம் வெளியேறும் வகையில் ஒரே ஒரு server மட்டும் போதும் என்றால், mesh என்பது அந்த வேலைக்குத் தேவையானதை விட அதிகப்படியான தொழில்நுட்பமாகும். A plain WireGuard VPN on a single VPS அல்லது a Tailscale exit node ஆகியவற்றை மிகக் குறைந்த முயற்சியில் அமைக்கலாம். ஒருவேளை உங்கள் நோக்கம் machine-களை ஒன்றோடொன்று இணைப்பதற்குப் பதிலாக, ஒரு private network-ஐ மட்டும் அணுகுவதாக இருந்தால், a Tailscale subnet router on a VPS மூலம் அந்த network range-ஐ உங்கள் tailnet-ல் சேர்க்கலாம்; இதற்கு கீழே உள்ள எந்த சிக்கலான அமைப்புகளும் தேவையில்லை.

இந்த 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 ஆகும்.
  • traefik TLS (transport layer security)-ஐ முடிவுக்குக் கொண்டுவருகிறது (terminate) மற்றும் முதல்முறை தொடங்கும்போது Let's Encrypt-லிருந்து certificate-ஐக் கோருகிறது.

மேலும் இரண்டு services உள்ளன, ஆனால் நீங்கள் prompt-ல் ஆம் என்று கூறினால் மட்டுமே அவை இயங்கும். NetBird Proxy service உட்புறச் சேவைகளை public hostnames-ல் வெளியிடுகிறது. CrowdSec தவறான traffic-ஐ வடிகட்டுகிறது. ஒரு working mesh-ஐ உருவாக்க இவை இரண்டும் தேவையில்லை, மேலும் சிறிய box-களில் இவை கூடுதல் memory-ஐப் பயன்படுத்தும்.

நீங்கள் ஒரே Docker container-ல் உள்ள wg-easy-லிருந்து மாறுகிறீர்கள் என்றால், இது பாகங்களின் எண்ணிக்கையில் ஒரு பெரிய மாற்றமாகும். இது உங்களுக்கு access policies, பயனர் வாரியான கணக்குகள் மற்றும் ஒரு gateway வழியாகச் செல்லாமல் நேரடியாக ஒன்றோடொன்று இணைக்கப்படும் peers ஆகிய வசதிகளை வழங்குகிறது.

தொடங்குவதற்கு முன் உங்களுக்குத் தேவையானவை

ஒரு பொது டொமைன் பெயர் (public domain name) கட்டாயமானது. Dashboard, API மற்றும் relay ஆகிய அனைத்தும் 443 port-ல் HTTPS மூலம் இயங்குகின்றன. Traefik, Let's Encrypt-லிருந்து HTTP challenge மூலம் certificate-ஐப் பெறுகிறது; இதற்கு பொது இணையத்திலிருந்து உங்கள் 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

உங்கள் 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 வழியாகவே செல்லும்.

Software பக்கத்தில், Docker உடன் Compose v2 plugin, மற்றும் 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-ஐ உருவாக்கியது என்ற விவரம் வட்டில் இருக்காது. ஒரு குறிப்பிட்ட 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 வரை ஒரு configuration snippet-ஐ உருவாக்கி, இணைப்புகளை உங்களிடமே விட்டுவிடும். ஏற்கனவே proxy இயங்கும் server-க்கு இது சரியானது, ஆனால் புதிய server-க்கு இது பொருந்தாது. விருப்பம் 0-ஐத் தேர்ந்தெடுத்தால், certificate காலாவதி அறிவிப்புகளுக்காக Let's Encrypt மின்னஞ்சல் முகவரியைக் கேட்கும்.

முதல் நிறுவலில் NetBird Proxy service-க்கு 'no' என்று பதிலளிக்கவும். இதற்கு மேலும் இரண்டு DNS பதிவுகள் தேவைப்படும்: 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-ஐ மிக முக்கியமான தரவாகக் கருதவும், ஏனெனில் config.yaml-ல் தான் store-ல் உள்ள தரவை encrypt செய்யும் key உள்ளது. இதை இழந்துவிட்டால், மீண்டும் நிறுவுவதால் மட்டும் சரிசெய்ய முடியாது.

docker compose ps
docker compose logs -f netbird-server

ஒவ்வொரு service-ம் running-ஐ வாசிக்க வேண்டும், மேலும் server log மீண்டும் மீண்டும் restart ஆகாமல் நிலையாக இருக்க வேண்டும். Certificate-ஐத் தனியாகக் கண்காணிக்கவும்:

docker compose logs traefik | grep -i acme

ACME (automatic certificate management environment) என்பது Traefik certificate-ஐப் பெறப் பயன்படுத்தும் protocol ஆகும். இதில் ஏற்படும் பிழைகள் பெரும்பாலும் DNS அல்லது மூடப்பட்ட port 80 காரணமாகவே இருக்கும்.

முதல் நிர்வாகி கணக்கை உருவாக்குதல்

https://netbird.example.com-ஐத் திறக்கவும். புதிய நிறுவலில், இது login படிவத்திற்குப் பதிலாக setup பக்கத்திற்குச் செல்லும். மின்னஞ்சல் முகவரி, பெயர் மற்றும் கடவுச்சொல்லை உள்ளிட்டு, Create Account என்பதைக் கிளிக் செய்யவும். இதுவே முதல் நிர்வாகி கணக்காகும், அதன் பிறகு பக்கம் login படிவத்திற்குத் திருப்பிவிடப்படும்.

இந்தக் கணக்கு netbird-server container-ல் உள்ளமைக்கப்பட்ட identity provider மூலம் இயங்கும் NetBird-ன் சொந்த பயனர் சேமிப்பகத்தில் (user store) இருக்கும். இதில் வெளிப்புறத் தொடர்புகள் எதுவும் இல்லை. ஒரு வருடத்திற்கு முன்பு இருந்த 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 | sh

Debian மற்றும் Ubuntu-வில், அந்த script NetBird-ன் package repository-ஐ configure செய்து, apt மூலம் client-ஐ நிறுவுகிறது. எனவே, package manager-ன் கட்டுப்பாட்டிலேயே அது இருக்கும். ஒரு script-ஐ நேரடியாக shell-க்கு அனுப்புவது (piping) உங்களுக்கு விருப்பமில்லை என்றால், அதை முதலில் curl -fsSL -o install.sh https://pkgs.netbird.io/install.sh மூலம் சேமித்து, பின் sh install.sh மூலம் இயக்குவதற்கு முன்பு படித்துப் பார்க்கவும். எதுவாக இருந்தாலும், என்ன நிறுவப்பட்டது என்பதை உறுதிப்படுத்தவும்:

apt-cache policy netbird

netbird என்பது 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 login-ஐ முடிக்க browser-ல் திறக்க வேண்டிய ஒரு URL-ஐக் காட்டும். அதற்குப் பிறகு:

netbird status
ip addr show wt0

netbird status-லிருந்து நான்கு வரிகளைப் படிக்கவும்: Management: Connected, Signal: Connected, கிடைக்கக்கூடிய அனைத்து relay-களையும் காட்டும் ஒரு Relays: வரி, மற்றும் overlay range-ல் உள்ள ஒரு NetBird IP:. wt0 என்பது NetBird உருவாக்கும் WireGuard interface ஆகும்; அது அதே முகவரியைக் கொண்டிருக்க வேண்டும்.

Setup key மூலம் இரண்டாவது கணினியை தானியங்கி முறையில் இணைத்தல்

Browser வசதி இல்லாத மற்றும் பயனர் முன்னிலையில் இல்லாத கணினிகளுக்கு browser login முறை வேலை செய்யாது. Setup key என்பது ஒரு pre-authentication token ஆகும்; இது பயனர் தலையீடு இன்றி ஒரு கணினியை பதிவு செய்ய உதவுகிறது. Dashboard-ல் உள்ள Setup Keys பகுதிக்குச் சென்று இதை உருவாக்கலாம்.

இதில் இரண்டு வகைகள் உள்ளன. One-off key என்பது சரியாக ஒரு கணினியை மட்டும் அங்கீகரிக்கும், அதன் பிறகு அது காலாவதியாகிவிடும். Reusable key பல கணினிகளைப் பதிவு செய்ய உதவும், இதில் எத்தனை கணினிகள் இணையலாம் என்பதற்கான வரம்பை விருப்பத்திற்கேற்ப நிர்ணயிக்கலாம். இரண்டிற்கும் காலாவதி தேதி (expiry) உண்டு. மேலும், புதிய peer-ஐ ஒரு குறிப்பிட்ட group-ல் தானாகவே சேர்க்க முடியும் என்பதால், அந்த கணினி இணைந்த உடனேயே அதற்குரிய access rules அமலுக்கு வரும்.

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

--hostname என்பது dashboard-ல் காட்டப்படும் பெயரை அமைக்கும். இதைப் பயன்படுத்தவில்லை என்றால், கணினி தனக்குத்தானே வைத்திருக்கும் பெயரை அது எடுத்துக்கொள்ளும். ஒரே பெயரில் பல entries இருப்பது ubuntu நிர்வாகத்திற்கு உதவாது.

Containers மற்றும் குறுகிய காலம் இயங்கும் build agents-க்கு, key-ஐ உருவாக்கும்போது அதை ephemeral என்று குறிக்கவும். Ephemeral key மூலம் பதிவு செய்யப்பட்ட peers, 10 நிமிடங்களுக்கு மேல் offline-ல் இருந்தால் தானாகவே நீக்கப்படும். இது peer பட்டியலில் தேவையற்ற entries சேர்வதைத் தவிர்க்கும்.

Setup keys-ஐப் பயன்படுத்தும் முன் கவனிக்க வேண்டிய ஒரு வரம்பு: ஒரு key-ஐ நீக்குவது அல்லது காலாவதியாக்குவது புதிய பதிவுகளை மட்டுமே தடுக்கும்; ஏற்கனவே அந்த key மூலம் இணைந்த கணினிகளை அது துண்டிக்காது. ஒரு கணினியின் 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 ஆகியவற்றிற்கு ஏற்கனவே பெயரிடப்பட்ட ஒருங்கிணைப்புகள் (integrations) உள்ளன; மற்றவை அனைத்தும் generic OIDC ஆகச் சேர்க்கப்படும். நீங்கள் ஏற்கனவே Authentik-ஐ உங்கள் self-hosted single sign-on ஆக இயக்கி வருகிறீர்கள் என்றால், இரண்டு கணக்கு பட்டியல்களுக்குப் பதிலாக ஒரே பட்டியலைப் பராமரிக்க இதுவே சரியான வழியாகும்.

வழங்குநர் ஒருவரைச் சேர்த்த பிறகும் local login வசதி இருக்கும். உள்ளமைக்கப்பட்ட ஒவ்வொரு வழங்குநரும் login பக்கத்தில் தோன்றும். வலுவான கடவுச்சொல்லுடன் ஒரு local admin கணக்கை எப்போதும் வைத்திருங்கள். OIDC உள்ளமைவு பழுதடைந்தாலும், இந்த கணக்கு மூலம் நீங்கள் உள்ளே நுழைய முடியும்.

NetBird அல்லது Headscale: எந்த control plane-ஐ நீங்கள் இயக்க வேண்டும்?

இரண்டுமே உங்கள் clients தொடர்புகொள்ளும் hosted control server சார்ந்த சார்புநிலையை (dependency) நீக்குகின்றன. ஆனால், இவை இரண்டும் ஒரே மாதிரியான திட்டங்கள் அல்ல.

Headscale என்பது Tailscale control server-ன் மறு உருவாக்கம் ஆகும்; நீங்கள் அதிகாரப்பூர்வ Tailscale clients-ஐயே தொடர்ந்து பயன்படுத்தலாம். இதில் அதிகாரப்பூர்வ web console கிடையாது. நீங்கள் users மற்றும் pre-authentication keys-ஐ ஒரு config file-ஐப் பயன்படுத்தி headscale கட்டளை மூலம் நிர்வகிக்க வேண்டும். சமூகத்தால் உருவாக்கப்பட்ட web interfaces இருந்தாலும், அவை இந்தத் திட்டத்தின் ஒரு பகுதி அல்ல. உங்கள் state கோப்புகளாக இருக்க வேண்டும் மற்றும் மாற்றங்கள் version control-ல் இருக்க வேண்டும் என்று விரும்புபவர்களுக்கு இது ஏற்றது.

NetBird முழுமையான தயாரிப்பை வழங்குகிறது: அதன் சொந்த client, dashboard, உள்ளமைக்கப்பட்ட identity provider மற்றும் browser மூலம் திருத்தக்கூடிய access policies. உங்கள் VPS-ல் இது அதிகப்படியான பாகங்களைக் கொண்டிருப்பதால், terminal-ஐப் பயன்படுத்த விரும்பாத ஒரு சக ஊழியரிடம் ஒப்படைப்பதற்கு இது மிகவும் எளிதானது.

நீங்கள் ஏற்கனவே Tailscale clients-ல் முதலீடு செய்திருந்தால் அல்லது மிகச்சிறிய control plane-ஐ விரும்பினால் Headscale-ஐ இயக்கவும். பல நபர்கள் peers-ஐ நிர்வகிக்க வேண்டும் மற்றும் நீங்களாக எதையும் உருவாக்காமல் ஒரு console மற்றும் SSO வசதி வேண்டுமென்றால் NetBird-ஐ இயக்கவும். எதற்கும் முடிவெடுக்கும் முன், Tailscale free plan எதை உள்ளடக்கியது என்பதைச் சரிபார்க்கவும். ஏனெனில், ஆறு பயனர்கள் மற்றும் வரம்பற்ற சாதனங்களைக் கொண்ட ஒரு குழுவிற்கு hosted control plane-க்கு கட்டணம் ஏதுமில்லை, எனவே அதை நீங்களே இயக்க வேண்டிய அவசியமும் இருக்காது. அந்த வரம்பைத் தாண்டும்போது, இயந்திரங்களின் எண்ணிக்கையை விட நபர்களின் எண்ணிக்கையைப் பொறுத்து கட்டணம் உயரும். எனவே, உங்கள் குழுவிற்கு Tailscale எவ்வளவு கட்டணம் வசூலிக்கும் என்பதைக் கணக்கிடுவது, VPS செலவு மற்றும் இதற்காக நீங்கள் செலவிடும் நேரத்துடன் ஒப்பிட்டுப் பார்க்க உதவும்.

எவ்வளவு சிறிய VPS-ல் இதை இயக்க முடியும்?

ஆவணப்படுத்தப்பட்ட குறைந்தபட்ச தேவை 1 CPU மற்றும் 2 GB நினைவகம் ஆகும். பயனர் மேலாண்மை தற்போது உள்ளூர்மயமாக்கப்பட்டதால், 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-ல் இல்லாமல், சேவை வழங்குநரின் network firewall-ல் இருக்கும். மீண்டும் மீண்டும் முயற்சிக்கும் முன் காரணத்தைச் சரிசெய்யவும், ஏனெனில் தோல்வியுற்ற சரிபார்ப்புகள் rate limit-க்கு உட்பட்டவை, இதனால் ஒரு மணி நேரத்திற்கு உங்களால் மீண்டும் முயற்சி செய்ய முடியாமல் போகலாம்.

Client இணைக்கப்பட்டுள்ளதாகக் கூறுகிறது, ஆனால் dashboard காலியாக உள்ளது. --management-url விடுபட்டதால், client NetBird-ன் hosted சேவையுடன் பதிவு செய்துள்ளது. 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 மற்றும் சேவை வழங்குநரின் firewall-ல் UDP 3478-ஐச் சரிபார்க்கவும், ஏனெனில் ஒரு peer தனது சொந்த public முகவரி மற்றும் port-ஐ அறிந்துகொள்ள STUN பயன்படுகிறது. netbird status --detail கட்டளை Direct: false மற்றும் ஒவ்வொரு peer-க்குமான ICE (interactive connectivity establishment) candidate வகைகளையும் அச்சிடும், இது முயற்சி எந்த அளவு வரை சென்றுள்ளது என்பதைக் காட்டும். சில network-களில் relayed மட்டுமே சாத்தியம், அதில் தவறு ஏதுமில்லை.

ஒரு peer இணைகிறது, ஆனால் எதையும் அணுக முடியவில்லை. mesh-ல் இருப்பது என்பது இரண்டு peer-கள் பேச முடியும் என்று அர்த்தமல்ல. Access policies தான் அதைத் தீர்மானிக்கின்றன, கொள்கை (policy) இணைக்கப்படாத ஒரு group எதையும் அணுக முடியாது. routes மற்றும் firewall-களை 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 -d

Compose, volume பெயர்களுக்கு முன்னால் project கோப்பகத்தின் பெயரைச் சேர்க்கும். எனவே, 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-ல் உள்ளமைக்கப்பட்ட 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-ஐ ஒதுக்கினால், relayed என்பது மட்டுமே சாத்தியமான முடிவாகும்; இதில் எந்தத் தவறும் இல்லை.

எனது client இணைக்கப்பட்டுள்ளது, ஆனால் dashboard-ல் peers எதையும் காட்டவில்லை. என்ன நடந்தது?

--management-url விடுபட்டதால், client உங்கள் server-க்கு பதிலாக NetBird-ன் hosted service-உடன் பதிவு செய்துள்ளது. netbird status --detail கட்டளையானது அது எந்த server-உடன் தொடர்புகொள்கிறது என்பதை Management: வரியில் காட்டும். எனவே, https://api.netbird.io:443 போன்ற ஒரு மதிப்பு இருந்தால், அது தவறான server-ஐக் குறிக்கிறது. 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 file மூலம் நிர்வகிக்கிறீர்கள். இதில் அதிகாரப்பூர்வ web console கிடையாது, மேலும் இது அதிகாரப்பூர்வ Tailscale clients-ஐ இயக்குகிறது. NetBird அதன் சொந்த client, admin dashboard மற்றும் identity provider integration ஆகியவற்றை ஒரே 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-லேயே இருக்கவும்.