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, аудит и тесты. ## Безопасность