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

تطبيق مفتوح المصدر ومستضاف ذاتيًا لخادم تحكم Tailscale.
انضم إلى خادم Discord للدردشة.
ملاحظة: اختر دائمًا نفس علامة GitHub مثل الإصدار الذي تستخدمه لضمان حصولك على مثال التكوين الصحيح. قد يحتوي الفرع main على تغييرات غير منشورة. الوثائق متاحة للإصدارات المستقرة والتطويرية:
Tailscale هو VPN حديث مبني على Wireguard. يعمل كشبكة تراكبية بين أجهزة شبكاتك - باستخدام اجتياز NAT.
كل شيء في Tailscale هو مفتوح المصدر، باستثناء عملاء الواجهة الرسومية لأنظمة التشغيل الاحتكارية (Windows و macOS/iOS)، وخادم التحكم.
يعمل خادم التحكم كنقطة تبادل للمفاتيح العامة لـ Wireguard بين العُقد في شبكة Tailscale. يقوم بتعيين عناوين IP للعملاء، وإنشاء الحدود بين كل مستخدم، وتمكين مشاركة الأجهزة بين المستخدمين، وكشف المسارات المُعلنة للعُقد.
شبكة Tailscale (tailnet) هي شبكة خاصة يعينها Tailscale لمستخدم إما مستخدم خاص أو مؤسسة.
يهدف Headscale إلى تنفيذ بديل مفتوح المصدر ومستضاف ذاتيًا لخادم تحكم Tailscale. هدف Headscale هو توفير خادم مفتوح المصدر يمكن لهواة الاستضافة الذاتية والهواة استخدامه في مشاريعهم ومعاملهم. ينفذ نطاقًا محدودًا، وهو شبكة Tailscale واحدة (tailnet)، مناسبة للاستخدام الشخصي أو لمؤسسة صغيرة مفتوحة المصدر.
إذا كنت تحب headscale وتجده مفيدًا، توجد أزرار للرعاية والتبرع في المستودع.
يرجى الاطلاع على "الميزات" في الوثائق.
يرجى الاطلاع على "دعم العميل وأنظمة التشغيل" في الوثائق.
يرجى ملاحظة أننا لا ندعم ولا نشجع استخدام الوكلاء العكسي والحاويات لتشغيل Headscale.
يرجى إلقاء نظرة على الوثائق.
لمستخدمي NixOS، تتوفر وحدة في nix/.
mainإصدارات التطوير من الفرع main متاحة كصور حاوية وملفات تنفيذية. راجع وثائق إصدارات التطوير للتفاصيل.
هذا المشروع ليس مرتبطًا بشركة Tailscale Inc.
ومع ذلك، أحد المطورين النشطين لـ Headscale يعمل في Tailscale ويُسمح له بالمساهمة في المشروع خلال ساعات العمل. تتم مراجعة المساهمات من هذا المطور من قبل مطورين آخرين.
يعمل المطورون معًا على تحديد اتجاه المشروع. المبدأ الأساسي هو خدمة مجتمع المستضيفين ذاتيًا والمتحمسين والهواة - مع الحفاظ على مشروع مستدام.
يرجى قراءة ملف CONTRIBUTING.md.
للمساهمة في headscale، ستحتاج إلى أحدث إصدار من Go و Buf (مولد Protobuf).
نوصي باستخدام Nix لإعداد بيئة تطوير. يمكن القيام بذلك باستخدام nix develop، الذي سيقوم بتثبيت الأدوات ويمنحك شل. هذا يضمن أن لديك نفس بيئة التطوير التي لدى مطوري headscale.
لضمان بعض التناسق مع العدد المتزايد من المساهمات، اعتمد هذا المشروع قواعد للفحص والتصميم/التنسيق:
يتم فحص كود Go باستخدام golangci-lint وتنسيقه باستخدام golines (عرض 88) و gofumpt.
يرجى تكوين محررك لتشغيل الأدوات أثناء التطوير وتأكد من تشغيل make lint و make fmt قبل إيداع أي كود.
يتم فحص كود Proto باستخدام buf وتنسيقه باستخدام clang-format.
يتم تنسيق المستندات باستخدام mdformat.
يتم تنسيق الباقي (Markdown، YAML، إلخ) باستخدام prettier.
اطلع على .golangci.yaml و Makefile لرؤية التكوين المحدد.
التثبيت والتفعيل:
nix develop
تتطلب بعض أجزاء المشروع توليد كود Go من Protobuf (إذا تم إجراء تغييرات في proto/) ويجب إعادة توليده باستخدام:
make generate
ملاحظة: يرجى إيداع التغييرات من gen/ في إيداع منفصل لتسهيل المراجعة.
لتشغيل الاختبارات:
make test
لبناء البرنامج:
make build
نوصي باستخدام Nix لإدارة التبعيات لضمان حصولك على جميع الأدوات المطلوبة. إذا كنت تفضل إدارة التبعيات بنفسك، يمكنك استخدام Make مباشرة:
مع Nix (موصى به):
nix develop
make test
make build
مع التبعيات الخاصة بك:
make test
make build
سيحذرك Makefile إذا كانت أي أدوات مطلوبة مفقودة ويقترح تشغيل nix develop. قم بتشغيل make help لرؤية جميع الأهداف المتاحة.
تم بواسطة contrib.rocks.