VPN implementeren op headless servers
FreeGuard CLI draait native op headless Linux-servers zonder desktopomgeving. Of u nu een cloud-instantie beveiligt, een thuislab beschermt of containerverkeer via VPN routeert, deze handleiding behandelt installatie, authenticatie, serviceconfiguratie en monitoring voor productieserverimplementaties.
Waarom VPN op een server draaien?
Servers verwerken gevoelig verkeer: databaseverbindingen, API-aanroepen, back-upoverdrachten en communicatie tussen services. Het draaien van VPN op de server zelf zorgt ervoor dat al het uitgaande verkeer versleuteld is zonder individuele applicaties te configureren.
Veelvoorkomende toepassingen:
- Cloud-instanties die toegang hebben tot geografisch beperkte API’s
- CI/CD-runners die een consistente netwerkidentiteit nodig hebben
- Zelf gehoste diensten die profiteren van IP-maskering
- Ontwikkelservers die door gedistribueerde teams worden gebruikt
Installatie
Ubuntu / Debian
curl -fsSL https://cli.freeguard.com/install.sh | bash
Of installeer vanuit de APT-repository:
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
Of gebruik de RPM-repository:
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-gebruikers moeten mogelijk eerst libc6-compat installeren:
apk add libc6-compat
curl -fsSL https://cli.freeguard.com/install.sh | bash
Installatie verifiëren
freeguard --version
Headless authenticatie
Op servers zonder browser kunt u de standaard OAuth-inlogstroom niet gebruiken. FreeGuard CLI biedt e-mailauthenticatie voor headless omgevingen.
E-mailinlog
freeguard login --method email
De CLI vraagt u om het e-mailadres van uw account in te voeren. Er wordt een verificatiecode naar dat adres gestuurd. Voer de code in de terminal in om de authenticatie te voltooien.
$ freeguard login --method email
Enter your email: [email protected]
Verification code sent. Check your inbox.
Enter code: 483291
Login successful.
Token-gebaseerde inlog
Voor geautomatiseerde implementaties gebruikt u een servicetoken:
freeguard login --method token --token YOUR_SERVICE_TOKEN
Genereer servicetokens vanuit uw accountdashboard. Tokens kunnen worden beperkt tot specifieke servers en hebben een configureerbare vervaldatum.
Authenticatie verifiëren
freeguard status --json | jq '.authenticated'
Draaien als systemd-service
Voor productie-implementaties draait u FreeGuard CLI als systemd-service zodat deze opstart bij het booten en herstart bij fouten.
Servicebestand aanmaken
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
Inschakelen en starten
sudo systemctl daemon-reload
sudo systemctl enable freeguard
sudo systemctl start freeguard
Servicestatus controleren
sudo systemctl status freeguard
Logs bekijken
sudo journalctl -u freeguard -f
Scripting met --json en --no-color
Productiescripts moeten gestructureerde output parsen in plaats van menselijk leesbare tekst.
JSON-output
Elk commando ondersteunt --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
}
Kleurloze modus
Verwijder ANSI-kleurcodes voor schone logbestanden:
freeguard status --no-color >> /var/log/freeguard-status.log
Scriptvoorbeeld
Een health-check script dat opnieuw verbindt bij fouten:
#!/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
Voeg het toe aan cron voor regelmatige controles:
# Check VPN health every 5 minutes
*/5 * * * * /opt/scripts/freeguard-health.sh
Monitoring en health checks
Basis health check
freeguard status --json | jq -r '.connected'
Geeft true of false terug. Eenvoudig genoeg voor elk monitoringsysteem.
Integratie met monitoringtools
Exporteer de status naar Prometheus, Datadog of elk monitoringsysteem dat shell-commando’s kan uitvoeren:
#!/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
Waarschuwingen
Combineer de health check met uw waarschuwingssysteem. Voorbeeld met een eenvoudige 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
Beveiligingsoverwegingen
- Draaien als root: De VPN-tunnel vereist root-rechten om netwerkroutes te wijzigen. De systemd-service draait standaard als root.
- Tokenopslag: Servicetokens worden opgeslagen in
~/.config/freeguard/. Zorg voor de juiste bestandsrechten (chmod 600). - Firewallregels: Als u UFW of iptables gebruikt, zorg ervoor dat de VPN-tunnelinterface is toegestaan.
- Kill switch: Ingebouwd, zonder dat u iets hoeft in te schakelen. Zolang FreeGuard actief is, wordt verkeer dat via FreeGuard wordt gerouteerd geblokkeerd als de VPN wegvalt, in plaats van via de reguliere verbinding van de server naar buiten te gaan, totdat FreeGuard opnieuw verbinding maakt.
Volgende stappen
- FreeGuard CLI — volledige commandoreferentie
- Handleiding ontwikkelaarsworkflow — integreer VPN in uw ontwikkeltools
- Prijzen — serverimplementaties werken met elk abonnement
Laatst bijgewerkt: maart 2026