Implementer VPN på headless servere
FreeGuard CLI kører nativt på headless Linux-servere uden behov for et skrivebordsmiljø. Uanset om du sikrer en cloud-instans, beskytter et hjemmelaboratorium eller dirigerer containertrafik gennem VPN, dækker denne guide installation, godkendelse, servicekonfiguration og overvågning til produktionsserverinstallationer.

Implementer VPN på headless servere

FreeGuard CLI kører nativt på headless Linux-servere uden behov for et skrivebordsmiljø. Uanset om du sikrer en cloud-instans, beskytter et hjemmelaboratorium eller dirigerer containertrafik gennem VPN, dækker denne guide installation, godkendelse, servicekonfiguration og overvågning til produktionsserverinstallationer.

Hvorfor køre VPN på en server?

Servere håndterer følsom trafik: databaseforbindelser, API-kald, backupoverførsler og kommunikation mellem tjenester. At køre VPN på selve serveren sikrer, at al udgående trafik er krypteret uden at konfigurere individuelle applikationer.

Almindelige brugsscenarier:

  • Cloud-instanser der tilgår geo-begrænsede API’er
  • CI/CD-runners der har brug for konsistent netværksidentitet
  • Selvhostede tjenester der drager fordel af IP-maskering
  • Udviklingsservere brugt af distribuerede teams

Installation

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 brug 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-brugere skal muligvis installere libc6-compat først:

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

Bekræft installation

freeguard --version

Headless godkendelse

På servere uden browser kan du ikke bruge standard OAuth-login. FreeGuard CLI tilbyder e-mailbaseret godkendelse til headless miljøer.

E-mail-login

freeguard login --method email

CLI’en beder dig om at indtaste din kontos e-mail. En bekræftelseskode sendes til den adresse. Indtast koden i terminalen for at fuldføre godkendelsen.

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

Token-baseret login

Til automatiserede implementeringer, brug en servicetoken:

freeguard login --method token --token YOUR_SERVICE_TOKEN

Generer servicetokens fra dit kontopanel. Tokens kan begrænses til specifikke servere og have konfigurerbar udløbstid.

Bekræft godkendelse

freeguard status --json | jq '.authenticated'

Kørsel som systemd-tjeneste

Til produktionsimplementeringer, kør FreeGuard CLI som en systemd-tjeneste, så den starter ved boot og genstarter ved fejl.

Opret servicefilen

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

Aktivér og start

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

Tjek servicestatus

sudo systemctl status freeguard

Se logfiler

sudo journalctl -u freeguard -f

Scripting med --json og --no-color

Produktionsscripts bør parse struktureret output i stedet for menneskelæselig tekst.

JSON-output

Hver kommando understøtter --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
}

No-color tilstand

Fjern ANSI-farvekoder for rene logfiler:

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

Scripting-eksempel

Et sundhedstjek-script der genopretter forbindelsen ved fejl:

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

Tilføj det til cron for regelmæssige tjek:

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

Overvågning og sundhedstjek

Grundlæggende sundhedstjek

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

Returnerer true eller false. Simpelt nok til ethvert overvågningssystem.

Integration med overvågningsværktøjer

Eksporter status til Prometheus, Datadog eller ethvert overvågningssystem der kan udfø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

Alarmer

Kombiner sundhedstjekket med dit alarmsystem. Eksempel med en simpel 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

Sikkerhedsovervejelser

  • Kør som root: VPN-tunnelen kræver root-rettigheder for at ændre netværksruter. Systemd-tjenesten kører som root som standard.
  • Tokenlagring: Servicetokens gemmes i ~/.config/freeguard/. Sørg for passende filtilladelser (chmod 600).
  • Firewallregler: Hvis du bruger UFW eller iptables, skal du sikre, at VPN-tunnelgrænsefladen er tilladt.
  • Kill switch: Aktivér kill switch for at blokere al trafik hvis VPN afbrydes: freeguard config set kill-switch true.

Næste skridt

Sidst opdateret: marts 2026