نشر VPN على خوادم بدون واجهة رسومية
يعمل FreeGuard CLI بشكل أصلي على خوادم Linux بدون واجهة رسومية ودون الحاجة إلى بيئة سطح مكتب. سواء كنت تؤمّن مثيلاً سحابياً، أو تحمي مختبراً منزلياً، أو توجّه حركة مرور الحاويات عبر VPN، يغطي هذا الدليل التثبيت والمصادقة وتكوين الخدمة والمراقبة لبيئات الخوادم الإنتاجية.

نشر VPN على خوادم بدون واجهة رسومية

يعمل FreeGuard CLI بشكل أصلي على خوادم Linux بدون واجهة رسومية ودون الحاجة إلى بيئة سطح مكتب. سواء كنت تؤمّن مثيلاً سحابياً، أو تحمي مختبراً منزلياً، أو توجّه حركة مرور الحاويات عبر VPN، يغطي هذا الدليل التثبيت والمصادقة وتكوين الخدمة والمراقبة لبيئات الخوادم الإنتاجية.

لماذا تشغّل VPN على خادم؟

تتعامل الخوادم مع حركة مرور حساسة: اتصالات قواعد البيانات، واستدعاءات API، ونقل النسخ الاحتياطية، والاتصال بين الخدمات. تشغيل VPN على الخادم نفسه يضمن تشفير جميع حركة المرور الصادرة دون الحاجة إلى تكوين التطبيقات الفردية.

حالات الاستخدام الشائعة:

  • المثيلات السحابية التي تصل إلى واجهات API مقيّدة جغرافياً
  • عمليات CI/CD التي تحتاج إلى هوية شبكة ثابتة
  • الخدمات المستضافة ذاتياً التي تستفيد من إخفاء عنوان IP
  • خوادم التطوير المستخدمة من قبل فرق موزّعة

التثبيت

Ubuntu / Debian

curl -fsSL https://cli.freeguard.com/install.sh | bash

أو التثبيت من مستودع APT:

curl -fsSL https://cli.freeguard.com/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/freeguard.gpg
echo "deb [signed-by=/usr/share/keyrings/freeguard.gpg] https://apt.freeguard.com stable main" | sudo tee /etc/apt/sources.list.d/freeguard.list
sudo apt update
sudo apt install freeguard-cli

CentOS / RHEL / Fedora

curl -fsSL https://cli.freeguard.com/install.sh | bash

أو استخدام مستودع RPM:

sudo rpm --import https://cli.freeguard.com/gpg.key
sudo tee /etc/yum.repos.d/freeguard.repo <<EOF
[freeguard]
name=FreeGuard CLI
baseurl=https://rpm.freeguard.com/stable
gpgcheck=1
gpgkey=https://cli.freeguard.com/gpg.key
EOF
sudo yum install freeguard-cli

Alpine Linux

curl -fsSL https://cli.freeguard.com/install.sh | bash

قد يحتاج مستخدمو Alpine إلى تثبيت libc6-compat أولاً:

apk add libc6-compat
curl -fsSL https://cli.freeguard.com/install.sh | bash

التحقق من التثبيت

freeguard --version

المصادقة بدون واجهة رسومية

على الخوادم التي لا تحتوي على متصفح، لا يمكنك استخدام تدفق تسجيل الدخول عبر OAuth الافتراضي. يوفر FreeGuard CLI مصادقة عبر البريد الإلكتروني لبيئات الخوادم بدون واجهة رسومية.

تسجيل الدخول عبر البريد الإلكتروني

freeguard login --method email

يطلب منك CLI إدخال بريدك الإلكتروني المسجّل. يتم إرسال رمز تحقق إلى هذا العنوان. أدخل الرمز في الطرفية لإكمال المصادقة.

$ freeguard login --method email
Enter your email: [email protected]
Verification code sent. Check your inbox.
Enter code: 483291
Login successful.

تسجيل الدخول بالرمز المميز

للنشر الآلي، استخدم رمز خدمة:

freeguard login --method token --token YOUR_SERVICE_TOKEN

أنشئ رموز الخدمة من لوحة تحكم حسابك. يمكن تحديد نطاق الرموز لخوادم محددة مع إمكانية تعيين تاريخ انتهاء صلاحية.

التحقق من المصادقة

freeguard status --json | jq '.authenticated'

التشغيل كخدمة systemd

لبيئات الإنتاج، شغّل FreeGuard CLI كخدمة systemd ليبدأ عند الإقلاع ويعيد التشغيل عند الفشل.

إنشاء ملف الخدمة

sudo tee /etc/systemd/system/freeguard.service <<EOF
[Unit]
Description=FreeGuard VPN
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/freeguard connect --server us-east --no-color
ExecStop=/usr/local/bin/freeguard disconnect
Restart=on-failure
RestartSec=10
User=root

[Install]
WantedBy=multi-user.target
EOF

التفعيل والتشغيل

sudo systemctl daemon-reload
sudo systemctl enable freeguard
sudo systemctl start freeguard

التحقق من حالة الخدمة

sudo systemctl status freeguard

عرض السجلات

sudo journalctl -u freeguard -f

البرمجة باستخدام --json و --no-color

يجب أن تحلل السكربتات الإنتاجية المخرجات المنظّمة بدلاً من النص المقروء بشرياً.

مخرجات JSON

كل أمر يدعم --json:

# Connection status
freeguard status --json

المخرجات:

{
  "connected": true,
  "server": "us-east-1",
  "server_name": "New York",
  "protocol": "hysteria2",
  "uptime": 86400,
  "bytes_sent": 1048576,
  "bytes_received": 5242880
}

وضع بدون ألوان

إزالة رموز ANSI اللونية للحصول على ملفات سجل نظيفة:

freeguard status --no-color >> /var/log/freeguard-status.log

مثال على البرمجة

سكربت فحص صحي يعيد الاتصال عند الفشل:

#!/bin/bash
STATUS=$(freeguard status --json 2>/dev/null)
CONNECTED=$(echo "$STATUS" | jq -r '.connected')

if [ "$CONNECTED" != "true" ]; then
  echo "$(date): VPN disconnected, reconnecting..." >> /var/log/freeguard-health.log
  freeguard connect --server us-east --json >> /var/log/freeguard-health.log 2>&1
fi

أضفه إلى cron للفحص المنتظم:

# Check VPN health every 5 minutes
*/5 * * * * /opt/scripts/freeguard-health.sh

المراقبة وفحوصات الصحة

فحص صحي أساسي

freeguard status --json | jq -r '.connected'

يُعيد true أو false. بسيط بما يكفي لأي نظام مراقبة.

التكامل مع أدوات المراقبة

تصدير الحالة إلى Prometheus أو Datadog أو أي نظام مراقبة يمكنه تنفيذ أوامر shell:

#!/bin/bash
# prometheus-exporter.sh
STATUS=$(freeguard status --json)
CONNECTED=$(echo "$STATUS" | jq -r '.connected')
UPTIME=$(echo "$STATUS" | jq -r '.uptime')

if [ "$CONNECTED" = "true" ]; then
  echo "freeguard_connected 1"
  echo "freeguard_uptime_seconds $UPTIME"
else
  echo "freeguard_connected 0"
  echo "freeguard_uptime_seconds 0"
fi

التنبيهات

ادمج فحص الصحة مع نظام التنبيه الخاص بك. مثال باستخدام webhook بسيط:

#!/bin/bash
CONNECTED=$(freeguard status --json | jq -r '.connected')
if [ "$CONNECTED" != "true" ]; then
  curl -X POST https://hooks.example.com/alert \
    -H "Content-Type: application/json" \
    -d '{"text": "FreeGuard VPN disconnected on '"$(hostname)"'"}'
fi

اعتبارات الأمان

  • التشغيل كـ root: يتطلب نفق VPN صلاحيات root لتعديل مسارات الشبكة. تعمل خدمة systemd كـ root افتراضياً.
  • تخزين الرموز: تُخزّن رموز الخدمة في ~/.config/freeguard/. تأكد من صلاحيات الملفات المناسبة (chmod 600).
  • قواعد جدار الحماية: إذا كنت تستخدم UFW أو iptables، تأكد من السماح بواجهة نفق VPN.
  • مفتاح الإيقاف: فعّل مفتاح الإيقاف لحظر جميع الحركة في حال انقطاع VPN: freeguard config set kill-switch true.

الخطوات التالية

آخر تحديث: مارس 2026