A tiny self-hosted server status dashboard that runs on a live IP or behind Nginx. It shows CPU, memory, disk, uptime, process count, network traffic, and basic host details in a mobile-friendly web UI.
The app is free for everyone under the MIT License.
- Single Python file
- No Python package dependencies
- Auto-refreshing dashboard
- JSON status endpoint at
/api/status - Works directly on a port or behind Nginx
- Optional HTTP basic auth through Nginx
- systemd service examples included
python3 app.pyOpen:
http://SERVER_IP:8080
By default, the app listens on 0.0.0.0:8080. You can change that with
environment variables:
HOST=127.0.0.1 PORT=8080 python3 app.pycurl http://127.0.0.1:8080/api/statusThe API returns system metrics as JSON.
Copy the service file:
sudo mkdir -p /opt/live-server-monitor
sudo cp app.py /opt/live-server-monitor/
sudo cp server-status.service /etc/systemd/system/live-server-monitor.service
sudo systemctl daemon-reload
sudo systemctl enable --now live-server-monitorCheck logs:
journalctl -u live-server-monitor -fFor a public live IP, the safer setup is to bind the app to localhost and put Nginx in front of it.
sudo cp nginx-default-auth.conf /etc/nginx/sites-available/live-server-monitor
sudo ln -s /etc/nginx/sites-available/live-server-monitor /etc/nginx/sites-enabled/live-server-monitor
sudo nginx -t
sudo systemctl reload nginxThe nginx-default-auth.conf example expects an htpasswd file at:
/etc/nginx/.server-status.htpasswd
Create one with:
sudo apt install apache2-utils
sudo htpasswd -c /etc/nginx/.server-status.htpasswd admin- Do not commit
.status-password,.env, logs, or generated cache files. - If exposing this on a public IP, use Nginx basic auth or another access control layer.
- Prefer HTTPS when exposing the dashboard outside your local network.
MIT License. Free to use, modify, and share.