Разгръщане на VPN на сървъри без графичен интерфейс
FreeGuard CLI работи нативно на Linux сървъри без графичен интерфейс, без необходимост от десктоп среда. Независимо дали защитавате облачна инстанция, домашна лаборатория или насочвате контейнерен трафик през VPN, това ръководство обхваща инсталацията, автентикацията, конфигурацията на услугата и мониторинга за продукционни сървърни среди.

Разгръщане на VPN на сървъри без графичен интерфейс

FreeGuard CLI работи нативно на Linux сървъри без графичен интерфейс, без необходимост от десктоп среда. Независимо дали защитавате облачна инстанция, домашна лаборатория или насочвате контейнерен трафик през VPN, това ръководство обхваща инсталацията, автентикацията, конфигурацията на услугата и мониторинга за продукционни сървърни среди.

Защо да стартирате VPN на сървър?

Сървърите обработват чувствителен трафик: връзки с бази данни, API извиквания, трансфер на резервни копия и комуникация между услугите. Стартирането на VPN на самия сървър гарантира, че целият изходящ трафик е криптиран, без да конфигурирате отделни приложения.

Често срещани случаи на употреба:

  • Облачни инстанции, достъпващи географски ограничени API
  • CI/CD рънъри, нуждаещи се от постоянна мрежова идентичност
  • Самостоятелно хоствани услуги, които се възползват от маскиране на IP
  • Сървъри за разработка, използвани от разпределени екипи

Инсталация

Ubuntu / Debian

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

Или инсталирайте от 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

Или използвайте 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

Потребителите на Alpine може да се наложи първо да инсталират libc6-compat:

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

Проверка на инсталацията

freeguard --version

Автентикация без графичен интерфейс

На сървъри без браузър не можете да използвате стандартния OAuth вход. FreeGuard CLI предоставя автентикация чрез имейл за среди без графичен интерфейс.

Вход с имейл

freeguard login --method email

CLI ви подканва да въведете имейла на акаунта си. Верификационен код се изпраща на този адрес. Въведете кода в терминала, за да завършите автентикацията.

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

Вход с токен

За автоматизирани разгръщания използвайте сервизен токен:

freeguard login --method token --token YOUR_SERVICE_TOKEN

Генерирайте сервизни токени от таблото на акаунта ви. Токените могат да бъдат ограничени до конкретни сървъри и имат настройваем срок на валидност.

Проверка на автентикацията

freeguard status --json | jq '.authenticated'

Стартиране като systemd услуга

За продукционни среди стартирайте FreeGuard CLI като systemd услуга, за да се стартира при зареждане и да се рестартира при грешка.

Създаване на файла на услугата

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

Активиране и стартиране

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

Проверка на статуса на услугата

sudo systemctl status freeguard

Преглед на логовете

sudo journalctl -u freeguard -f

Скриптиране с --json и --no-color

Продукционните скриптове трябва да парсват структуриран изход вместо текст, четим от хора.

JSON изход

Всяка команда поддържа --json:

# Connection status
freeguard status --json

Изход:

{
  "connected": true,
  "server": "us-east-1",
  "server_name": "New York",
  "protocol": "hysteria2",
  "uptime": 86400,
  "bytes_sent": 1048576,
  "bytes_received": 5242880
}

Режим без цветове

Премахнете ANSI цветовите кодове за чисти лог файлове:

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

Пример за скриптиране

Скрипт за проверка на здравето, който се свързва отново при грешка:

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

Добавете го в cron за редовни проверки:

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

Мониторинг и проверки на здравето

Основна проверка на здравето

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

Връща true или false. Достатъчно просто за всяка система за мониторинг.

Интеграция с инструменти за мониторинг

Експортирайте статуса към Prometheus, Datadog или всяка система за мониторинг, която може да изпълнява 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

Известия

Комбинирайте проверката на здравето с вашата система за известия. Пример с прост 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

Съображения за сигурност

  • Стартиране като root: VPN тунелът изисква root привилегии за промяна на мрежовите маршрути. Услугата systemd работи като root по подразбиране.
  • Съхранение на токени: Сервизните токени се съхраняват в ~/.config/freeguard/. Уверете се, че файловите разрешения са подходящи (chmod 600).
  • Правила на защитната стена: Ако използвате UFW или iptables, уверете се, че интерфейсът на VPN тунела е разрешен.
  • Kill switch: Активирайте kill switch за блокиране на целия трафик при прекъсване на VPN: freeguard config set kill-switch true.

Следващи стъпки

Последна актуализация: март 2026 г.