16 KiB
PVEmanager
Современная веб-панель для управления серверами Proxmox, виртуальными машинами и контейнерами LXC
Описание
PVEmanager — это самостоятельно размещаемая веб-панель, которая предоставляет единый интерфейс для управления несколькими серверами и кластерами Proxmox VE. Она охватывает полный жизненный цикл ВМ/LXC — от развертывания до мониторинга — с контролем доступа на основе ролей, уведомлениями и управлением IP-адресами.
Возможности
Инфраструктура
- Управление несколькими серверами — подключайте и управляйте несколькими серверами и кластерами Proxmox с единой панели
- Жизненный цикл ВМ и LXC — создавайте, запускайте, останавливайте, перезагружайте, изменяйте размер, удаляйте виртуальные машины и контейнеры
- Массовые операции — массовый запуск/остановка/перезагрузка/удаление с очередью и отслеживанием прогресса
- Управление снимками — создавайте, откатывайте, удаляйте снимки с помощью асинхронной системы очередей
- Шаблоны ОС — развертывайте ВМ из шаблонов; автоматическая репликация между узлами
- Каталог облачных образов — просмотр и скачивание образов ОС из облачных репозиториев (стандартные зеркала Proxmox и кастомные источники); автоматическая конвертация в шаблоны VM с фильтрацией по архитектуре
- Извлечение/монтирование ISO — подключайте или извлекайте ISO на работающей ВМ, с переключателем порядка загрузки (с диска или с ISO), применяемым через гибридную перезагрузку — штатное ACPI-выключение с откатом на принудительную остановку
- Развёртывание CT-шаблонов — создавайте LXC-контейнеры напрямую из CT-файлов Proxmox (
.tar.zst,.tar.gz) с интеграцией IPAM и SSH-ключей - Единый мастер создания инстансов — многошаговый мастер для создания как VM-шаблонов QEMU, так и LXC CT-шаблонов
- Поддержка SDN — управляйте зонами Software-Defined Networking, VNet и подсетями; редактируйте зоны и VNet; автоматическое создание сетей IPAM для подсетей
- Сетевые интерфейсы узлов — управляйте сетевыми интерфейсами на уровне узла (мосты, связки, VLAN); применяйте/откатывайте ожидающую конфигурацию
- Страница сетей — унифицированный интерфейс для управления SDN и сетевыми интерфейсами узлов
App Store
- Каталог self-hosted приложений — установка в один клик, каждое приложение — в собственном unprivileged LXC с Docker Compose (1 приложение = 1 LXC); мультиисточниковый каталог —
runtipi/runtipi-appstore(~265 приложений) плюс опциональныйgetumbrel/umbrel-apps(~380 приложений), выбор черезAPPSTORE_SOURCES - Мастер установки — динамические параметры приложения (form_fields), расширенные ресурсы LXC, автогенерация секретов, живой прогресс установки по WebSocket и показ учётных данных один раз
- Жизненный цикл в «Мои приложения» — start / stop / restart / логи / удаление, с фоновой реконсиляцией (детект orphaned) и статусом по каждому приложению
- Обновление и откат — обновления на основе снапшотов (
docker compose pull) с health-check и откатом в один клик к pre-update снапшоту - Глобальный трей операций — сверните идущую установку или сборку золотого шаблона в глобальный трей, который переживает навигацию между страницами и перезагрузку вкладки; клик по плашке разворачивает диалог с того места, где вы остановились
- Безопасность by design — только unprivileged LXC, шифрование секретов (Fernet), защита
pct exec/pct pushот инъекций, RBACapp:view/app:install/app:manage
Доступ и консоль
- Консоль VNC — консоль в браузере через noVNC, не требуется клиентское ПО
- Терминал xterm.js — полностью интерактивный shell непосредственно в браузере для контейнеров LXC
- Удаленные команды — выполняйте команды bash через QEMU Guest Agent
- Управление SSH-ключами — личная библиотека SSH-ключей для каждого пользователя; ключи можно выбирать при развёртывании VM/LXC; админ может управлять ключами любого пользователя
- RBAC v2 — детальный контроль доступа на основе ролей с разрешениями для каждого ресурса; маршруты защищены и на бэкенде, и на фронтенде, а не просто скрыты из сайдбара
- Страница профиля без разрешений — настройки аккаунта (профиль, пароль, 2FA, SSH-ключи) находятся на странице
/profileи не требуют никакого разрешения на настройки панели, так что ограничениеsetting:viewне может заблокировать пользователю доступ к собственному аккаунту - Назначение серверов — напрямую назначайте конкретные серверы Proxmox пользователям с проверкой конфликтов рабочих областей
- Владелец ВМ/LXC — назначайте пользователя-владельца любой ВМ или контейнеру LXC; непривилегированные пользователи везде видят только свои инстансы, включая дашборд и ресурсы по ноде; владелец теперь проставляется автоматически при создании, а для уже существующих инстансов есть миграция для бэкфилла
- Квоты на пользователя — ограничение количества инстансов и суммарных vCPU, RAM и диска для каждого пользователя; проверка при развёртывании (HTTP 429); сама кнопка «Создать инстанс» отключается, когда квота исчерпана, с указанием какого именно лимита не хватает
- Управление сессиями — список активных сессий, отзыв удаленных сессий, защита входа
- Умное перенаправление входа — пользователи автоматически маршрутизируются на первую страницу, к которой у них есть доступ
Мониторинг и оповещения
- Метрики в реальном времени — CPU, RAM, диск, сеть для каждого узла и ВМ; живые данные по каждому диску, IOPS и скорости сетевого I/O (байт/с) прямо в Overview-вкладке и списке инстансов
- Фоновая синхронизация — автоматическая синхронизация состояния ВМ из API Proxmox (опрос
status/currentс гранулярностью 1 с) - Уведомления — In-App (иконка колокольчика), Email (SMTP), Telegram (Bot API)
- Журнал аудита — полный журнал действий с пользователем, временем и деталями
Прочее
- Командная палитра — палитра по
Ctrl+Kс поиском по единому реестру навигации для перехода на любую страницу с клавиатуры - IPAM — управление IP-адресами с историей выделения и обнаружением сиротских адресов
- Многоязычность — интерфейс на русском и английском языках; язык задаётся отдельно для каждого аккаунта в профиле
- Зашифрованные учетные данные — чувствительные поля хранятся зашифрованными в базе данных
- Стилизованные диалоги — все подтверждения действий используют единое тематическое модальное окно вместо нативного
confirm()браузера
Быстрый старт
# 1. Клонируем
git clone https://git.tzim.uz/markmorado/pvemanager.git
cd pvemanager
# 2. Конфигурируем
cp .env.example .env
cp backend/.env.example backend/.env
# Отредактируйте .env — установите POSTGRES_PASSWORD и TZ
# 3. Запускаем
docker compose up -d
# 4. Открываем
# http://localhost:3001
# Вход по умолчанию: admin / admin123
Важно: Измените пароль по умолчанию сразу после первого входа.
Установка одной командой
bootstrap.sh устанавливает панель одной командой — как на обычном хосте Debian/Ubuntu, так и напрямую на хосте Proxmox VE: на хосте PVE скрипт сам создаёт LXC на Debian 12, устанавливает панель внутри и регистрирует этот хост как первую ноду панели (пароль от Proxmox никуда не передаётся):
git clone https://git.tzim.uz/markmorado/pvemanager.git
cd pvemanager
bash bootstrap.sh
Требования
| Требование | Минимум |
|---|---|
| Docker | 24.x+ |
| Docker Compose | v2.x+ |
| ОЗУ | 512 МБ (приложение) + 256 МБ (БД) |
| Proxmox VE | 7.x / 8.x / 9.x |
Конфигурация
Переменные окружения (.env)
# База данных
POSTGRES_PASSWORD=ваш_надежный_пароль
# Часовой пояс (формат IANA)
TZ=Europe/Moscow
# Проверка обновлений (для приватных репозиториев — отключите или предоставьте токен)
DISABLE_UPDATE_CHECK=false
GITHUB_TOKEN= # опционально, для проверки обновлений в приватном репозитории
Уведомления
Настраиваются через веб-интерфейс — Настройки → Уведомления:
- Email — SMTP сервер, порт, логин, пароль (Yandex, Gmail, Mail.ru и другие)
- Telegram — токен бота и Chat ID через @BotFather
Стек технологий
| Слой | Технология |
|---|---|
| Backend | Python 3.12, FastAPI, SQLAlchemy |
| Frontend | React 19, TypeScript, Vite 8 |
| UI-компоненты | shadcn/ui, Tailwind CSS v4, lucide-react |
| Состояние и данные | TanStack Query v5, Zustand, React Router v7 |
| База данных | PostgreSQL 16 |
| Контейнеризация | Docker, Alpine Linux |
| API Proxmox | proxmoxer |
| VNC | noVNC |
| Графики | Recharts |
| Терминал | xterm.js |
| i18n | i18next, react-i18next |
Документация
| Документ | Описание |
|---|---|
| WIKI.md | Полное руководство пользователя и администратора |
| CHANGELOG.md | История версий и примечания к выпускам |
| CONTRIBUTING.md | Как внести вклад — настройка, стиль кода, процесс PR |
| SECURITY.md | Политика безопасности и сообщение об уязвимостях |
Участие в разработке
Мы рады вашему вкладу! См. CONTRIBUTING.md — там описаны настройка окружения, стиль кода, формат коммитов и процесс PR.
Лицензия
MIT — свободно использовать, изменять и распространять.
Сделано с ❤️ для пользователей Proxmox
Проблемы · История изменений · Вики · Участие · Безопасность