نشر 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.
الخطوات التالية
- FreeGuard CLI — مرجع الأوامر الكامل
- دليل سير عمل المطورين — دمج VPN في أدوات التطوير الخاصة بك
- الأسعار — نشر الخوادم يعمل مع أي خطة
آخر تحديث: مارس 2026