Deploy VPN di Server Headless
FreeGuard CLI berjalan secara native di server Linux headless tanpa memerlukan lingkungan desktop. Baik Anda mengamankan instance cloud, melindungi home lab, atau merutekan lalu lintas container melalui VPN, panduan ini mencakup instalasi, autentikasi, konfigurasi layanan, dan pemantauan untuk deployment server produksi.
Mengapa Menjalankan VPN di Server?
Server menangani lalu lintas sensitif: koneksi database, panggilan API, transfer backup, dan komunikasi antar layanan. Menjalankan VPN di server itu sendiri memastikan semua lalu lintas keluar terenkripsi tanpa mengonfigurasi aplikasi individual.
Kasus penggunaan umum:
- Instance cloud yang mengakses API dengan pembatasan geografis
- CI/CD runner yang membutuhkan identitas jaringan konsisten
- Layanan self-hosted yang mendapat manfaat dari penyamaran IP
- Server pengembangan yang digunakan oleh tim terdistribusi
Instalasi
Ubuntu / Debian
curl -fsSL https://cli.freeguard.com/install.sh | bash
Atau instal 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 menginstal libc6-compat terlebih dahulu:
apk add libc6-compat
curl -fsSL https://cli.freeguard.com/install.sh | bash
Verifikasi Instalasi
freeguard --version
Autentikasi Headless
Di server tanpa browser, Anda tidak dapat menggunakan alur login OAuth default. FreeGuard CLI menyediakan autentikasi berbasis email untuk lingkungan headless.
Login Email
freeguard login --method email
CLI meminta Anda memasukkan email akun. Kode verifikasi dikirim ke alamat tersebut. Masukkan kode di terminal untuk menyelesaikan autentikasi.
$ freeguard login --method email
Enter your email: [email protected]
Verification code sent. Check your inbox.
Enter code: 483291
Login successful.
Login Berbasis Token
Untuk deployment otomatis, gunakan token layanan:
freeguard login --method token --token YOUR_SERVICE_TOKEN
Buat token layanan dari dashboard akun Anda. Token dapat dibatasi untuk server tertentu dan memiliki masa kedaluwarsa yang dapat dikonfigurasi.
Verifikasi Autentikasi
freeguard status --json | jq '.authenticated'
Menjalankan sebagai Layanan systemd
Untuk deployment produksi, jalankan FreeGuard CLI sebagai layanan systemd agar dimulai saat boot dan restart saat gagal.
Buat File Layanan
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 Mulai
sudo systemctl daemon-reload
sudo systemctl enable freeguard
sudo systemctl start freeguard
Periksa Status Layanan
sudo systemctl status freeguard
Lihat Log
sudo journalctl -u freeguard -f
Scripting dengan --json dan --no-color
Skrip produksi harus mem-parse output terstruktur alih-alih teks yang dapat dibaca manusia.
Output JSON
Setiap perintah mendukung --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
}
Mode Tanpa Warna
Hapus kode warna ANSI untuk file log yang bersih:
freeguard status --no-color >> /var/log/freeguard-status.log
Contoh Scripting
Skrip health-check yang menyambung ulang saat 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
Tambahkan ke cron untuk pemeriksaan rutin:
# Check VPN health every 5 minutes
*/5 * * * * /opt/scripts/freeguard-health.sh
Pemantauan dan Health Check
Health Check Dasar
freeguard status --json | jq -r '.connected'
Mengembalikan true atau false. Cukup sederhana untuk sistem pemantauan apa pun.
Integrasi dengan Alat Pemantauan
Ekspor status ke Prometheus, Datadog, atau sistem pemantauan apa pun yang dapat menjalankan perintah 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
Alerting
Gabungkan health check dengan sistem alerting Anda. Contoh dengan webhook sederhana:
#!/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 Keamanan
- Jalankan sebagai root: Tunnel VPN memerlukan hak akses root untuk memodifikasi rute jaringan. Layanan systemd berjalan sebagai root secara default.
- Penyimpanan token: Token layanan disimpan di
~/.config/freeguard/. Pastikan izin file yang sesuai (chmod 600). - Aturan firewall: Jika Anda menggunakan UFW atau iptables, pastikan antarmuka tunnel VPN diizinkan.
- Kill switch: Aktifkan kill switch untuk memblokir semua lalu lintas jika VPN terputus:
freeguard config set kill-switch true.
Langkah Selanjutnya
- FreeGuard CLI — referensi perintah lengkap
- Panduan alur kerja developer — integrasikan VPN ke alat pengembangan Anda
- Harga — deployment server berfungsi dengan paket apa pun
Terakhir diperbarui: Maret 2026