
headscale v0.29.3
تطبيق مفتوح المصدر ومستضاف ذاتيًا لخادم التحكم في Tailscale

تطبيق مفتوح المصدر ومُستضاف ذاتيًا لخادم التحكم الخاص بـ Tailscale.
انضم إلى خادم Discord الخاص بنا للدردشة.
ملاحظة: اختر دائمًا نفس وسم GitHub الخاص بالإصدار الذي تستخدمه
لضمان حصولك على مثال التكوين الصحيح. قد يحتوي فرع main على
تغييرات غير مُصدَرة. تتوفر الوثائق لكل من الإصدارات المستقرة وإصدارات التطوير:
ما هو Tailscale
Tailscale هو شبكة VPN حديثة مبنية فوق Wireguard. وهو يعمل كشبكة تراكبية (overlay network) بين أجهزة الكمبيوتر في شبكاتك - باستخدام اختراق NAT.
كل شيء في Tailscale مفتوح المصدر، باستثناء عملاء واجهة المستخدم الرسومية لأنظمة التشغيل الاحتكارية (Windows وmacOS/iOS)، وخادم التحكم.
يعمل خادم التحكم كنقطة تبادل للمفاتيح العامة لـ Wireguard الخاصة بالعُقد في شبكة Tailscale. فهو يخصص عناوين IP للعملاء، وينشئ الحدود بين كل مستخدم، ويُمكّن مشاركة الأجهزة بين المستخدمين، ويكشف المسارات المُعلنة لعُقدك.
شبكة Tailscale (tailnet) هي شبكة خاصة يخصصها Tailscale لمستخدم من حيث المستخدمين الخاصين أو لمؤسسة ما.
هدف التصميم
يهدف Headscale إلى تنفيذ بديل مفتوح المصدر ومُستضاف ذاتيًا لخادم التحكم الخاص بـ Tailscale. هدف Headscale هو تزويد المستضيفين الذاتيين والهواة بخادم مفتوح المصدر يمكنهم استخدامه لمشاريعهم ومختبراتهم. وهو ينفذ نطاقًا ضيقًا، وهو شبكة Tailscale واحدة (tailnet)، مناسبة للاستخدام الشخصي، أو لمؤسسة مفتوحة المصدر صغيرة.
دعم Headscale
إذا أعجبك headscale ووجدته مفيدًا، فهناك أزرار للرعاية والتبرع
متاحة في المستودع.
الميزات
يُرجى الاطلاع على "الميزات" في الوثائق.
دعم أنظمة تشغيل العملاء
يُرجى الاطلاع على "دعم العملاء وأنظمة التشغيل" في الوثائق.
تشغيل headscale
يُرجى ملاحظة أننا لا ندعم ولا نشجع استخدام الوكلاء العكسيين (reverse proxies) والحاويات لتشغيل Headscale.
يُرجى إلقاء نظرة على الوثائق.
لمستخدمي NixOS، تتوفر وحدة (module) في nix/.
عمليات البناء من main
تتوفر عمليات البناء التطويرية من فرع main كصور حاويات و
ملفات ثنائية. راجع وثائق عمليات البناء التطويرية
للحصول على التفاصيل.
المحاضرات
- Fosdem 2026 (فيديو): Headscale & Tailscale: The complementary open source clone
- قدّمها Kristoffer Dalby
- Fosdem 2023 (فيديو): Headscale: How we are using integration testing to reimplement Tailscale
- قدّمها Juan Font Alonso وKristoffer Dalby
إخلاء المسؤولية
هذا المشروع غير مرتبط بشركة Tailscale Inc.
ومع ذلك، فإن أحد المشرفين النشطين على Headscale موظف لدى Tailscale ويُسمح له بقضاء ساعات عمل في المساهمة في المشروع. تتم مراجعة مساهمات هذا المشرف من قبل مشرفين آخرين.
يعمل المشرفون معًا على تحديد اتجاه المشروع. المبدأ الأساسي هو خدمة مجتمع المستضيفين الذاتيين والمتحمسين والهواة - مع الحفاظ على مشروع مستدام.
المساهمة
يُرجى قراءة ملف CONTRIBUTING.md.
ألقِ نظرة أيضًا على AI_POLICY.md.
المتطلبات
للمساهمة في headscale ستحتاج إلى أحدث إصدار من Go وBuf (مولّد Protobuf).
نوصي باستخدام Nix لإعداد بيئة تطوير. يمكن القيام بذلك
عبر nix develop، والذي سيثبّت الأدوات ويمنحك صدفة (shell).
هذا يضمن حصولك على نفس بيئة التطوير التي يستخدمها مشرفو headscale.
أسلوب الكود
لضمان قدر من الاتساق مع تزايد عدد المساهمات، اعتمد هذا المشروع قواعد للتدقيق (linting) والأسلوب/التنسيق:
يتم تدقيق كود Go باستخدام golangci-lint و
تنسيقه باستخدام منسّقات golangci-lint
(gofumpt، gci، goimports).
يرجى تهيئة محرّرك لتشغيل الأدوات أثناء التطوير واحرص على
تشغيل make lint وmake fmt قبل إجراء commit لأي كود.
يتم تدقيق كود Proto باستخدام buf و
تنسيقه باستخدام clang-format.
يتم تنسيق المستندات باستخدام mdformat.
يتم تنسيق الباقي (Markdown، YAML، إلخ) باستخدام prettier.
راجع .golangci.yaml وMakefile للاطلاع على التهيئة المحددة.
تثبيت أدوات التطوير
- Go
- Buf
- أدوات Protobuf
التثبيت والتفعيل:
nix develop
الاختبار والبناء
تتطلب بعض أجزاء المشروع توليد شيفرة Go من Protobuf
(إذا تم إجراء تغييرات في proto/) ويجب إعادة توليدها باستخدام:
make generate
ملاحظة: يُرجى إيداع التغييرات من gen/ في commit منفصل لتسهيل المراجعة.
لتشغيل الاختبارات:
make test
لبناء البرنامج:
make build
سير عمل التطوير
نوصي باستخدام Nix لإدارة التبعيات لضمان توفر جميع الأدوات المطلوبة لديك. إذا كنت تفضّل إدارة التبعيات بنفسك، يمكنك استخدام Make مباشرةً:
مع Nix (موصى به):
nix develop
make test
make build
مع الاعتماديات الخاصة بك:
make test
make build
سيُنبّهك ملف Makefile إذا كانت أي أدوات مطلوبة مفقودة، ويقترح تشغيل nix develop. شغّل make help لعرض جميع الأهداف المتاحة.
المساهمون
صُنع باستخدام contrib.rocks.