Deploy VPN pada Pelayan Headless
FreeGuard CLI berjalan secara natif pada pelayan Linux headless tanpa memerlukan persekitaran desktop. Sama ada anda mengamankan instans awan, melindungi makmal rumah, atau menghala trafik kontena melalui VPN, panduan ini merangkumi pemasangan, pengesahan, konfigurasi perkhidmatan dan pemantauan untuk deployment pelayan produksi.
Mengapa Menjalankan VPN pada Pelayan?
Pelayan mengendalikan trafik sensitif: sambungan pangkalan data, panggilan API, pemindahan sandaran dan komunikasi antara perkhidmatan. Menjalankan VPN pada pelayan itu sendiri memastikan semua trafik keluar disulitkan tanpa mengkonfigurasi aplikasi individu.
Kes penggunaan biasa:
- Instans awan yang mengakses API yang terhad secara geografi
- Pelari CI/CD yang memerlukan identiti rangkaian yang konsisten
- Perkhidmatan hos sendiri yang mendapat manfaat daripada penyamaran IP
- Pelayan pembangunan yang digunakan oleh pasukan yang teragih
Pemasangan
Ubuntu / Debian
curl -fsSL https://cli.freeguard.com/install.sh | bash
Atau pasang dari repositori 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
Atau gunakan repositori 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
Pengguna Alpine mungkin perlu memasang libc6-compat terlebih dahulu:
apk add libc6-compat
curl -fsSL https://cli.freeguard.com/install.sh | bash
Pengesahan Pemasangan
freeguard --version
Pengesahan Headless
Pada pelayan tanpa pelayar, anda tidak boleh menggunakan aliran log masuk OAuth lalai. FreeGuard CLI menyediakan pengesahan berasaskan e-mel untuk persekitaran headless.
Log Masuk E-mel
freeguard login --method email
CLI meminta anda memasukkan e-mel akaun anda. Kod pengesahan dihantar ke alamat tersebut. Masukkan kod dalam terminal untuk melengkapkan pengesahan.
$ freeguard login --method email
Enter your email: [email protected]
Verification code sent. Check your inbox.
Enter code: 483291
Login successful.
Log Masuk Berasaskan Token
Untuk deployment automatik, gunakan token perkhidmatan:
freeguard login --method token --token YOUR_SERVICE_TOKEN
Jana token perkhidmatan dari papan pemuka akaun anda. Token boleh dihadkan kepada pelayan tertentu dan mempunyai tamat tempoh yang boleh dikonfigurasi.
Pengesahan Autentikasi
freeguard status --json | jq '.authenticated'
Menjalankan sebagai Perkhidmatan systemd
Untuk deployment produksi, jalankan FreeGuard CLI sebagai perkhidmatan systemd supaya ia bermula semasa but dan dimulakan semula apabila gagal.
Cipta Fail Perkhidmatan
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
Aktifkan dan Mulakan
sudo systemctl daemon-reload
sudo systemctl enable freeguard
sudo systemctl start freeguard
Semak Status Perkhidmatan
sudo systemctl status freeguard
Lihat Log
sudo journalctl -u freeguard -f
Skrip dengan --json dan --no-color
Skrip produksi harus menghurai output berstruktur dan bukannya teks yang boleh dibaca manusia.
Output JSON
Setiap arahan menyokong --json:
# Connection status
freeguard status --json
Output:
{
"connected": true,
"server": "us-east-1",
"server_name": "New York",
"protocol": "hysteria2",
"uptime": 86400,
"bytes_sent": 1048576,
"bytes_received": 5242880
}
Mod Tanpa Warna
Buang kod warna ANSI untuk fail log yang bersih:
freeguard status --no-color >> /var/log/freeguard-status.log
Contoh Skrip
Skrip pemeriksaan kesihatan yang menyambung semula apabila gagal:
#!/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
Tambah ke cron untuk pemeriksaan berkala:
# Check VPN health every 5 minutes
*/5 * * * * /opt/scripts/freeguard-health.sh
Pemantauan dan Pemeriksaan Kesihatan
Pemeriksaan Kesihatan Asas
freeguard status --json | jq -r '.connected'
Mengembalikan true atau false. Cukup mudah untuk mana-mana sistem pemantauan.
Integrasi dengan Alat Pemantauan
Eksport status ke Prometheus, Datadog atau mana-mana sistem pemantauan yang boleh menjalankan arahan 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
Amaran
Gabungkan pemeriksaan kesihatan dengan sistem amaran anda. Contoh dengan webhook mudah:
#!/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
Pertimbangan Keselamatan
- Jalankan sebagai root: Terowong VPN memerlukan keistimewaan root untuk mengubah suai laluan rangkaian. Perkhidmatan systemd berjalan sebagai root secara lalai.
- Penyimpanan token: Token perkhidmatan disimpan dalam
~/.config/freeguard/. Pastikan kebenaran fail yang sesuai (chmod 600). - Peraturan firewall: Jika anda menggunakan UFW atau iptables, pastikan antara muka terowong VPN dibenarkan.
- Kill switch: Aktifkan kill switch untuk menyekat semua trafik jika VPN terputus:
freeguard config set kill-switch true.
Langkah Seterusnya
- FreeGuard CLI — rujukan arahan lengkap
- Panduan aliran kerja pembangun — integrasikan VPN ke dalam alat pembangunan anda
- Harga — deployment pelayan berfungsi dengan mana-mana pelan
Kemas kini terakhir: Mac 2026