Постављање 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.