Что делает админка
После установки 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