Распоредување 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