📍 المقالة الرئيسية: Headscale 2026: الدليل الكامل.
تطبيقاتك الداخلية (back-office، dashboards، خدمات الأعمال) لا داعي لتعريضها على الإنترنت العام. بدمج Headscale (mesh VPN ذاتي الاستضافة) و Coolify (PaaS مفتوح المصدر)، تحصل على منصة نشر حيث كل تطبيق متاح فقط لأعضاء tailnet الخاص بك. لا URL عامة، لا هجمات DDoS ممكنة، توافق أقصى.
المتطلبات
Headscale في الإنتاج مع ACL مكونة. Coolify v4 مثبت على VPS. عميل Tailscale واحد على الأقل متصل من جانب الفريق. المستوى: متقدم. الوقت: 2 إلى 3 ساعات.
الخطوة 1 — المعمارية المستهدفة
المخطط: المستخدم (laptop مع Tailscale) → mesh Headscale → VPS Coolify (Tailscale مثبت) → التطبيقات المنشورة (كل واحد يستمع فقط على IP Tailscale). لا منفذ 80/443 من VPS Coolify مكشوف على IP العام. جدار ناري UFW يحظر كل وارد عدا 22 (SSH) و UDP 41641 (Tailscale).
الخطوة 2 — توصيل VPS Coolify بـ Headscale
على VPS Coolify، نُثبِّت عميل Tailscale ونُسجِّله في Headscale مع tags مناسبة. الـ flag --ssh يسمح بـ SSH عبر mesh دون مفاتيح SSH تقليدية.
curl -fsSL https://tailscale.com/install.sh | sh
PREAUTH=$(headscale preauthkeys create -u servers --expiration 720h)
tailscale up --login-server=https://headscale.votre-entreprise.com \
--auth-key=$PREAUTH \
--advertise-tags=tag:coolify,tag:server-prod \
--ssh
tailscale ip -4
# سجل IP المخصص، مثلاً 100.64.0.5
الخطوة 3 — تكوين Coolify للربط على IP Tailscale
Coolify يكشف واجهته الإدارية على المنفذ 8000 افتراضياً. نقيد الوصول ليكون فقط عبر IP Tailscale الخاصة بـ VPS، مما يضمن أن لا أحد من الإنترنت العام يمكنه الوصول.
# تحرير /data/coolify/source/.env
APP_URL=https://coolify-tail.tailnet.ts.net
SSL_MODE=off # نتعامل مع HTTPS عبر Caddy داخلي
تكوين Caddy داخلي ليخدم فقط على IP Tailscale:
coolify-tail.tailnet.ts.net:80 {
bind 100.64.0.5
reverse_proxy localhost:8000
}
حظر كل الاتصالات الأخرى:
ufw default deny incoming
ufw allow 22/tcp
ufw allow 41641/udp
ufw enable
الخطوة 4 — نشر تطبيق داخلي
في Coolify، انشر تطبيقاً قياسياً (Next.js، Hono، Astro). في قسم Domains، بدلاً من نطاق عام، ضع نطاق MagicDNS. Coolify يولد شهادة Let’s Encrypt عبر DNS-01.
https://outline.tailnet.ts.net
الخطوة 5 — تكوين MagicDNS Headscale
في /etc/headscale/config.yaml:
dns:
magic_dns: true
base_domain: tailnet.ts.net
override_local_dns: true
nameservers:
global:
- 1.1.1.1
إعادة تشغيل: systemctl restart headscale. كل عملاء Tailscale المُعاد مصادقتهم يحلون الآن nom-machine.tailnet.ts.net تلقائياً.
الخطوة 6 — ACL للوصول إلى التطبيقات
إكمال /etc/headscale/policy.hujson:
{
"acls": [
{
"action": "accept",
"src": ["group:devs", "group:marketing"],
"dst": ["tag:coolify:443"]
}
]
}
الخطوة 7 — الاختبار من العميل
على laptop مطور متصل بـ tailnet:
tailscale ping coolify-tail
# يجب أن يستجيب مباشرة أو عبر DERP
curl https://outline.tailnet.ts.net
# يجب أن يعيد home Outline
افتح المتصفح على https://outline.tailnet.ts.net: التطبيق يحمل. على جهاز غير متصل بـ tailnet: اتصال مرفوض (timeout). أمن أقصى.
الخطوة 8 — تطبيقات متعددة المستخدمين
لـ Vaultwarden و Forgejo و Outline و Grafana و Plausible: انشر كل واحد كتطبيق Coolify قياسي مع نطاق MagicDNS مخصص. كلها ترث التحكم في الوصول Headscale.
الخطوة 9 — النسخ الاحتياطية و failover
احتفظ بنطاق عام احتياطي لـ Coolify نفسه: coolify.votre-entreprise.com على IP العام مع UFW مقيد بـ IP المسؤول الخاص بك فقط. في حالة عطل Headscale، تحتفظ بالوصول إلى لوحة الإدارة.
الأخطاء الشائعة
| الخطأ | السبب | الحل |
|---|---|---|
| تطبيق غير متاح من tailnet | Coolify يستمع على 0.0.0.0 لكن جدار ناري يحظر | Bind صريح على IP Tailscale |
| Let’s Encrypt يفشل على tailnet | HTTP-01 challenge مستحيل دون IP عام | DNS-01 عبر Cloudflare API |
| MagicDNS لا يحل | عميل Tailscale لم يُعاد تشغيله | tailscale down && tailscale up |
| SSH غير متاح إذا كان Headscale معطلاً | UFW يحظر 22 افتراضياً | احتفظ بقاعدة UFW allow 22 from votre-ip-admin |
التكيف مع السياق المغاربي وغرب إفريقيا
ثلاث توضيحات. عرض النطاق: لـ 30 موظفاً يصلون إلى التطبيقات الداخلية، احسب 5 ميغابايت/ث صادرة مجمعة. Hetzner CX22 يقدم 1 جيجابايت/ث، أكثر من كافٍ. التكلفة الإجمالية: Headscale (4.51€) + Coolify (3.99€) + اسم نطاق (12€/سنة) = ~ 100 € السنة الأولى. التوافق: معمارية متوافقة تماماً مع RGPD و ARTCI و NESA. لا بيانات تغادر الخوادم الأوروبية، لا خدمة عامة مكشوفة.
دروس الإخوة
الأسئلة المتكررة
لماذا لا Tailscale Funnel للتعريض العام؟ Funnel ميزة Tailscale Cloud فقط، ليس Headscale.
كيفية مراقبة توفر التطبيقات الداخلية؟ Uptime Kuma منشور في Coolify، متاح عبر tailnet.
هل هذه المعمارية تجتاز تدقيق SOC2؟ مع سجلات Loki + مراقبة + ACL موثقة، نعم. هذه معمارية Zero Trust قياسية.
للاستزادة
- 🔝 المرجع: الدليل الكامل Headscale 2026