在無圖形介面伺服器上部署 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.
Token 登入
對於自動化部署,使用服務 Token:
freeguard login --method token --token YOUR_SERVICE_TOKEN
從帳戶控制面板產生服務 Token。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 執行。
- Token 儲存:服務 Token 儲存在
~/.config/freeguard/。請確保適當的檔案權限(chmod 600)。 - 防火牆規則:如果使用 UFW 或 iptables,請確保 VPN 隧道介面被允許。
- Kill switch:啟用 kill switch 以在 VPN 中斷時封鎖所有流量:
freeguard config set kill-switch true。
後續步驟
- FreeGuard CLI — 完整指令參考
- 開發者工作流程指南 — 將 VPN 整合到您的開發工具中
- 定價 — 伺服器部署適用於任何方案
最後更新:2026 年 3 月