# Proxmox VPS Panel Secure Защищённая переработка `Proxmox-VPS-Panel`. ## Реализовано - регистрация и OAuth2 password login; - Argon2id-хеширование паролей; - короткоживущий Bearer JWT; - SQLAlchemy-модель пользователя; - модели `Template` и `Instance`; - строгая валидация ресурсов шаблонов; - активные шаблоны доступны авторизованным пользователям; - создание и деактивация шаблонов только администратором; - список инстансов с проверкой ownership; - администратор видит все инстансы; - frontend-формы регистрации и входа. ## 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 GET /api/instances GET /api/admin/ping # только admin ``` ## Обновление уже установленной VM ```bash cd ~/Proxmox-VPS-Panel-secure git pull origin main docker compose up -d --build docker compose ps ``` После запуска таблицы `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, аудит и автоматические тесты. ## Безопасность Не используйте `root@pam` для API-токена. Создайте отдельного Proxmox-пользователя с минимальным набором прав. Не публикуйте `.env`, не отключайте TLS-проверку и настройте резервное копирование PostgreSQL.