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.

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

Sist oppdatert: mars 2026