DEV Community

Дилшод Расулов
Дилшод Расулов

Posted on

PVEmanager: Self-hosted Panel for Managing Proxmox Clusters

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

PVEmanager 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

Virtual Machines List

Full VM lifecycle management:

  • Create from templates
  • Start / stop / restart
  • Disk and memory resize
  • Deletion with confirmation
  • Bulk operations on VM groups

LXC Containers

LXC Containers List

Similar operations for LXC containers + direct terminal access.

VNC Console

VNC Console

Built-in noVNC for accessing VMs directly from the browser — no separate client needed.

xterm.js Terminal

Terminal for LXC

Full shell for LXC containers via xterm.js. Works even without QEMU Guest Agent.

Security and Access

RBAC v2

Role Management

Granular roles with resource-level permissions:

  • Create custom roles
  • Bind to specific VMs/LXCs
  • Workspace conflict prevention

Notifications

Notification Settings

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

CPU/RAM Charts

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 Management

  • IP address allocation
  • Allocation history
  • Orphan address detection
  • List export

Audit

Action Log

Audit Log

Complete action history:

  • Who performed (user)
  • What was done (operation)
  • When (timestamp)
  • On which resource (VM/LXC/node)

Settings

System 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
Enter fullscreen mode Exit fullscreen mode

2. Configure

cp .env.example .env
cp backend/.env.example backend/.env
# Edit .env — set POSTGRES_PASSWORD and TZ
Enter fullscreen mode Exit fullscreen mode

3. Start

docker compose up -d
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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:

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
Enter fullscreen mode Exit fullscreen mode

License

MIT — free to use, modify, and distribute.


GitHub: markmorado/pvemanager

Questions? Open issues or write on Telegram.

Top comments (0)