diff --git a/README.md b/README.md index 45c07dd..55967bd 100644 --- a/README.md +++ b/README.md @@ -2,64 +2,73 @@ Защищённая переработка `Proxmox-VPS-Panel`. -## Текущий этап: авторизация +## Реализовано -Добавлены: - -- SQLAlchemy-модель `User`; -- PostgreSQL-сессии; -- регистрация пользователей; -- автоматическое назначение роли `admin` первому пользовователю; +- регистрация и OAuth2 password login; - Argon2id-хеширование паролей; -- OAuth2 password login; - короткоживущий Bearer JWT; -- endpoint `/auth/me`; -- проверка активного пользователя; +- SQLAlchemy-модель пользователя; +- модели `Template` и `Instance`; +- строгая валидация ресурсов шаблонов; +- активные шаблоны доступны авторизованным пользователям; +- создание и деактивация шаблонов только администратором; +- список инстансов с проверкой ownership; +- администратор видит все инстансы; - frontend-формы регистрации и входа. -API-пути доступны через frontend-прокси: +## API текущего этапа ```text -POST /api/auth/register -POST /api/auth/login -GET /api/auth/me +POST /api/auth/register +POST /api/auth/login +GET /api/auth/me +GET /api/templates +POST /api/templates # только admin +DELETE /api/templates/{template_id} # только admin +GET /api/instances +GET /api/admin/ping # только admin ``` -## Запуск +## Обновление уже установленной VM ```bash -cp .env.example .env -# задайте SECRET_KEY длиной не менее 32 символов, -# POSTGRES_PASSWORD, параметры Proxmox и ALLOW_ORIGINS +cd ~/Proxmox-VPS-Panel-secure +git pull origin main docker compose up -d --build +docker compose ps ``` -Frontend будет доступен на `http://IP-АДРЕС-VM:5173`. +После запуска таблицы `templates` и `instances` создаются автоматически текущим временным механизмом `create_all()`. -## Проверка регистрации через curl +## Создание VM-шаблона через API + +Сначала получите JWT через `/api/auth/login`, затем выполните: ```bash -curl -X POST http://127.0.0.1:5173/api/auth/register \ +curl -X POST http://127.0.0.1:5173/api/templates \ + -H "Authorization: Bearer $TOKEN" \ -H 'Content-Type: application/json' \ - -d '{"email":"admin@example.local","password":"ChangeMe-Strong-123"}' + -d '{ + "name":"ubuntu-24", + "description":"Ubuntu 24.04 cloud-init", + "guest_type":"vm", + "source_vmid":1000, + "cores":2, + "memory_mb":2048, + "disk_gb":20 + }' ``` -Проверка входа: - -```bash -curl -X POST http://127.0.0.1:5173/api/auth/login \ - -H 'Content-Type: application/x-www-form-urlencoded' \ - -d 'username=admin@example.local&password=ChangeMe-Strong-123' -``` +Для LXC вместо `source_vmid` используется `source_template`, например `local:vztmpl/debian-12-standard.tar.zst`. ## Следующие этапы -1. Перенести модели шаблонов и инстансов. -2. Добавить Alembic-миграции вместо временного `create_all()`. -3. Реализовать очередь провижининга и резервирование VMID. -4. Добавить Proxmox client с ожиданием и повторными попытками задач. -5. Реализовать административную панель пользователей и шаблонов. -6. Добавить создание и управление VM/LXC. +1. Добавить Alembic-миграции и убрать временный `create_all()`. +2. Добавить Proxmox client с TLS, таймаутами и ожиданием задач. +3. Реализовать создание VM/LXC из выбранного шаблона. +4. Добавить очередь провижининга и резервирование VMID. +5. Добавить действия start/stop/reboot/delete. +6. Добавить UI шаблонов и инстансов. 7. Добавить rate limiting, аудит и автоматические тесты. ## Безопасность