Wdrażanie VPN na serwerach headless
FreeGuard CLI działa natywnie na serwerach Linux headless bez wymagania środowiska graficznego. Niezależnie od tego, czy zabezpieczasz instancję chmurową, chronisz domowe laboratorium, czy kierujesz ruch kontenerów przez VPN, ten przewodnik obejmuje instalację, uwierzytelnianie, konfigurację usługi i monitoring dla wdrożeń produkcyjnych.
Dlaczego uruchamiać VPN na serwerze?
Serwery obsługują wrażliwy ruch: połączenia z bazami danych, wywołania API, transfery kopii zapasowych i komunikację między usługami. Uruchomienie VPN na samym serwerze zapewnia szyfrowanie całego ruchu wychodzącego bez konfigurowania poszczególnych aplikacji.
Typowe przypadki użycia:
- Instancje chmurowe uzyskujące dostęp do API z ograniczeniami geograficznymi
- Runnery CI/CD wymagające spójnej tożsamości sieciowej
- Usługi self-hosted korzystające z maskowania IP
- Serwery deweloperskie używane przez rozproszone zespoły
Instalacja
Ubuntu / Debian
curl -fsSL https://cli.freeguard.com/install.sh | bash
Lub zainstaluj z repozytorium APT:
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
Lub użyj repozytorium RPM:
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
Użytkownicy Alpine mogą najpierw potrzebować zainstalować libc6-compat:
apk add libc6-compat
curl -fsSL https://cli.freeguard.com/install.sh | bash
Weryfikacja instalacji
freeguard --version
Uwierzytelnianie headless
Na serwerach bez przeglądarki nie możesz użyć domyślnego logowania OAuth. FreeGuard CLI zapewnia uwierzytelnianie e-mailowe dla środowisk headless.
Logowanie e-mailem
freeguard login --method email
CLI prosi o podanie adresu e-mail konta. Na ten adres zostaje wysłany kod weryfikacyjny. Wprowadź kod w terminalu, aby zakończyć uwierzytelnianie.
$ freeguard login --method email
Enter your email: [email protected]
Verification code sent. Check your inbox.
Enter code: 483291
Login successful.
Logowanie tokenem
Dla zautomatyzowanych wdrożeń użyj tokenu usługi:
freeguard login --method token --token YOUR_SERVICE_TOKEN
Generuj tokeny usługi z panelu konta. Tokeny mogą być ograniczone do konkretnych serwerów i mieć konfigurowalny czas wygaśnięcia.
Weryfikacja uwierzytelnienia
freeguard status --json | jq '.authenticated'
Uruchamianie jako usługa systemd
Dla wdrożeń produkcyjnych uruchamiaj FreeGuard CLI jako usługę systemd, aby startowała przy uruchomieniu i restartowała się przy awarii.
Tworzenie pliku usługi
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
Włączenie i uruchomienie
sudo systemctl daemon-reload
sudo systemctl enable freeguard
sudo systemctl start freeguard
Sprawdzenie statusu usługi
sudo systemctl status freeguard
Przeglądanie logów
sudo journalctl -u freeguard -f
Skryptowanie z --json i --no-color
Skrypty produkcyjne powinny analizować strukturalny wynik zamiast tekstu czytelnego dla człowieka.
Wyjście JSON
Każde polecenie obsługuje --json:
# Connection status
freeguard status --json
Wyjście:
{
"connected": true,
"server": "us-east-1",
"server_name": "New York",
"protocol": "hysteria2",
"uptime": 86400,
"bytes_sent": 1048576,
"bytes_received": 5242880
}
Tryb bez kolorów
Usuń kody kolorów ANSI dla czystych plików logów:
freeguard status --no-color >> /var/log/freeguard-status.log
Przykład skryptu
Skrypt sprawdzania stanu zdrowia, który ponownie łączy się przy awarii:
#!/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
Dodaj do crona dla regularnych sprawdzeń:
# Check VPN health every 5 minutes
*/5 * * * * /opt/scripts/freeguard-health.sh
Monitoring i sprawdzanie stanu zdrowia
Podstawowe sprawdzenie stanu
freeguard status --json | jq -r '.connected'
Zwraca true lub false. Wystarczająco proste dla dowolnego systemu monitoringu.
Integracja z narzędziami monitoringu
Eksportuj status do Prometheus, Datadog lub dowolnego systemu monitoringu, który może wykonywać polecenia shell:
#!/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
Alerty
Połącz sprawdzanie stanu z systemem alertów. Przykład z prostym webhookiem:
#!/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
Kwestie bezpieczeństwa
- Uruchamianie jako root: Tunel VPN wymaga uprawnień root do modyfikowania tras sieciowych. Usługa systemd domyślnie działa jako root.
- Przechowywanie tokenów: Tokeny usługi są przechowywane w
~/.config/freeguard/. Zapewnij odpowiednie uprawnienia plików (chmod 600). - Reguły firewalla: Jeśli używasz UFW lub iptables, upewnij się, że interfejs tunelu VPN jest dozwolony.
- Kill switch: Włącz kill switch, aby zablokować cały ruch, jeśli VPN zostanie rozłączony:
freeguard config set kill-switch true.
Następne kroki
- FreeGuard CLI — pełna dokumentacja poleceń
- Przewodnik po workflow dewelopera — zintegruj VPN ze swoimi narzędziami deweloperskimi
- Cennik — wdrożenia serwerowe działają z każdym planem
Ostatnia aktualizacja: marzec 2026