A self-hosted dashboard for monitoring and applying updates across your Proxmox infrastructure — nodes, LXC containers, and VMs — from a single interface.
- Multi-site — manage multiple Proxmox hosts from one dashboard
- Node updates — detects available apt packages on the Proxmox host
- LXC updates — tracks package updates inside containers via
pct exec(apt, apk, dnf/yum supported) - VM updates — detects packages via QEMU guest agent
- App updates — detects new versions of Plex, Jellyfin, Sonarr, Radarr, and more
- Scheduled checks — automatic checks at 08:00 and 20:00 (configurable per site, with timezone support)
- Live terminal — real-time log output during updates via WebSocket
- Notifications — Discord, Slack, Microsoft Teams, and generic webhooks
- Self-update — update banner in the dashboard with one-click update; supports stable and beta channels
- Setup wizard — guided first-time configuration
| Requirement | Details |
|---|---|
| Server | Any host that can run Docker |
| Proxmox | Reachable via SSH from the Docker host |
| SSH access | Key-based or password auth (key recommended) |
Run the following on your Proxmox node:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/macokay/proxmox-hive/main/install.sh)"When run on a Proxmox node the script prompts you to choose between:
- New LXC container — creates a dedicated Debian 12 container, upgrades it, installs Docker and Proxmox Hive inside it, and configures console auto-login. Recommended.
- This machine — installs Docker and Proxmox Hive directly on the node.
When run on any other Debian/Ubuntu host (e.g. an existing LXC or VM) it installs directly without prompting.
After installation open http://<ip>:3000 and follow the setup wizard.
git clone https://github.com/macokay/proxmox-hive.git
cd proxmox-hive
docker compose up -dOpen http://<your-server>:3000 and follow the setup wizard.
Proxmox Hive connects to your Proxmox host over SSH. Run all commands in the Proxmox Shell tab or via ssh root@PROXMOX-IP.
Creates a dedicated low-privilege user. SSH keys only, no password. Limits blast radius if credentials are ever compromised.
# Step 1 — Create user + restricted sudo
apt install sudo -y
adduser pvehive --disabled-password --gecos ""
echo "pvehive ALL=(ALL) NOPASSWD: /usr/bin/apt*,/usr/sbin/pct" | tee /etc/sudoers.d/pvehive
chmod 440 /etc/sudoers.d/pvehive
# Step 2 — Generate & install SSH key
ssh-keygen -t ed25519 -f ~/.ssh/pvehive -N ""
mkdir -p /home/pvehive/.ssh
cat ~/.ssh/pvehive.pub >> /home/pvehive/.ssh/authorized_keys
chmod 700 /home/pvehive/.ssh && chmod 600 /home/pvehive/.ssh/authorized_keys
chown -R pvehive:pvehive /home/pvehive/.ssh
# Step 3 — Print private key (copy output → paste into Proxmox Hive)
cat ~/.ssh/pvehiveIn the setup wizard: username pvehive, paste the private key (not the .pub file).
No extra user needed. Simpler, but the SSH key has full root access to the host.
# Step 1 — Allow root SSH key login
sed -i 's/^#*PermitRootLogin.*/PermitRootLogin prohibit-password/' /etc/ssh/sshd_config
systemctl reload sshd
# Step 2 — Generate & install SSH key
ssh-keygen -t ed25519 -f ~/.ssh/pvehive -N ""
cat ~/.ssh/pvehive.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# Step 3 — Print private key (copy output → paste into Proxmox Hive)
cat ~/.ssh/pvehiveIn the setup wizard: username root, paste the private key.
Uses password authentication instead of SSH keys. Less secure — switch to Option A when possible.
# Step 1 — Create user with password
apt install sudo -y
adduser pvehive --gecos ""
echo "pvehive ALL=(ALL) NOPASSWD: /usr/bin/apt*,/usr/sbin/pct" | tee /etc/sudoers.d/pvehive
chmod 440 /etc/sudoers.d/pvehive
passwd pvehive
# Step 2 — Enable password authentication
sed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config
systemctl reload sshdIn the setup wizard: username pvehive, select Password auth and enter the password set above.
VM package detection requires the QEMU guest agent running inside each VM. Without it the VM shows a warning and packages cannot be checked.
1. Enable in Proxmox
VM → Options → QEMU Guest Agent → Enable ✓ → OK
2. Configure network (Cloud-Init VMs)
If the VM was created from a Cloud-Init template and has no network: VM → Cloud-Init → IP Config → Edit → set to DHCP → Regenerate Image → reboot.
3. Install the agent inside the VM
sudo apt update && sudo apt install -y qemu-guest-agent4. Reboot the VM
The agent starts automatically on boot.
Configuration is stored in a Docker volume (proxmox-hive-data) at /data/config.json inside the container.
When a new release is available, a banner appears at the top of the dashboard with an Update now button. Clicking it pulls the new release image and restarts the container automatically — no terminal needed.
You can also include Proxmox Hive as a target in an auto-update group (Settings → Auto-Update Groups). When the group runs at its scheduled time it checks GitHub for a new release and applies it the same way as the banner button.
TAG=$(curl -fsSL -o /dev/null -w '%{url_effective}' https://github.com/macokay/proxmox-hive/releases/latest | grep -o '[^/]*$' | sed 's/^v//') && [ -n "$TAG" ] && sed -i "s|image: .*proxmox-hive:.*|image: ghcr.io/macokay/proxmox-hive:${TAG}|" /opt/proxmox-hive/docker-compose.yml && docker compose -f /opt/proxmox-hive/docker-compose.yml pull && docker compose -f /opt/proxmox-hive/docker-compose.yml up -d⚠ The
latesttag tracks themainbranch and may include unreleased or unstable changes.
sed -i "s|image: .*proxmox-hive:.*|image: ghcr.io/macokay/proxmox-hive:latest|" /opt/proxmox-hive/docker-compose.yml && docker compose -f /opt/proxmox-hive/docker-compose.yml pull && docker compose -f /opt/proxmox-hive/docker-compose.yml up -d- LXC containers must be running to have their packages checked or updated.
- VM package detection requires the QEMU guest agent to be installed and running.
- One Proxmox node per site.
- LXC containers running an unrecognised OS show an "Unsupported OS" badge and are skipped during updates.
Built by Mac O Kay.
© 2026 Mac O Kay
Free to use and modify for personal, non-commercial use. Attribution appreciated if you share or build upon this work. Commercial use is not permitted.