https://github.com/macokay/proxmox-hive
A self-hosted dashboard for monitoring and applying updates across your Proxmox infrastructure — nodes, LXC containers, and VMs — from a single interface.
https://github.com/macokay/proxmox-hive
proxmox proxmox-hive proxmox-ve self-hosted update
Last synced: about 1 month ago
JSON representation
A self-hosted dashboard for monitoring and applying updates across your Proxmox infrastructure — nodes, LXC containers, and VMs — from a single interface.
- Host: GitHub
- URL: https://github.com/macokay/proxmox-hive
- Owner: macokay
- Created: 2026-04-04T18:25:16.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-04-16T07:31:11.000Z (about 2 months ago)
- Last Synced: 2026-04-16T09:31:17.771Z (about 2 months ago)
- Topics: proxmox, proxmox-hive, proxmox-ve, self-hosted, update
- Language: JavaScript
- Homepage:
- Size: 246 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
Awesome Lists containing this project
README
Proxmox Hive
A self-hosted dashboard for monitoring and applying updates across your Proxmox infrastructure — nodes, LXC containers, and VMs — from a single interface.
---
## Features
- **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
---
## Requirements
| 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) |
---
## Installation
### Automatic (recommended)
Run the following on your **Proxmox node**:
```bash
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://:3000` and follow the setup wizard.
### Manual
```bash
git clone https://github.com/macokay/proxmox-hive.git
cd proxmox-hive
docker compose up -d
```
Open `http://:3000` and follow the setup wizard.
---
## Configuration
### SSH access to Proxmox
Proxmox Hive connects to your Proxmox host over SSH. Run all commands in the Proxmox **Shell** tab or via `ssh root@PROXMOX-IP`.
---
#### Option A — Restricted user + SSH key ✓ Recommended
Creates a dedicated low-privilege user. SSH keys only, no password. Limits blast radius if credentials are ever compromised.
```bash
# 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/pvehive
```
In the setup wizard: username `pvehive`, paste the private key (not the `.pub` file).
---
#### Option B — Root + SSH key
No extra user needed. Simpler, but the SSH key has full root access to the host.
```bash
# 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/pvehive
```
In the setup wizard: username `root`, paste the private key.
---
#### Option C — Password auth ✗ Not recommended
Uses password authentication instead of SSH keys. Less secure — switch to Option A when possible.
```bash
# 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 sshd
```
In the setup wizard: username `pvehive`, select **Password** auth and enter the password set above.
---
### VM setup (QEMU guest agent)
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**
```bash
sudo apt update && sudo apt install -y qemu-guest-agent
```
**4. Reboot the VM**
The agent starts automatically on boot.
---
### Data
Configuration is stored in a Docker volume (`proxmox-hive-data`) at `/data/config.json` inside the container.
---
## Updating
### Using the built-in self-update
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.
### Manual update to latest release
```bash
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
```
### Update to latest commit (pre-release)
> ⚠ The `latest` tag tracks the `main` branch and may include unreleased or unstable changes.
```bash
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
```
---
## Known Limitations
- 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.
---
## Credits
Built by [Mac O Kay](https://github.com/macokay).
---
## License
© 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.