VPN auf Headless-Servern bereitstellen
FreeGuard CLI läuft nativ auf Headless-Linux-Servern ohne Desktop-Umgebung. Ob Sie eine Cloud-Instanz absichern, ein Heimlabor schützen oder Container-Traffic über VPN leiten — dieser Leitfaden behandelt Installation, Authentifizierung, Dienstkonfiguration und Überwachung für produktive Server-Deployments.
Warum VPN auf einem Server betreiben?
Server verarbeiten sensiblen Datenverkehr: Datenbankverbindungen, API-Aufrufe, Backup-Übertragungen und Kommunikation zwischen Diensten. Der Betrieb von VPN direkt auf dem Server stellt sicher, dass der gesamte ausgehende Datenverkehr verschlüsselt ist, ohne einzelne Anwendungen konfigurieren zu müssen.
Häufige Anwendungsfälle:
- Cloud-Instanzen, die auf geo-eingeschränkte APIs zugreifen
- CI/CD-Runner, die eine konsistente Netzwerkidentität benötigen
- Selbst gehostete Dienste, die von IP-Maskierung profitieren
- Entwicklungsserver, die von verteilten Teams genutzt werden
Installation
Ubuntu / Debian
curl -fsSL https://cli.freeguard.com/install.sh | bash
Oder über das APT-Repository installieren:
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
Oder das RPM-Repository verwenden:
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-Benutzer müssen möglicherweise zuerst libc6-compat installieren:
apk add libc6-compat
curl -fsSL https://cli.freeguard.com/install.sh | bash
Installation überprüfen
freeguard --version
Headless-Authentifizierung
Auf Servern ohne Browser können Sie den Standard-OAuth-Anmeldefluss nicht verwenden. FreeGuard CLI bietet E-Mail-basierte Authentifizierung für Headless-Umgebungen.
E-Mail-Anmeldung
freeguard login --method email
Die CLI fordert Sie auf, Ihre Konto-E-Mail einzugeben. Ein Bestätigungscode wird an diese Adresse gesendet. Geben Sie den Code im Terminal ein, um die Authentifizierung abzuschließen.
$ freeguard login --method email
Enter your email: [email protected]
Verification code sent. Check your inbox.
Enter code: 483291
Login successful.
Token-basierte Anmeldung
Für automatisierte Deployments verwenden Sie einen Service-Token:
freeguard login --method token --token YOUR_SERVICE_TOKEN
Generieren Sie Service-Tokens über Ihr Konto-Dashboard. Tokens können auf bestimmte Server beschränkt werden und haben eine konfigurierbare Ablaufzeit.
Authentifizierung überprüfen
freeguard status --json | jq '.authenticated'
Als systemd-Dienst ausführen
Für Produktiv-Deployments führen Sie FreeGuard CLI als systemd-Dienst aus, damit er beim Booten startet und bei Fehlern neu startet.
Dienstdatei erstellen
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
Aktivieren und starten
sudo systemctl daemon-reload
sudo systemctl enable freeguard
sudo systemctl start freeguard
Dienststatus prüfen
sudo systemctl status freeguard
Logs anzeigen
sudo journalctl -u freeguard -f
Skripting mit --json und --no-color
Produktions-Skripte sollten strukturierte Ausgaben parsen statt menschenlesbaren Text.
JSON-Ausgabe
Jeder Befehl unterstützt --json:
# Connection status
freeguard status --json
Ausgabe:
{
"connected": true,
"server": "us-east-1",
"server_name": "New York",
"protocol": "hysteria2",
"uptime": 86400,
"bytes_sent": 1048576,
"bytes_received": 5242880
}
No-Color-Modus
ANSI-Farbcodes für saubere Log-Dateien entfernen:
freeguard status --no-color >> /var/log/freeguard-status.log
Skripting-Beispiel
Ein Health-Check-Skript, das bei Fehler neu verbindet:
#!/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
Zum Cron hinzufügen für regelmäßige Prüfungen:
# Check VPN health every 5 minutes
*/5 * * * * /opt/scripts/freeguard-health.sh
Überwachung und Health Checks
Einfacher Health Check
freeguard status --json | jq -r '.connected'
Gibt true oder false zurück. Einfach genug für jedes Überwachungssystem.
Integration mit Überwachungstools
Status an Prometheus, Datadog oder jedes Überwachungssystem exportieren, das Shell-Befehle ausführen kann:
#!/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
Benachrichtigungen
Kombinieren Sie den Health Check mit Ihrem Benachrichtigungssystem. Beispiel mit einem einfachen 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
Sicherheitshinweise
- Als root ausführen: Der VPN-Tunnel benötigt Root-Rechte zum Ändern von Netzwerkrouten. Der systemd-Dienst läuft standardmäßig als root.
- Token-Speicherung: Service-Tokens werden in
~/.config/freeguard/gespeichert. Stellen Sie angemessene Dateiberechtigungen sicher (chmod 600). - Firewall-Regeln: Bei Verwendung von UFW oder iptables stellen Sie sicher, dass die VPN-Tunnel-Schnittstelle zugelassen ist.
- Kill Switch: Integriert, ohne dass etwas aktiviert werden muss. Solange FreeGuard läuft, wird der über FreeGuard geleitete Datenverkehr bei einem Ausfall des VPN unterbrochen, statt über die reguläre Verbindung des Servers zu laufen, bis FreeGuard die Verbindung wiederherstellt.
Nächste Schritte
- FreeGuard CLI — vollständige Befehlsreferenz
- Entwickler-Workflow-Leitfaden — VPN in Ihre Entwicklungstools integrieren
- Preise — Server-Deployments funktionieren mit jedem Plan
Zuletzt aktualisiert: März 2026