استقرار 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 مجاز است.
  • Kill switch: kill switch را برای مسدود کردن تمام ترافیک در صورت قطع VPN فعال کنید: freeguard config set kill-switch true.

مراحل بعدی

آخرین به‌روزرسانی: مارس ۲۰۲۶