MyCottage.cc

Установка интерфейса
администратора StrongSwan

web-админка strongSwan сервера

Как установить интерфейс администратора StrongSwan: web-панель для управления site-to-site объектами, VPN-пользователями, сертификатами, конфигами и журналами.

К списку статей

Что делает админка

После установки strongSwan можно управлять туннелями вручную через файлы. Но когда офисов становится больше двух, удобнее иметь web-панель: добавлять Office 1/2/3, генерировать swanctl.conf, применять конфиг, смотреть статус, uptime, трафик и ошибки.

В этой статье описан обезличенный вариант нашей панели: без реального домена, IP, паролей и ключей.

Архитектура панели

  • Caddy — HTTPS, BasicAuth и проксирование /admin.
  • FastAPI panel — web-интерфейс, SQLite, CSRF, audit, генерация конфигов.
  • strongSwan — IKEv2/IPsec hub, VICI socket, загрузка swanctl --load-all.
  • State directory — база, сертификаты, generated-конфиги, логи, backup.

Пример структуры на VPS

/opt/mycottagevpn/              # код проекта
/opt/mycottagevpn-state/        # runtime state, не хранить в git
  db/panel.db
  generated/swanctl.conf
  certs/
  private/
  logs/
  backups/
  secrets.env

Минимальные переменные окружения

DOMAIN=vpn.example.com
VPN_PUBLIC_IP=203.0.113.10
VPN_LEFTID=vpn.example.com
VPN_BIND_ADDRESS=%any
APP_ADMIN_USER=admin
APP_ADMIN_PASS=CHANGE_ME_PANEL_PASSWORD
BASIC_AUTH_USER=admin
BASIC_AUTH_PASS=CHANGE_ME_BASIC_AUTH_PASSWORD
COOKIE_SECURE=true

Установка Docker и state-директории

apt update
apt install -y docker.io docker-compose-v2
systemctl enable --now docker

install -d -m 700 /opt/mycottagevpn-state
install -d -m 700 /opt/mycottagevpn-state/db /opt/mycottagevpn-state/generated
install -d -m 700 /opt/mycottagevpn-state/certs /opt/mycottagevpn-state/private
install -d -m 700 /opt/mycottagevpn-state/logs /opt/mycottagevpn-state/backups

Запуск панели

cd /opt/mycottagevpn/deploy
docker compose --env-file /opt/mycottagevpn-state/secrets.env -f compose.vps.yml up -d --build
docker compose --env-file /opt/mycottagevpn-state/secrets.env -f compose.vps.yml ps

Что должно быть в интерфейсе

  • General — состояние хаба, CPU/RAM/Disk, uptime, Docker, reload status.
  • Site-to-site — Office 1/2/3, LAN, Remote ID, Remote addr, PSK, enabled/disabled.
  • Road-warrior — пользователи удалённого доступа.
  • Certificates / PKI — CA, server cert, срок действия, renew.
  • Admin — смена пароля, backup SQLite, системные действия.
  • Journal — audit, strongSwan logs, reload events.

Установочный файл панели

Это безопасный шаблон: он создаёт state-директории и secrets.env, но не содержит реальных данных. Перед запуском нужно задать свои переменные окружения.

export DOMAIN="vpn.example.com"
export VPN_PUBLIC_IP="203.0.113.10"
export VPN_LEFTID="vpn.example.com"
export APP_ADMIN_PASS="$(openssl rand -hex 24)"
export BASIC_AUTH_PASS="$(openssl rand -hex 18)"
sudo -E bash install-mycottage-admin-example.sh

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

curl -I https://vpn.example.com/admin
cat /opt/mycottagevpn-state/logs/reload-status.txt
docker exec mycottagevpn-strongswan swanctl --list-conns
docker exec mycottagevpn-strongswan swanctl --list-sas