Postavljanje VPN-a na headless poslužiteljima
FreeGuard CLI radi izvorno na headless Linux poslužiteljima bez potrebe za desktop okruženjem. Bilo da osiguravate cloud instancu, štitite kućni laboratorij ili usmjeravate promet kontejnera kroz VPN, ovaj vodič pokriva instalaciju, autentifikaciju, konfiguraciju usluge i nadzor za produkcijska okruženja.

Postavljanje VPN-a na headless poslužiteljima

FreeGuard CLI radi izvorno na headless Linux poslužiteljima bez potrebe za desktop okruženjem. Bilo da osiguravate cloud instancu, štitite kućni laboratorij ili usmjeravate promet kontejnera kroz VPN, ovaj vodič pokriva instalaciju, autentifikaciju, konfiguraciju usluge i nadzor za produkcijska okruženja.

Zašto pokrenuti VPN na poslužitelju?

Poslužitelji obrađuju osjetljiv promet: veze s bazama podataka, API pozive, prijenos sigurnosnih kopija i komunikaciju između usluga. Pokretanje VPN-a na samom poslužitelju osigurava da je sav odlazni promet šifriran bez konfiguriranja pojedinačnih aplikacija.

Uobičajeni slučajevi korištenja:

  • Cloud instance koje pristupaju geografski ograničenim API-jima
  • CI/CD pokretači kojima je potreban dosljedan mrežni identitet
  • Samostalno hostirane usluge koje imaju koristi od maskiranja IP adrese
  • Razvojni poslužitelji koje koriste raspodijeljeni timovi

Instalacija

Ubuntu / Debian

curl -fsSL https://cli.freeguard.com/install.sh | bash

Ili instalirajte iz APT repozitorija:

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

Ili koristite RPM repozitorij:

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

Korisnici Alpinea možda trebaju prvo instalirati libc6-compat:

apk add libc6-compat
curl -fsSL https://cli.freeguard.com/install.sh | bash

Provjera instalacije

freeguard --version

Headless autentifikacija

Na poslužiteljima bez preglednika ne možete koristiti zadani OAuth tok prijave. FreeGuard CLI pruža autentifikaciju putem e-pošte za headless okruženja.

Prijava putem e-pošte

freeguard login --method email

CLI vas traži da unesete e-poštu računa. Verifikacijski kod šalje se na tu adresu. Unesite kod u terminal za dovršetak autentifikacije.

$ freeguard login --method email
Enter your email: [email protected]
Verification code sent. Check your inbox.
Enter code: 483291
Login successful.

Prijava putem tokena

Za automatizirane implementacije koristite servisni token:

freeguard login --method token --token YOUR_SERVICE_TOKEN

Generirajte servisne tokene iz nadzorne ploče računa. Tokeni mogu biti ograničeni na određene poslužitelje i imati podesiv rok trajanja.

Provjera autentifikacije

freeguard status --json | jq '.authenticated'

Pokretanje kao systemd usluga

Za produkcijske implementacije pokrenite FreeGuard CLI kao systemd uslugu kako bi se pokretao pri pokretanju sustava i ponovno pokretao pri neuspjehu.

Kreiranje datoteke usluge

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

Omogućavanje i pokretanje

sudo systemctl daemon-reload
sudo systemctl enable freeguard
sudo systemctl start freeguard

Provjera statusa usluge

sudo systemctl status freeguard

Pregled zapisnika

sudo journalctl -u freeguard -f

Skriptiranje s --json i --no-color

Produkcijske skripte trebaju parsirati strukturirani izlaz umjesto teksta čitljivog ljudima.

JSON izlaz

Svaka naredba podržava --json:

# Connection status
freeguard status --json

Izlaz:

{
  "connected": true,
  "server": "us-east-1",
  "server_name": "New York",
  "protocol": "hysteria2",
  "uptime": 86400,
  "bytes_sent": 1048576,
  "bytes_received": 5242880
}

Način bez boja

Uklonite ANSI kodove boja za čiste datoteke zapisnika:

freeguard status --no-color >> /var/log/freeguard-status.log

Primjer skriptiranja

Skripta za provjeru zdravlja koja se ponovno povezuje pri neuspjehu:

#!/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

Dodajte u cron za redovite provjere:

# Check VPN health every 5 minutes
*/5 * * * * /opt/scripts/freeguard-health.sh

Nadzor i provjere zdravlja

Osnovna provjera zdravlja

freeguard status --json | jq -r '.connected'

Vraća true ili false. Dovoljno jednostavno za bilo koji sustav nadzora.

Integracija s alatima za nadzor

Izvezite status u Prometheus, Datadog ili bilo koji sustav nadzora koji može izvršavati shell naredbe:

#!/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

Upozorenja

Kombinirajte provjeru zdravlja sa sustavom upozorenja. Primjer s jednostavnim webhookom:

#!/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

Sigurnosna razmatranja

  • Pokretanje kao root: VPN tunel zahtijeva root ovlasti za izmjenu mrežnih ruta. Systemd usluga radi kao root prema zadanim postavkama.
  • Pohrana tokena: Servisni tokeni pohranjeni su u ~/.config/freeguard/. Osigurajte odgovarajuće dozvole datoteka (chmod 600).
  • Pravila vatrozida: Ako koristite UFW ili iptables, osigurajte da je sučelje VPN tunela dozvoljeno.
  • Kill switch: Omogućite kill switch za blokiranje svog prometa ako se VPN prekine: freeguard config set kill-switch true.

Sljedeći koraci

Zadnje ažuriranje: ožujak 2026.