PVEmanager: Self-hosted Panel for Managing Proxmox Clusters
If you manage multiple Proxmox VE servers, you know that the native interface is not designed for multi-cluster management. Each server is a separate tab, there's no unified view, and audit logging is limited.
I developed PVEmanager — a panel that solves these problems.
What PVEmanager Does
Dashboard
The main dashboard shows a summary of all connected Proxmox clusters:
- Node status (online/offline)
- Quick CPU/RAM metrics
- Active user sessions
VM Management
Full VM lifecycle management:
- Create from templates
- Start / stop / restart
- Disk and memory resize
- Deletion with confirmation
- Bulk operations on VM groups
LXC Containers
Similar operations for LXC containers + direct terminal access.
VNC Console
Built-in noVNC for accessing VMs directly from the browser — no separate client needed.
xterm.js Terminal
Full shell for LXC containers via xterm.js. Works even without QEMU Guest Agent.
Security and Access
RBAC v2
Granular roles with resource-level permissions:
- Create custom roles
- Bind to specific VMs/LXCs
- Workspace conflict prevention
Notifications
Three notification channels:
- In-App — bell icon in the interface
- Email — SMTP (Yandex, Gmail, Mail.ru)
- Telegram — Bot API via @botfather
Monitoring
Real-time Metrics
Chart.js displays:
- CPU usage per core
- RAM utilization
- Disk I/O
- Network traffic
Charts are available at both node level and individual VM level.
Network Management
IPAM (IP Address Management)
- IP address allocation
- Allocation history
- Orphan address detection
- List export
Audit
Action Log
Complete action history:
- Who performed (user)
- What was done (operation)
- When (timestamp)
- On which resource (VM/LXC/node)
Settings
Global settings:
- Timezone
- Update checks
- GitHub token for private repos
- SMTP configuration
- Telegram bot token
Architecture
| Layer | Technology |
|---|---|
| Backend | Python 3.12, FastAPI, SQLAlchemy |
| Frontend | Jinja2, Vanilla JS, Bootstrap 5 |
| Database | PostgreSQL 16 |
| Containers | Docker, Alpine Linux |
| Proxmox API | proxmoxer |
| VNC | noVNC |
| Charts | Chart.js |
| Terminal | xterm.js |
Quick Start
1. Clone
git clone https://github.com/markmorado/pvemanager.git
cd pvemanager
2. Configure
cp .env.example .env
cp backend/.env.example backend/.env
# Edit .env — set POSTGRES_PASSWORD and TZ
3. Start
docker compose up -d
4. Access
Open http://localhost:8000
Default login: admin / admin123
Important: Change the default password after first login!
.env Configuration
# Database
POSTGRES_PASSWORD=your_secure_password
# Timezone (IANA format)
TZ=Europe/Tashkent
# Update checks (for private repos — disable or provide token)
DISABLE_UPDATE_CHECK=false
GITHUB_TOKEN= # optional
Who Is This For
- Sysadmins with Proxmox server farms
- Hosting providers (Eskiz, for example 😄)
- DevOps teams needing RBAC and audit
- Labs with test clusters
What's Next
Roadmap:
- [ ] Proxmox Backup Server integration
- [ ] Scheduled automatic backups
- [ ] Template deployment monitoring
- [ ] External orchestration API
Documentation:
- WIKI.md — full guide
- CHANGELOG.md — version history
Contributing
# Fork the repository
# Create feature branch
git checkout -b feature/my-feature
# Commit
git commit -m 'feat: add my feature'
# Push
git push origin feature/my-feature
# Pull Request
License
MIT — free to use, modify, and distribute.
GitHub: markmorado/pvemanager
Questions? Open issues or write on Telegram.











Top comments (0)