# Proxmox VPS Panel Secure Защищённая переработка `Proxmox-VPS-Panel`. ## Реализовано - регистрация и OAuth2 password login; - Argon2id-хеширование паролей; - короткоживущий Bearer JWT; - модели `User`, `Template` и `Instance`; - строгая валидация ресурсов шаблонов; - CRUD шаблонов для администратора; - список инстансов с проверкой ownership; - Proxmox client через API-токен; - создание VM из cloud-init-шаблона; - создание LXC из CT-шаблона; - настройка DHCP, CPU, RAM и диска; - frontend-кабинет шаблонов и инстансов. ## Текущий API ```text POST /api/auth/register POST /api/auth/login GET /api/auth/me GET /api/templates POST /api/templates DELETE /api/templates/{template_id} GET /api/instances POST /api/instances GET /api/admin/ping ``` ## Настройка 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 ``` ## Следующие этапы 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, аудит и тесты. ## Безопасность Не используйте `root@pam` для API-токена. Создайте отдельного Proxmox-пользователя с минимальным набором прав. Не публикуйте `.env`, не отключайте TLS-проверку и настройте резервное копирование PostgreSQL.