@@ -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/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)
|
||||
Reference in New Issue
Block a user