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

نشر Headscale على VPS مع Caddy و HTTPS: الدليل الكامل 2026

2 دقائق للقراءة

📍 المقالة الرئيسية: Headscale 2026: الدليل الكامل.

ثلاثون دقيقة للانتقال من VPS فارغ إلى Headscale إنتاج مع HTTPS صحيح، جاهز لاستقبال أول عملاء Tailscale. هذا الدرس يفصل الإجراء الدقيق على Hetzner CX22 (4.51 يورو/شهرياً) مع Caddy كـ reverse proxy. الطريقة موثقة في عدة شركات إفريقية فرنكوفونية في داكار وأبيدجان ولومي وواغادوغو.

المتطلبات

قبل البدء، تأكد من توفر VPS Hetzner CX22 أو OVH VPS-1 (Debian 12 أو Ubuntu 22.04 LTS). يجب أن يكون لديك اسم نطاق مع سجل DNS A: headscale.votre-entreprise.com → IP الـ VPS. الوصول SSH root مطلوب. المستوى المتوقع: متوسط (Linux، systemd، ملفات YAML). الوقت المقدر: 30 إلى 45 دقيقة.

الخطوة 1 — تحضير الـ VPS

نبدأ بتحديث النظام وتكوين الجدار الناري. المنفذ UDP 41641 ضروري لـ DERP / WireGuard، يجب فتحه إلى جانب 22 (SSH) و 80/443 (HTTPS).

apt update && apt upgrade -y
apt install -y ufw fail2ban
ufw allow 22 80 443
ufw allow 41641/udp
ufw enable

الخطوة 2 — تثبيت Headscale عبر المستودع الرسمي

Headscale مُتاح كحزمة Debian رسمية على GitHub. هذه الطريقة أفضل من البناء من المصدر لأنها تأتي مع ملف systemd جاهز.

curl -fsSL https://github.com/juanfont/headscale/releases/download/v0.23.0/headscale_0.23.0_linux_amd64.deb -o /tmp/headscale.deb
dpkg -i /tmp/headscale.deb
systemctl enable headscale
mkdir -p /etc/headscale /var/lib/headscale

الخطوة 3 — التكوين الأساسي

تحرير ملف /etc/headscale/config.yaml. server_url هو URL العام الذي سيستخدمه عملاؤك. listen_addr نضعه على 127.0.0.1 لأن Caddy سيكون في الواجهة. prefixes تحدد نطاق IP الذي يخصصه Headscale لكل جهاز.

server_url: https://headscale.votre-entreprise.com
listen_addr: 127.0.0.1:8080
metrics_listen_addr: 127.0.0.1:9090
private_key_path: /var/lib/headscale/private.key
noise:
  private_key_path: /var/lib/headscale/noise_private.key

prefixes:
  v4: 100.64.0.0/10
  v6: fd7a:115c:a1e0::/48

derp:
  server:
    enabled: false
  urls:
    - https://controlplane.tailscale.com/derpmap/default

database:
  type: sqlite
  sqlite:
    path: /var/lib/headscale/db.sqlite

dns:
  magic_dns: true
  base_domain: tailnet.votre-entreprise.com
  nameservers:
    global:
      - 1.1.1.1
      - 9.9.9.9

الخطوة 4 — تكوين Caddy لـ HTTPS

Caddy يدير شهادة Let’s Encrypt تلقائياً. عملياً، هذه أبسط طريقة للحصول على HTTPS صحيح دون إدارة شهادات يدوية.

apt install -y caddy

تحرير /etc/caddy/Caddyfile:

headscale.votre-entreprise.com {
  reverse_proxy 127.0.0.1:8080
  encode gzip
  log {
    output file /var/log/caddy/headscale.log {
      roll_size 100MB
      roll_keep 7
    }
  }
}

إعادة تحميل: systemctl reload caddy. الاختبار: curl -I https://headscale.votre-entreprise.com/health. يجب أن يعيد 200 OK.

الخطوة 5 — تشغيل Headscale

الآن نُشغِّل خدمة Headscale ونتحقق من السجلات. الـ journalctl يعرض السجلات في الوقت الفعلي مما يساعد في التشخيص الفوري.

systemctl start headscale
systemctl status headscale
journalctl -u headscale -f

الخطوة 6 — إنشاء أول مستخدم وأول preauth key

قبل اتصال أي جهاز، يجب إنشاء مستخدم وتوليد preauth key. الـ key reusable يسمح بتسجيل عدة أجهزة بنفس المفتاح. expiration 24h يحدد فترة صلاحية المفتاح.

headscale users create amadou
headscale preauthkeys create --user amadou --expiration 24h --reusable

الإخراج يحتوي على مفتاح من نوع 1234567890abcdef.... سجلها، تنتهي صلاحيتها في 24 ساعة.

الخطوة 7 — توصيل أول جهاز

على محطة Linux:

curl -fsSL https://tailscale.com/install.sh | sh
tailscale up --login-server=https://headscale.votre-entreprise.com --auth-key=PREAUTH_KEY

على Mac: افتح Terminal، brew install --cask tailscale، ثم شغل التطبيق، اضغط option-clic على الأيقونة في أعلى اليمين، اختر «Use Custom Coordination Server»، أدخل URL، ثم Login.

على iOS / Android: افتح Settings في تطبيق Tailscale الرسمي، اضغط 5 مرات على الإصدار لتفعيل وضع debug، عدِّل URL خادم التنسيق.

الخطوة 8 — التحقق

اختبار للتأكد من أن كل شيء يعمل بشكل صحيح. الجهاز الأول يجب أن يظهر في القائمة، ثم اختبر الـ ping بين جهازين:

headscale nodes list
tailscale ping autre-appareil
# Pong from autre-appareil via direct connection

الأخطاء الشائعة

الخطأ السبب الحل
العميل يرفض التسجيل URL خادم غير صحيح تحقق server_url و listen_addr
لا اتصال بعد التسجيل منفذ UDP 41641 محظور UFW: ufw allow 41641/udp
MagicDNS لا يحل base domain غير مكوَّن تحديد base_domain + إعادة التشغيل
Mobile لا يجد خيار custom server وضع dev غير مفعل 5 ضغطات على Version في Settings
Caddy 502 Bad Gateway Headscale لم يبدأ systemctl status headscale

التكيف مع السياق المغاربي وغرب إفريقيا

ثلاث تعديلات لشركة إفريقية. اختيار DERP relay: افتراضياً Headscale يستخدم DERPs الخاصة بـ Tailscale (US و Europe). لتحسين زمن الاستجابة من غرب إفريقيا، يمكنك استضافة DERP ذاتياً على VPS Africa Data Centres (لاغوس أو كيب تاون). التكلفة الإجمالية السنوية: 54 يورو/سنة لـ VPS + 12 يورو/سنة لنطاق = 66 يورو لفريق غير محدود. إدارة الموظفين المؤقتين: المستقلون والمتدربون متكررون في غرب إفريقيا. Headscale + preauth keys بمدة محدودة (24h، 7j، 30j) يديرون بشكل أنيق onboarding-offboarding.

دروس الإخوة

الأسئلة المتكررة

أي فارق بين Tailscale و Headscale يومياً؟ لا شيء من جانب المستخدم. عملاء Tailscale الرسميون يعملون بشكل مماثل مع Headscale.

كم وقتاً تأخذ الهجرة من Tailscale Cloud؟ لـ 30 جهازاً، احسب نصف يوم للسكربتات، نصف يوم للتبديل.

Headscale يدعم IPv6؟ نعم، dual-stack افتراضياً.

SQLite كافٍ لكم جهاز؟ حتى 500 جهاز بشكل مريح. ما بعد ذلك، انتقل إلى PostgreSQL.

للاستزادة

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é