first commit

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-25 20:36:00 +03:00
co-authored by Cursor
commit bbff3cb10b
35 changed files with 2054 additions and 0 deletions
+86
View File
@@ -0,0 +1,86 @@
# 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/H1H4)
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)