From 0b3103bd78ab46607a91ba719822eaa85b503874 Mon Sep 17 00:00:00 2001 From: test2 Date: Sat, 25 Jul 2026 22:34:22 +0300 Subject: [PATCH] Release VpnPanel 1.0.0 Co-authored-by: Cursor --- CHANGELOG.md | 20 ++++++++++++++++++++ README.md | 27 +++++++++++++-------------- VERSION | 1 + app/config.py | 1 + app/main.py | 7 ++++++- app/templates/admin/layout.html | 1 + 6 files changed, 42 insertions(+), 15 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 VERSION diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..d147987 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,20 @@ +# Changelog + +## [1.0.0] — 2026-07-25 + +Первый стабильный релиз VpnPanel. + +### Возможности + +- Веб-админка на FastAPI + PostgreSQL (Dokploy / Docker Compose) +- Серверы WireGuard и AmneziaWG 2.0 по SSH: проверка, установка VPN, синхронизация конфигов +- Клиенты WG/AWG: создание, QR, скачивание `.conf` +- Подключение панелей **3x-ui** (API v3.5.0): API Token или логин/пароль +- Создание клиентов VLESS и WireGuard в 3x-ui (срок, старт после первого использования, лимиты) +- Учёт клиентов, созданных через сайт +- Выбор inbound’ов на сервере 3x-ui, доступных для пользователей +- Единая страница клиентов: вкладки WireGuard/AWG и 3x-ui + +### Деплой + +Порт панели: `20000`. Миграции Alembic применяются при старте контейнера. diff --git a/README.md b/README.md index 152134d..6d2b4ab 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,19 @@ # VpnPanel -Веб‑панель (сайт) для управления **WireGuard** и **AmneziaWG 2.0** на VPS. +**Версия 1.0.0** + +Веб‑панель (сайт) для управления **WireGuard**, **AmneziaWG 2.0** и панелями **3x-ui** на VPS. В отличие от BandjuPanel это не десктопное приложение через SSH, а обычный веб‑сайт с админкой, который крутится на сервере (Dokploy / Docker Compose) и хранит данные в PostgreSQL. -## Что уже есть +## Что есть в 1.0 -- Лендинг `/` -- Админка `/admin` (логин из ENV) -- Серверы WireGuard и AWG 2.0 (создаются при старте) -- Клиенты: создать / вкл-выкл / удалить -- Скачивание `.conf` и QR‑код -- Запись серверных конфигов в volumes `/data/wireguard` и `/data/amneziawg` -- PostgreSQL + Alembic миграции -- Docker Compose под Dokploy +- Лендинг `/` и админка `/admin` (логин из ENV) +- Серверы WireGuard / AWG 2.0: SSH, установка VPN на VPS, синхронизация конфигов +- Клиенты WG/AWG: создать / вкл-выкл / удалить, `.conf` и QR +- Панели **3x-ui**: подключение по API, VLESS / WireGuard клиенты +- Выбор inbound’ов, доступных пользователям; клиенты, созданные через сайт +- PostgreSQL + Alembic, Docker Compose под Dokploy ## Docker Compose (Dokploy) @@ -103,9 +103,8 @@ Dockerfile alembic/ # миграции ``` -## Дальше +## Дальше (после 1.0) -- Редактирование endpoint/DNS сервера из админки -- Подключение XRay / Hysteria2 / MTProto -- Статистика handshake / трафика - Пользовательский кабинет (не только admin) +- Статистика handshake / трафика +- Редактирование endpoint/DNS сервера из админки diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..3eefcb9 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +1.0.0 diff --git a/app/config.py b/app/config.py index 581a315..bcf9b03 100644 --- a/app/config.py +++ b/app/config.py @@ -5,6 +5,7 @@ class Settings(BaseSettings): model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8", extra="ignore") app_name: str = "VpnPanel" + app_version: str = "1.0.0" secret_key: str = "change-me" debug: bool = False diff --git a/app/main.py b/app/main.py index 2d870a3..bf88fe7 100644 --- a/app/main.py +++ b/app/main.py @@ -10,11 +10,16 @@ from app.routers import admin, auth, public, xui def create_app() -> FastAPI: - app = FastAPI(title=settings.app_name, docs_url="/api/docs" if settings.debug else None) + app = FastAPI( + title=settings.app_name, + version=settings.app_version, + docs_url="/api/docs" if settings.debug else None, + ) install_session_middleware(app) base = Path(__file__).resolve().parent templates = Jinja2Templates(directory=str(base / "templates")) + templates.env.globals["app_version"] = settings.app_version app.state.templates = templates app.state.settings = settings diff --git a/app/templates/admin/layout.html b/app/templates/admin/layout.html index 2adc07f..a98f8fc 100644 --- a/app/templates/admin/layout.html +++ b/app/templates/admin/layout.html @@ -16,6 +16,7 @@
{{ admin.username }}
+
v{{ app_version }}