e3b3ff235bbdfdb176248ab116d7f476e449ec0c
PVE HA Web Panel — Deployment Guide
This guide explains how to deploy PVE HA Web Panel on a Proxmox host or any Debian/Ubuntu-like system.
0) Install python3-venv
apt install python3-venv
1) Create directory
mkdir -p /opt/pve-ha-web
cd /opt/pve-ha-web
2) Get the application
Clone the repository (includes app.py
, templates/
, static/
, requirements.txt
).
git clone https://gitea.linuxiarz.pl/gru/pve-ha-web.git .
Note: The trailing
.
clones directly into/opt/pve-ha-web
instead of a nested subfolder.
3) Python virtualenv & dependencies
python3 -m venv venv
source venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt
deactivate
4) systemd unit
Create a service unit file for Gunicorn:
tee /etc/systemd/system/pve-ha-web.service >/dev/null <<'UNIT'
[Unit]
Description=PVE HA Web Panel
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/pve-ha-web
Environment="PYTHONUNBUFFERED=1"
ExecStart=/opt/pve-ha-web/venv/bin/gunicorn -w 2 -b 0.0.0.0:8007 app:app
Restart=on-failure
RestartSec=3
User=root
Group=root
[Install]
WantedBy=multi-user.target
UNIT
Port: The app listens on
8007
by default. Adjust as needed.
5) Enable & start
systemctl daemon-reload
systemctl enable --now pve-ha-web
6) Verify
systemctl status pve-ha-web
ss -ltnp | grep :8007
Open the app in the browser: http://<server-ip>:8007
Optional: Reverse proxy (Nginx)
If you want to expose it under standard HTTPS with a domain:
server {
listen 80;
server_name ha.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name ha.example.com;
# TLS certs (replace with your paths / cert manager)
ssl_certificate /etc/letsencrypt/live/ha.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ha.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8007;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Reload Nginx: sudo systemctl reload nginx
Management
Logs
journalctl -u pve-ha-web -e -f
Restart / stop
sudo systemctl restart pve-ha-web
sudo systemctl stop pve-ha-web
Update to latest version
cd /opt/pve-ha-web
git pull --rebase
source venv/bin/activate
pip install -r requirements.txt
deactivate
systemctl restart pve-ha-web
Uninstall
systemctl disable --now pve-ha-web
rm -f /etc/systemd/system/pve-ha-web.service
systemctl daemon-reload
rm -rf /opt/pve-ha-web
Project
- Author: linuxiarz.pl
- Source: https://gitea.linuxiarz.pl/gru/pve-ha-web
Description
Languages
JavaScript
53%
Python
30.1%
HTML
13.1%
CSS
3.8%