@@ -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 применяются при старте контейнера.
|
||||
@@ -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 сервера из админки
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
+6
-1
@@ -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
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
</nav>
|
||||
<div class="meta">
|
||||
<div>{{ admin.username }}</div>
|
||||
<div class="muted" style="margin-top:0.35rem;font-size:0.78rem">v{{ app_version }}</div>
|
||||
<form class="inline-form" method="post" action="/admin/logout" style="margin-top:0.6rem">
|
||||
<button class="btn btn-ghost btn-sm" type="submit" style="color:#d7dee5;border-color:#2a343c">Выйти</button>
|
||||
</form>
|
||||
|
||||
Reference in New Issue
Block a user