Distribuera VPN på headless-servrar
FreeGuard CLI körs nativt på headless Linux-servrar utan behov av skrivbordsmiljö. Oavsett om du säkrar en molninstans, skyddar ett hemmalabb eller dirigerar containertrafik genom VPN, täcker den här guiden installation, autentisering, tjänstkonfiguration och övervakning för produktionsserverdistributioner.

Distribuera VPN på headless-servrar

FreeGuard CLI körs nativt på headless Linux-servrar utan behov av skrivbordsmiljö. Oavsett om du säkrar en molninstans, skyddar ett hemmalabb eller dirigerar containertrafik genom VPN, täcker den här guiden installation, autentisering, tjänstkonfiguration och övervakning för produktionsserverdistributioner.

Varför köra VPN på en server?

Servrar hanterar känslig trafik: databasanslutningar, API-anrop, säkerhetskopieringsöverföringar och kommunikation mellan tjänster. Att köra VPN på själva servern säkerställer att all utgående trafik är krypterad utan att konfigurera enskilda applikationer.

Vanliga användningsområden:

  • Molninstanser som har åtkomst till geo-begränsade API:er
  • CI/CD-runners som behöver konsekvent nätverksidentitet
  • Självhostade tjänster som drar nytta av IP-maskering
  • Utvecklingsservrar som används av distribuerade team

Installation

Ubuntu / Debian

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

Eller installera från APT-arkivet:

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 använd RPM-arkivet:

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-användare kan behöva installera libc6-compat först:

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

Verifiera installation

freeguard --version

Headless-autentisering

På servrar utan webbläsare kan du inte använda standard OAuth-inloggningen. FreeGuard CLI erbjuder e-postbaserad autentisering för headless-miljöer.

E-postinloggning

freeguard login --method email

CLI:n ber dig ange kontots e-postadress. En verifieringskod skickas till den adressen. Ange koden i terminalen för att slutföra autentiseringen.

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

Tokenbaserad inloggning

För automatiserade distributioner, använd en tjänstetoken:

freeguard login --method token --token YOUR_SERVICE_TOKEN

Generera tjänstetokens från din kontopanel. Tokens kan begränsas till specifika servrar och ha konfigurerbar utgångstid.

Verifiera autentisering

freeguard status --json | jq '.authenticated'

Köra som systemd-tjänst

För produktionsdistributioner, kör FreeGuard CLI som en systemd-tjänst så att den startar vid uppstart och startar om vid fel.

Skapa tjänstfilen

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

Aktivera och starta

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

Kontrollera tjänststatus

sudo systemctl status freeguard

Visa loggar

sudo journalctl -u freeguard -f

Skriptning med --json och --no-color

Produktionsskript bör tolka strukturerad utdata istället för människoläsbar text.

JSON-utdata

Varje kommando stöder --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
}

Färglöst läge

Ta bort ANSI-färgkoder för rena loggfiler:

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

Skriptexempel

Ett hälsokontrollskript som återansluter vid fel:

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

Lägg till i cron för regelbundna kontroller:

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

Övervakning och hälsokontroller

Grundläggande hälsokontroll

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

Returnerar true eller false. Tillräckligt enkelt för alla övervakningssystem.

Integration med övervakningsverktyg

Exportera status till Prometheus, Datadog eller något övervakningssystem som kan köra shell-kommandon:

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

Larm

Kombinera hälsokontrollen med ditt larmsystem. Exempel 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

Säkerhetsöverväganden

  • Köra som root: VPN-tunneln kräver root-behörigheter för att ändra nätverksrutter. Systemd-tjänsten körs som root som standard.
  • Tokenlagring: Tjänstetokens lagras i ~/.config/freeguard/. Säkerställ lämpliga filbehörigheter (chmod 600).
  • Brandväggsregler: Om du använder UFW eller iptables, se till att VPN-tunnelgränssnittet är tillåtet.
  • Kill switch: Aktivera kill switch för att blockera all trafik om VPN kopplas från: freeguard config set kill-switch true.

Nästa steg

Senast uppdaterad: mars 2026