# VpnPanel Веб‑панель (сайт) для управления **WireGuard** и **AmneziaWG 2.0** на VPS. В отличие от BandjuPanel это не десктопное приложение через SSH, а обычный веб‑сайт с админкой, который крутится на сервере (Dokploy / Docker Compose) и хранит данные в PostgreSQL. ## Что уже есть - Лендинг `/` - Админка `/admin` (логин из ENV) - Серверы WireGuard и AWG 2.0 (создаются при старте) - Клиенты: создать / вкл-выкл / удалить - Скачивание `.conf` и QR‑код - Запись серверных конфигов в volumes `/data/wireguard` и `/data/amneziawg` - PostgreSQL + Alembic миграции - Docker Compose под Dokploy ## Быстрый старт (Dokploy) 1. Создайте приложение типа **Docker Compose** и укажите этот репозиторий/папку. 2. Задайте переменные окружения (минимум): ```env SECRET_KEY=очень-длинный-секрет ADMIN_USERNAME=admin ADMIN_PASSWORD=надежный-пароль ADMIN_EMAIL=admin@example.com PUBLIC_HOST=ваш-домен-или-ip POSTGRES_PASSWORD=надежный-пароль-бд ``` 3. Задеплойте. Панель: `http://HOST:8000` (или через Traefik/домен Dokploy). 4. Войдите в `/admin/login` логином/паролем из ENV. Админ при каждом старте **синхронизируется из ENV** — удобно менять пароль через Dokploy без SQL. ## Локально ```bash cp .env.example .env docker compose up --build ``` Откройте http://localhost:8000 ## Как связаны VPN‑демоны Панель: 1. Хранит ключи и пиров в Postgres 2. Генерирует клиентские конфиги (и AWG‑параметры Jc/Jmin/Jmax/S1/S2/H1–H4) 3. Пишет серверный `wg0.conf` / `awg0.conf` в shared volume Дальше volume монтируется в контейнер WireGuard / AmneziaWG (или на хост), и интерфейс поднимается отдельно. Это сделано специально: панель — веб‑сайт, а VPN‑ядро можно менять независимо. Пример идеи для следующего шага (не включено в MVP): ```yaml # wireguard: # image: linuxserver/wireguard # volumes: # - wg_data:/config # ports: # - "51820:51820/udp" ``` ## Структура ``` app/ main.py # FastAPI models.py # Admin, VpnServer, VpnClient routers/ # public + admin UI services/ # ключи, конфиги WG/AWG templates/ # HTML сайта и админки docker-compose.yml Dockerfile alembic/ # миграции ``` ## Дальше - Редактирование endpoint/DNS сервера из админки - Подключение XRay / Hysteria2 / MTProto - Статистика handshake / трафика - Пользовательский кабинет (не только admin)