From 2c4e2353e16c849653a9e3ec327539f88054a752 Mon Sep 17 00:00:00 2001 From: host Date: Sun, 9 Aug 2026 14:48:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=20=D1=8D=D1=82=D0=B0?= =?UTF-8?q?=D0=BF=20=D0=B8=D0=BD=D1=82=D0=B5=D0=B3=D1=80=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D0=B8=20=D1=81=20Proxmox?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 98 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 57 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index 55967bd..ab4a239 100644 --- a/README.md +++ b/README.md @@ -7,69 +7,85 @@ - регистрация и OAuth2 password login; - Argon2id-хеширование паролей; - короткоживущий Bearer JWT; -- SQLAlchemy-модель пользователя; -- модели `Template` и `Instance`; +- модели `User`, `Template` и `Instance`; - строгая валидация ресурсов шаблонов; -- активные шаблоны доступны авторизованным пользователям; -- создание и деактивация шаблонов только администратором; +- CRUD шаблонов для администратора; - список инстансов с проверкой ownership; -- администратор видит все инстансы; -- frontend-формы регистрации и входа. +- Proxmox client через API-токен; +- создание VM из cloud-init-шаблона; +- создание LXC из CT-шаблона; +- настройка DHCP, CPU, RAM и диска; +- frontend-кабинет шаблонов и инстансов. -## API текущего этапа +## Текущий API ```text 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 +POST /api/templates +DELETE /api/templates/{template_id} GET /api/instances -GET /api/admin/ping # только admin +POST /api/instances +GET /api/admin/ping ``` -## Обновление уже установленной VM +## Настройка Proxmox + +В `.env` укажите: + +```env +PVE_HOST=https://192.168.31.4:8006 +PVE_NODE=pve1 +PVE_TOKEN_NAME=panel@pve!panel +PVE_TOKEN_VALUE=... +PVE_VERIFY_SSL=true +PVE_VM_STORAGE=SSD +PVE_LXC_STORAGE=SSD +PVE_BRIDGE=vmbr0 +``` + +Для VM-шаблона укажите `source_vmid`. Для LXC — полный `source_template`, например: + +```text +local:vztmpl/debian-12-standard.tar.zst +``` + +## Создание VPS + +```bash +curl -X POST https://cloud.rummail.ru/api/instances \ + -H "Authorization: Bearer $TOKEN" \ + -H 'Content-Type: application/json' \ + -d '{ + "name":"test-vm", + "template_id":1, + "username":"paneluser", + "password":"ChangeMe-Strong-123" + }' +``` + +Операция сейчас синхронная и может занимать несколько минут. Пароль возвращается только в ответе создания и не сохраняется в БД. + +## Обновление VM ```bash cd ~/Proxmox-VPS-Panel-secure git pull origin main docker compose up -d --build docker compose ps +docker compose logs --tail=100 backend ``` -После запуска таблицы `templates` и `instances` создаются автоматически текущим временным механизмом `create_all()`. - -## Создание VM-шаблона через API - -Сначала получите JWT через `/api/auth/login`, затем выполните: - -```bash -curl -X POST http://127.0.0.1:5173/api/templates \ - -H "Authorization: Bearer $TOKEN" \ - -H 'Content-Type: application/json' \ - -d '{ - "name":"ubuntu-24", - "description":"Ubuntu 24.04 cloud-init", - "guest_type":"vm", - "source_vmid":1000, - "cores":2, - "memory_mb":2048, - "disk_gb":20 - }' -``` - -Для LXC вместо `source_vmid` используется `source_template`, например `local:vztmpl/debian-12-standard.tar.zst`. - ## Следующие этапы -1. Добавить Alembic-миграции и убрать временный `create_all()`. -2. Добавить Proxmox client с TLS, таймаутами и ожиданием задач. -3. Реализовать создание VM/LXC из выбранного шаблона. -4. Добавить очередь провижининга и резервирование VMID. -5. Добавить действия start/stop/reboot/delete. -6. Добавить UI шаблонов и инстансов. -7. Добавить rate limiting, аудит и автоматические тесты. +1. Добавить очередь провижининга и резервирование VMID. +2. Добавить UI формы создания VPS с одноразовым отображением пароля. +3. Добавить получение IP через QEMU Guest Agent и LXC interfaces. +4. Добавить start/stop/shutdown/reboot/delete. +5. Добавить Alembic-миграции вместо временного `create_all()`. +6. Добавить rate limiting, аудит и тесты. ## Безопасность