Локальная Web‑панель для управления контейнерами Amnezia на сервере. UI + API для мониторинга, управления протоколами/сервисами, работы с клиентами и экспорта конфигов.
- Список контейнеров и статусов
start / stop / restartконтейнеров- Логи контейнеров
- Редактор конфигов для поддерживаемых контейнеров
- Экспорт конфигов (download / copy / QR)
- Установка/удаление протоколов и сервисов через UI
- Мониторинг хоста (CPU, RAM, uptime)
- Подсчёт активных подключений
- Плитка занятых портов
- Перезапуск сервера из UI
- Клиенты (WireGuard/AWG) + экспорт
vpn:// - Split‑tunnel (SQLite + применение в
vpn://) - Опционально: системный split‑tunnel через
nftables - Basic Auth
- Linux x86_64 (рекомендуется Ubuntu 20.04+)
- root/sudo доступ
- Docker
- systemd
- Открытый порт для UI (по умолчанию
8090)
sudo apt update
sudo apt install -y ca-certificates curl gitcurl -fsSL https://get.docker.com | sudo shsudo mkdir -p /opt/amnezia-webui
sudo chown -R $USER:$USER /opt/amnezia-webui
git clone https://github.com/Valerrra/amnezia-webui.git /opt/amnezia-webui
cd /opt/amnezia-webuidocker run --rm -v $PWD:/src -w /src -e CGO_ENABLED=0 golang:1.22 \
bash -lc "export PATH=/usr/local/go/bin:$PATH; go build -o amnezia-webui ./cmd/server"sudo tee /etc/amnezia-webui.env > /dev/null <<'EOF'
WEBUI_PORT=8090
WEBUI_USER=admin
WEBUI_PASSWORD=change-me
SCRIPTS_DIR=/opt/amnezia-webui/scripts
DB_PATH=/opt/amnezia-webui/data/amnezia.db
# Включить системный split-tunnel (опционально)
# SPLIT_TUNNEL_SYSTEM=1
EOFsudo tee /etc/systemd/system/amnezia-webui.service > /dev/null <<'EOF'
[Unit]
Description=Amnezia WebUI
After=network.target docker.service
Requires=docker.service
[Service]
Type=simple
EnvironmentFile=/etc/amnezia-webui.env
WorkingDirectory=/opt/amnezia-webui
ExecStart=/opt/amnezia-webui/amnezia-webui
Restart=always
RestartSec=2
[Install]
WantedBy=multi-user.target
EOFsudo mkdir -p /opt/amnezia-webui/data
sudo systemctl daemon-reload
sudo systemctl enable --now amnezia-webui
sudo systemctl status amnezia-webui --no-pagerОткройте в браузере:
http://<server-ip>:8090
Войдите по Basic Auth (логин/пароль из /etc/amnezia-webui.env).
cd /opt/amnezia-webui
git pull
docker run --rm -v $PWD:/src -w /src -e CGO_ENABLED=0 golang:1.22 \
bash -lc "export PATH=/usr/local/go/bin:$PATH; go build -o amnezia-webui ./cmd/server"
sudo systemctl restart amnezia-webuiWEBUI_PORT— порт UI (по умолчанию8090)WEBUI_USER— логин Basic Auth (по умолчаниюadmin)WEBUI_PASSWORD— пароль Basic AuthSCRIPTS_DIR— путь к скриптам (по умолчанию/opt/amnezia-webui/scripts)DB_PATH— путь к SQLite (по умолчанию/opt/amnezia-webui/data/amnezia.db)SPLIT_TUNNEL_SYSTEM=1— включить системный split‑tunnel черезnftables
- Для установки/удаления протоколов используются локальные скрипты из
scripts/. - Рекомендуется ограничить доступ к UI по IP‑фильтру/файрволу и задать сложный пароль.
GET /api/healthGET /api/containersPOST /api/containers/{name}/start|stop|restartGET /api/containers/{name}/logs?tail=200GET /api/containers/{name}/configPOST /api/containers/{name}/configGET /api/containers/{name}/exportGET /api/protocolsPOST /api/protocols/{id}/install|removeGET /api/monitoringGET /api/portsGET /api/alertsGET /api/clientsPOST /api/clientsGET /api/clients/{id}/exportPOST /api/server/restartGET /api/split-tunnelPOST /api/split-tunnel
TBD