ITSkillsCenter
الأمن السيبراني

Headscale + Coolify: PaaS ذاتي الاستضافة على شبكة خاصة (2026)

2 min de lecture

📍 المقالة الرئيسية: 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 قياسية.

للاستزادة

Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 250.000 FCFA
Parlons de Votre Projet
Publicité