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.

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

Kemas kini terakhir: Mac 2026