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
- FreeGuard CLI — komplett kommandoreferens
- Guide för utvecklararbetsflöde — integrera VPN i dina utvecklingsverktyg
- Priser — serverdistributioner fungerar med alla planer
Senast uppdaterad: mars 2026