Headscale - Tailscale कंट्रोल सर्वर का self-hosted open source इम्प्लीमेंटेशन
(github.com/juanfont)- Headscale एक ऐसा प्रोजेक्ट है जो Tailscale कंट्रोल सर्वर का open source, self-hosted इम्प्लीमेंटेशन प्रदान करता है, और self-hoster तथा hobby developer के प्रोजेक्ट और लैब environment को लक्ष्य बनाता है
- Tailscale, WireGuard पर आधारित एक आधुनिक VPN है, जो NAT traversal का उपयोग करके नेटवर्क के कंप्यूटरों के बीच overlay network की तरह काम करता है
- Tailscale का कंट्रोल सर्वर नोड्स के बीच WireGuard public key exchange, client IP assignment, user boundaries बनाना, users के बीच machines share करना, और nodes द्वारा advertise किए गए routes को expose करने का काम करता है
- Headscale, व्यक्तिगत उपयोग या छोटे open source संगठनों के लिए उपयुक्त single Tailscale network (tailnet) का सीमित दायरे वाला इम्प्लीमेंटेशन देता है
- यह प्रोजेक्ट Tailscale Inc. से संबंधित नहीं है, और Headscale चलाने के लिए reverse proxy और containers के उपयोग को support या recommend नहीं करता
Headscale का उद्देश्य और दायरा
- Headscale का लक्ष्य Tailscale कंट्रोल सर्वर का self-hosted open source विकल्प प्रदान करना है
- लक्षित उपयोगकर्ता self-hoster, hobby developer, और व्यक्तिगत प्रोजेक्ट व लैब environment के उपयोगकर्ता हैं
- इसका इम्प्लीमेंटेशन दायरा जानबूझकर सीमित रखा गया है, और यह single tailnet प्रदान करता है
- व्यक्तिगत उपयोग के लिए उपयुक्त
- छोटे open source संगठनों के लिए भी उपयुक्त
Tailscale और कंट्रोल सर्वर की भूमिका
- Tailscale, WireGuard के ऊपर बना एक आधुनिक VPN है
- Tailscale, नेटवर्क के कंप्यूटरों के बीच overlay network की तरह काम करता है और NAT traversal का उपयोग करता है
- Tailscale में कुछ GUI clients और कंट्रोल सर्वर को छोड़कर बाकी सभी components open source हैं
- जिन GUI clients को अपवाद के रूप में बताया गया है, वे Windows और macOS/iOS जैसे proprietary OS के clients हैं
- कंट्रोल सर्वर Tailscale नेटवर्क नोड्स के बीच WireGuard public key exchange point के रूप में काम करता है
- client IP addresses assign करता है
- users के बीच boundaries बनाता है
- users के बीच machines share करने में सक्षम बनाता है
- nodes द्वारा advertise किए गए routes को expose करता है
- Tailscale network, यानी tailnet, वह private network है जो Tailscale किसी व्यक्तिगत user या organization को assign करता है
दस्तावेज़ और version संबंधी सावधानियाँ
- जिस release version का आप उपयोग कर रहे हैं, उसके अनुरूप example configuration देखने के लिए हमेशा वही GitHub tag चुनना चाहिए
mainbranch में ऐसे बदलाव हो सकते हैं जो अभी release नहीं हुए हैं- दस्तावेज़ stable version और development version, दोनों रूपों में उपलब्ध हैं
- feature list के लिए Features दस्तावेज़ देखने का निर्देश दिया गया है
- client और operating system support की सीमा Client and operating system support दस्तावेज़ में देखने का निर्देश दिया गया है
रन करना और build
- Headscale चलाने के लिए reverse proxy और containers के उपयोग को support या recommend नहीं किया जाता
- रन करने के तरीकों के लिए आधिकारिक दस्तावेज़ देखने का निर्देश दिया गया है
- NixOS उपयोगकर्ताओं के लिए module
nix/directory में उपलब्ध है mainbranch के development builds container images और binaries के रूप में उपलब्ध हैं- अधिक जानकारी के लिए development builds दस्तावेज़ देखें
प्रोजेक्ट संबंध और योगदान
- यह प्रोजेक्ट Tailscale Inc. से संबंधित नहीं है
- Headscale के सक्रिय maintainers में से एक Tailscale में employed है और काम के समय में इस प्रोजेक्ट में योगदान दे सकता है
- उस maintainer के contributions की समीक्षा अन्य maintainers करते हैं
- maintainers, self-hoster, power users, और hobby developer community को support करते हुए एक sustainable project बनाने के सिद्धांत के तहत मिलकर प्रोजेक्ट की दिशा तय करते हैं
- contributors को CONTRIBUTING.md पढ़ना चाहिए
विकास environment और workflow
- योगदान के लिए नवीनतम Go और Buf की आवश्यकता है
- Buf का उपयोग Protobuf generator के रूप में होता है
- development environment सेटअप के लिए Nix का उपयोग recommend किया गया है
nix developचलाने पर आवश्यक tools install होते हैं और shell उपलब्ध होती है- यह तरीका Headscale maintainers के समान development environment सुनिश्चित करता है
- Go code को
golangci-lintसे lint किया जाता है, औरgolines,gofumptसे format किया जाता हैgolineswidth 88 पर सेट है- commit से पहले
make lintऔरmake fmtचलाने की recommendation है
- Proto code को
bufसे lint औरclang-formatसे format किया जाता है - दस्तावेज़ों को
mdformatऔर Markdown·YAML सहित बाकी फ़ाइलों कोprettierसे format किया जाता है proto/में बदलाव होने पर Protobuf से Go code generation फिर से चलानी होती है- command है
make generate - review आसान बनाने के लिए
gen/के बदलाव अलग commit में रखने की recommendation है
- command है
- test और build क्रमशः
make test,make buildसे चलाए जाते हैं - recommended workflow है
nix developके बादmake test,make buildचलाना- यदि dependencies को सीधे manage किया जा रहा हो, तो Make सीधे उपयोग किया जा सकता है
- अगर आवश्यक tools नहीं हों, तो Makefile warning देता है और
nix developचलाने का सुझाव देता है - उपलब्ध targets
make helpसे देखे जा सकते हैं
1 टिप्पणियां
Hacker News की राय
हर कुछ महीनों में मैं इस repository पर वापस आकर देखता हूं कि Tailnet lock आखिरकार काम करने लगा या नहीं, और इस बीच किसी ने security audit किया या नहीं
अफसोस, दोनों में कोई प्रगति नहीं दिखती, इसलिए यह बात और अनिश्चित होती जा रही है कि मैं इसे अपने infrastructure के core component के रूप में कितना भरोसेमंद मान सकता हूं
Tailscale SaaS का आधार यह है कि यह firewall को bypass करने वाली tunnel बनाता है, और उस tunnel के जरिए क्या route करना है, इसे user को सहज और integrated तरीके से control करने देता है
Headscale ने firewall bypass और advanced NAT traversal तो अच्छी तरह कर लिया लगता है, लेकिन सवाल है कि जिस security को अभी bypass किया गया है, उसकी भरपाई करने लायक अपनी security यह दे पाता है या नहीं
अगर user के पास यह समझने या reject करने का कोई तरीका नहीं है कि control server clients को क्या करने को कह रहा है, और server code का security audit भी बिल्कुल नहीं है, तो यह काफी साहसिक choice लगती है
मुझे लगा था कि यह Tailscale की default backend services के ऊपर रखा गया एक control layer है; क्या यह connections को किसी नए तरीके से broker करता है?
मैं ZeroTier काफी इस्तेमाल करता हूं, लेकिन Tailscale से ज्यादा परिचित नहीं हूं, इसलिए यह obvious सवाल हो सकता है
अगर self-hosted orchestration server में रुचि है, तो Netbird भी देखने लायक है
यह मिलता-जुलता tool है, जिसका server भी open source में उपलब्ध है, और self-hosted control server के साथ अच्छी GUI और paid version के features मिलते हैं
https://netbird.io/knowledge-hub/tailscale-vs-netbird
यह मजबूत, powerful और feature-rich लगता है, लेकिन Headscale self-hosting कहीं ज्यादा सरल है और इसकी requirements भी कम हैं
अभी Tailscale भी चल रहा है, लेकिन मैं इसे धीरे-धीरे हटाकर पूरी तरह Netbird पर जाने के करीब पहुंच रहा हूं
संबंधित GitHub issue यहां है
https://github.com/netbirdio/netbird/issues/1103
title में project का नाम Headscale डालना अच्छा रहेगा
Headscale HN पर कई बार आ चुका project है
अगर Headscale instances के बीच peering/federation support करे तो शानदार होगा। शायद ACL rework के बाद
मुख्य समस्याओं में से एक address conflict है
प्रस्ताव यह है: Unique Local Address (ULA) range का IPv6-only overlay network तय किया जाए, और बाकी 121 bits को device address के लिए निचले 20 bits (करीब 10 लाख) और server public key hash के रूप में ऊपरी 101 bits में बांटा जाए
दूसरे instance की public key जोड़कर federation की जाए, और policies व ACL से nodes के बीच communication manage किया जाए
मुझे यह अच्छा idea लगता है, लेकिन 2023 में जब इसे उठाया गया था, maintainer kradalby ने इसे scope से बाहर बताया था: https://github.com/juanfont/headscale/issues/1370
मैं Headscale को आधे साल से अच्छी तरह इस्तेमाल कर रहा हूं
यह इतना अच्छा है कि समझ नहीं आता पहले Tailscale network के बिना कैसे काम चलाता था
यह OpenBSD में packaged है, और मैं उसी package को server के रूप में इस्तेमाल कर रहा हूं
मुझे Headscale पसंद है, और अभी-अभी production में डाला है; यह बहुत अच्छा चल रहा है
login के लिए Gmail domain इस्तेमाल करता हूं, और बड़ा फायदा यह है कि users अपने devices खुद register कर सकते हैं
पुराने OpenVPN में ops team को certificates और settings खुद भेजनी पड़ती थीं
इकलौती कमी यह है कि users गलती से अपने server के बजाय Tailscale login server से connect कर लेते हैं और फिर समझ नहीं पाते कि service access क्यों नहीं हो रही
user groups के आधार पर accessible services configure कर रहा हूं
अभी भी पुराने version का Headscale इस्तेमाल कर रहा हूं, क्योंकि कुछ integrations को नए control plane पर port करना बाकी है
headscale node list | wcके हिसाब से करीब 250 nodes हैं, जिनमें ज्यादातर servers हैंTailscale का routing table और firewall rules में जादुई तरीके से हाथ डालना मुझे खास पसंद नहीं है, लेकिन कुल मिलाकर यह समस्या नहीं बनी और काफी अच्छी तरह काम किया
कई उपयोग मामलों में, जैसे mobile access या macOS GUI में, आधिकारिक Tailscale client में control server सेट करने की क्षमता बनी रहनी चाहिए, तभी Headscale इस्तेमाल किया जा सकता है
Tailscale में जब अनिवार्य रूप से quality degradation शुरू होगा, उसी पल यह feature गायब हो जाएगा
अभी मैं Tailscale से बहुत संतुष्ट customer हूं, लेकिन पहले दूसरी कंपनियों के बिक जाने या venture funding खत्म हो जाने पर कई बार भुगत चुका हूं, इसलिए यह कह रहा हूं
ऐसा होना समझ में आता है। Headscale मुख्य रूप से homelab users और छोटे hobby users इस्तेमाल करते हैं, और यह Pulsesecure, Cisco Anyconnect, GlobalProtect से नहीं बल्कि self-hosted OpenVPN या WireGuard से compete करता है
यह उन लोगों को Tailscale से परिचित कराने का रास्ता है जो खाली समय में नई तकनीक पसंद करते हैं, लेकिन infrastructure पर control छोड़ना नहीं चाहते
वही लोग Tailscale की expertise और enthusiasm अपने workplace में ले जाते हैं
कंपनियां, जब तक IT infrastructure management उनकी core competency न हो, आम तौर पर इसे खास करना नहीं चाहतीं
बेशक कुछ कंपनियां Tailscale के main product के बजाय Headscale चुनेंगी, लेकिन company size और रकम को देखते हुए उनकी संख्या कम होने की संभावना है
यह revenue cost जैसा है, और Facebook ads या Silicon Valley की roadside billboards से बहुत अलग नहीं है
काम पर Tailscale इस्तेमाल न कर पाने की वजह यह है कि traffic ऐसे servers के जरिए route होता है जिन्हें हम control नहीं कर सकते
मैं काम पर सचमुच Tailscale इस्तेमाल करना चाहता हूं, और यह कई समस्याएं हल कर देगा
अगर port खोलना पड़े तो मैं स्वीकार कर सकता हूं, लेकिन उस port के जरिए traffic tunnel करना बहुत चिंता वाली बात है
दिलचस्प लग रहा है। WireGuard + OpenWrt setup की तुलना में इसमें क्या अतिरिक्त value है, यह जानना चाहूंगा
centrally managed ACL की constraints के तहत यह बस काम करता है
कभी-कभी Tailscale को “सिर्फ WireGuard orchestrator” कहकर कमतर आंका जाता है, लेकिन असल में यह उससे काफी ज्यादा है
product perspective से WireGuard सिर्फ implementation detail है
मैंने पहले Headscale UI को बहुत basic माना था, इसलिए Netbird चुना था, लेकिन कुछ वर्षों में शायद वह बेहतर हो गया हो
यह बहुत सारे clients पर चलता है, और मेरे Apple TV भी Tailscale network से जुड़े हुए हैं
setup में करीब 1 मिनट लगा और यह gateway की तरह भी काम कर सकता है
Tailscale या बाहर hosted Headscale के साथ इसे ऐसे इस्तेमाल किया जा सकता है
अगर Tailscale coordination server compromise हो जाए और Tailnet lock enabled हो, तो मेरे devices के compromise होने का risk कितना होगा, यह जानना चाहूंगा