2 पॉइंट द्वारा GN⁺ 2025-04-04 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 चुनना चाहिए
  • main branch में ऐसे बदलाव हो सकते हैं जो अभी 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 में उपलब्ध है
  • main branch के development builds container images और binaries के रूप में उपलब्ध हैं

प्रोजेक्ट संबंध और योगदान

  • यह प्रोजेक्ट 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 किया जाता है
    • golines width 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 है
  • 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 टिप्पणियां

 
GN⁺ 2025-04-04
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 लगती है

    • Tailnet lock Headscale में Tailscale की तुलना में बहुत कम अहम लगता है, क्योंकि Headscale infrastructure को आप खुद control करते हैं
    • मुझे उत्सुकता है कि क्या Headscale ने वाकई वे features खुद implement किए हैं
      मुझे लगा था कि यह Tailscale की default backend services के ऊपर रखा गया एक control layer है; क्या यह connections को किसी नए तरीके से broker करता है?
      मैं ZeroTier काफी इस्तेमाल करता हूं, लेकिन Tailscale से ज्यादा परिचित नहीं हूं, इसलिए यह obvious सवाल हो सकता है
    • maintainers में से एक अब Tailscale में काम करता है
    • इससे संबंधित जानकारी के लिए https://github.com/juanfont/headscale/issues/2416 देख सकते हैं
  • अगर 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

    • Headscale से तुलना करें तो Netbird में सचमुच बहुत सारे moving parts हैं
      यह मजबूत, powerful और feature-rich लगता है, लेकिन Headscale self-hosting कहीं ज्यादा सरल है और इसकी requirements भी कम हैं
    • मैं Tailscale से Netbird पर धीरे-धीरे migrate कर रहा हूं, और Tailscale द्वारा पूरा CGNAT route अपने कब्जे में लेने जैसी अजीब हरकत को छोड़ दें तो यह बहुत अच्छा काम करता है
      अभी Tailscale भी चल रहा है, लेकिन मैं इसे धीरे-धीरे हटाकर पूरी तरह Netbird पर जाने के करीब पहुंच रहा हूं
    • मैं Netbird इस्तेमाल करना चाहता हूं, लेकिन इसमें अभी Tailscale के tsnet जैसी Go binary में embed की जा सकने वाली सुविधा नहीं है
      संबंधित GitHub issue यहां है
      https://github.com/netbirdio/netbird/issues/1103
    • IPv6 न होना सचमुच घातक कमी है: https://github.com/netbirdio/netbird/issues/46
    • मुझे उत्सुकता है कि क्या Netbird भी Tailscale की तरह sophisticated NAT traversal करता है
  • 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 में डाला है; यह बहुत अच्छा चल रहा है

    • मैं Headscale को 2.5 साल से चला रहा हूं और यह काफी अच्छा रहा है
      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 में जादुई तरीके से हाथ डालना मुझे खास पसंद नहीं है, लेकिन कुल मिलाकर यह समस्या नहीं बनी और काफी अच्छी तरह काम किया
    • क्या आपका मतलब है कि इसे पूरी company के लिए internal service के रूप में deploy किया है
  • कई उपयोग मामलों में, जैसे mobile access या macOS GUI में, आधिकारिक Tailscale client में control server सेट करने की क्षमता बनी रहनी चाहिए, तभी Headscale इस्तेमाल किया जा सकता है
    Tailscale में जब अनिवार्य रूप से quality degradation शुरू होगा, उसी पल यह feature गायब हो जाएगा
    अभी मैं Tailscale से बहुत संतुष्ट customer हूं, लेकिन पहले दूसरी कंपनियों के बिक जाने या venture funding खत्म हो जाने पर कई बार भुगत चुका हूं, इसलिए यह कह रहा हूं

    • non-open-source operating systems के GUI हिस्से को छोड़ दें, तो ज्यादातर Tailscale clients open source ही नहीं हैं?
    • अगर मुझे सही याद है, तो Tailscale ने कहीं कहा था कि Headscale उल्टा revenue के लिए positive है
      ऐसा होना समझ में आता है। 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 में मेरी सबसे बड़ी शिकायत client, खासकर mobile client की battery usage है
      काम पर Tailscale इस्तेमाल न कर पाने की वजह यह है कि traffic ऐसे servers के जरिए route होता है जिन्हें हम control नहीं कर सकते
      मैं काम पर सचमुच Tailscale इस्तेमाल करना चाहता हूं, और यह कई समस्याएं हल कर देगा
      अगर port खोलना पड़े तो मैं स्वीकार कर सकता हूं, लेकिन उस port के जरिए traffic tunnel करना बहुत चिंता वाली बात है
  • दिलचस्प लग रहा है। WireGuard + OpenWrt setup की तुलना में इसमें क्या अतिरिक्त value है, यह जानना चाहूंगा

    • devices बिना manual setup के, complex NAT के पीछे होने पर भी आपस में peer-to-peer connect हो जाते हैं
      centrally managed ACL की constraints के तहत यह बस काम करता है
      कभी-कभी Tailscale को “सिर्फ WireGuard orchestrator” कहकर कमतर आंका जाता है, लेकिन असल में यह उससे काफी ज्यादा है
      product perspective से WireGuard सिर्फ implementation detail है
    • यह mesh VPN है, इसलिए peers सीधे communicate करते हैं और extra latency नहीं होती
      मैंने पहले Headscale UI को बहुत basic माना था, इसलिए Netbird चुना था, लेकिन कुछ वर्षों में शायद वह बेहतर हो गया हो
    • Tailscale का value proposition है: ऐसा WireGuard जिसे थोड़े-बहुत technical लोग भी खुद setup और manage कर सकें
      यह बहुत सारे clients पर चलता है, और मेरे Apple TV भी Tailscale network से जुड़े हुए हैं
      setup में करीब 1 मिनट लगा और यह gateway की तरह भी काम कर सकता है
    • कुछ लोगों के पास static IP नहीं होता, या वे नहीं चाहते कि उनके home network में कोई चीज listening करे
      Tailscale या बाहर hosted Headscale के साथ इसे ऐसे इस्तेमाल किया जा सकता है
  • अगर Tailscale coordination server compromise हो जाए और Tailnet lock enabled हो, तो मेरे devices के compromise होने का risk कितना होगा, यह जानना चाहूंगा