عن المشروع

Headscale هو تطبيق مفتوح المصدر وقابل للاستضافة الذاتية لخادم تحكم Tailscale. Tailscale هو VPN حديث مبني على WireGuard ويعمل كشبكة تراكب بين أجهزة الكمبيوتر، باستخدام اجتياز NAT. في حين أن معظم Tailscale مفتوح المصدر، فإن خادم التحكم ليس كذلك؛ يسد Headscale هذه الفجوة. يعمل خادم التحكم كنقطة تبادل للمفاتيح العامة لـ WireGuard بين العقد في شبكة Tailscale. ويقوم بتعيين عناوين IP للعملاء، وإنشاء حدود بين المستخدمين، وتمكين مشاركة الأجهزة بين المستخدمين، وكشف المسارات المعلنة للعقد. tailnet هي الشبكة الخاصة التي يعينها Tailscale لمستخدم أو مؤسسة. هدف التصميم: يهدف Headscale إلى تزويد المستضيفين الذاتيين والهواة بخادم مفتوح المصدر لمشاريعهم ومختبراتهم. وهو ينفذ عمدًا نطاقًا ضيقًا — شبكة tailnet واحدة — مناسبًا للاستخدام الشخصي أو لمؤسسة صغيرة مفتوحة المصدر. المشروع غير مرتبط بشركة Tailscale Inc.، على الرغم من أن أحد القائمين على الصيانة النشطين موظف لدى Tailscale ويُسمح له بالمساهمة خلال ساعات العمل؛ وتتم مراجعة تلك المساهمات من قبل القائمين الآخرين على الصيانة. يحدد القائمون على الصيانة اتجاه المشروع معًا، وفقًا لمبدأ خدمة مجتمع المستضيفين الذاتيين والمتحمسين والهواة مع الحفاظ على استدامة المشروع. يتم نشر التوثيق لكل من الإصدارات المستقرة والتطويرية، ويُنصح المستخدمون بتحديد وسم GitHub المطابق لإصدارهم المُطلق، نظرًا لأن الفرع الرئيسي قد يحتوي على تغييرات غير مُطلقة. تتوفر إصدارات التطوير من الفرع الرئيسي كصور حاويات وملفات ثنائية. يلاحظ المشروع أنه لا يدعم أو يشجع استخدام الوكلاء العكسي والحاويات لتشغيل Headscale. تتوفر وحدة NixOS في دليل nix/. تتطلب المساهمة أحدث إصدار من Go و Buf (مولّد Protobuf). يُوصى باستخدام Nix لإعداد بيئة التطوير عبر nix develop، الذي يثبّت الأدوات ويوفر بيئة shell مطابقة لبيئة القائمين على الصيانة. تتضمن قواعد نمط الكود golangci-lint و golines و gofumpt للغة Go؛ و buf و clang-format لـ Protobuf؛ و mdformat للتوثيق؛ و prettier للملفات الأخرى. تُشغَّل الاختبارات عبر make test والبناء عبر make build؛ وتتطلب تغييرات Protobuf تنفيذ make generate. ينشر المشروع أيضًا سياسة ذكاء اصطناعي ودليل مساهمة، ويحافظ على مجتمع على Discord.