Distribuer VPN på headless-servere
FreeGuard CLI kjører nativt på headless Linux-servere uten behov for et skrivebordsmiljø. Enten du sikrer en skyinstans, beskytter et hjemmelaboratorium eller ruter containertrafikk gjennom VPN, dekker denne guiden installasjon, autentisering, tjenestekonfigurasjon og overvåking for produksjonsserverdistribusjoner.
Hvorfor kjøre VPN på en server?
Servere håndterer sensitiv trafikk: databasetilkoblinger, API-kall, sikkerhetskopioverføringer og kommunikasjon mellom tjenester. Å kjøre VPN på selve serveren sikrer at all utgående trafikk er kryptert uten å konfigurere individuelle applikasjoner.
Vanlige bruksscenarier:
- Skyinstanser som har tilgang til geo-begrensede API-er
- CI/CD-runnere som trenger konsistent nettverksidentitet
- Selvhostede tjenester som drar nytte av IP-maskering
- Utviklingsservere brukt av distribuerte team
Installasjon
Ubuntu / Debian
curl -fsSL https://cli.freeguard.com/install.sh | bash
Eller installer fra APT-repositoriet:
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
Eller bruk RPM-repositoriet:
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-brukere må kanskje installere libc6-compat først:
apk add libc6-compat
curl -fsSL https://cli.freeguard.com/install.sh | bash
Bekreft installasjon
freeguard --version
Headless autentisering
På servere uten nettleser kan du ikke bruke standard OAuth-innlogging. FreeGuard CLI tilbyr e-postbasert autentisering for headless-miljøer.
E-postinnlogging
freeguard login --method email
CLI-en ber deg om å oppgi kontoens e-postadresse. En bekreftelseskode sendes til den adressen. Skriv inn koden i terminalen for å fullføre autentiseringen.
$ freeguard login --method email
Enter your email: [email protected]
Verification code sent. Check your inbox.
Enter code: 483291
Login successful.
Token-basert innlogging
For automatiserte distribusjoner, bruk et tjenestetoken:
freeguard login --method token --token YOUR_SERVICE_TOKEN
Generer tjenestetokener fra kontokontrollpanelet. Tokener kan begrenses til spesifikke servere og ha konfigurerbar utløpstid.
Bekreft autentisering
freeguard status --json | jq '.authenticated'
Kjøre som systemd-tjeneste
For produksjonsdistribusjoner, kjør FreeGuard CLI som en systemd-tjeneste slik at den starter ved oppstart og starter på nytt ved feil.
Opprett tjenestefilen
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
Aktiver og start
sudo systemctl daemon-reload
sudo systemctl enable freeguard
sudo systemctl start freeguard
Sjekk tjenestestatus
sudo systemctl status freeguard
Se logger
sudo journalctl -u freeguard -f
Skripting med --json og --no-color
Produksjonsskript bør analysere strukturert utdata i stedet for menneskelesbar tekst.
JSON-utdata
Hver kommando støtter --json:
# Connection status
freeguard status --json
Utdata:
{
"connected": true,
"server": "us-east-1",
"server_name": "New York",
"protocol": "hysteria2",
"uptime": 86400,
"bytes_sent": 1048576,
"bytes_received": 5242880
}
Fargeløs modus
Fjern ANSI-fargekoder for rene loggfiler:
freeguard status --no-color >> /var/log/freeguard-status.log
Skripteksempel
Et helsesjekk-skript som kobler til på nytt ved feil:
#!/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
Legg til i cron for regelmessige sjekker:
# Check VPN health every 5 minutes
*/5 * * * * /opt/scripts/freeguard-health.sh
Overvåking og helsesjekker
Grunnleggende helsesjekk
freeguard status --json | jq -r '.connected'
Returnerer true eller false. Enkelt nok for ethvert overvåkingssystem.
Integrasjon med overvåkingsverktøy
Eksporter status til Prometheus, Datadog eller ethvert overvåkingssystem som kan kjøre shell-kommandoer:
#!/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
Varsler
Kombiner helsesjekken med varslingssystemet ditt. Eksempel med en enkel 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
Sikkerhetshensyn
- Kjør som root: VPN-tunnelen krever root-rettigheter for å endre nettverksruter. Systemd-tjenesten kjører som root som standard.
- Tokenlagring: Tjenestetokener lagres i
~/.config/freeguard/. Sørg for riktige filtillatelser (chmod 600). - Brannmurregler: Hvis du bruker UFW eller iptables, sørg for at VPN-tunnelgrensesnittet er tillatt.
- Kill switch: Aktiver kill switch for å blokkere all trafikk hvis VPN kobles fra:
freeguard config set kill-switch true.
Neste steg
- FreeGuard CLI — komplett kommandoreferanse
- Utviklingsarbeidsflytguide — integrer VPN i utviklingsverktøyene dine
- Priser — serverdistribusjoner fungerer med alle planer
Sist oppdatert: mars 2026