A lightweight dashboard for monitoring Raspberry Pi system health and homelab services. The dashboard collects status information from the local system and displays it through a responsive web interface.
- System uptime monitoring
- CPU temperature monitoring
- Memory usage monitoring
- Disk usage monitoring
- External storage detection
- Pi-hole statistics (queries, blocked, percentage)
- MinIO service status
- WireGuard service status
- Clickable service cards (quick access to web UIs)
- Responsive dashboard layout
- Modular architecture (easy to add new services)
- Pi-hole (API-based stats)
- MinIO (service status)
- WireGuard (service status)
- System metrics (CPU, RAM, disk, uptime)
- Node.js
- Express
- HTML5
- CSS3
- JavaScript (ES Modules)
- Fetch API
- Linux systemd services
The dashboard runs locally on a Raspberry Pi and gathers information from the operating system and installed services.
Frontend is split into clear layers:
Browser
↓
app.js (orchestrator)
├── data.js (API calls)
└── ui.js (rendering)
Backend:
Express Server
↓
Service Modules
├── system.js
├── pihole.js
├── minio.js
└── wireguard.js
pi-status-dashboard/
├── public/
│ ├── index.html
│ ├── styles.css
│ ├── app.js # frontend entry point
│ ├── data.js # API/data layer
│ └── ui.js # rendering layer
├── scripts/
│ ├── dev.sh
│ └── prod.sh
├── services/
│ ├── system.js
│ ├── pihole.js
│ ├── minio.js
│ └── wireguard.js
├── server.js # Express backend
├── package.json
└── README.md
- Install dependencies:
npm install- Create a
.envfile in the project root (required for certain services):
cp .env.example .envIf you don't have an example file, create one manually:
# Pi-hole
PIHOLE_URL=http://localhost
PIHOLE_PASSWORD=your_password_here
# Optional: Terminal access
TERMINAL_URL=http://<raspberry-pi-ip>:7681PIHOLE_PASSWORDis required for fetching Pi-hole stats (v6 API requires authentication)TERMINAL_URLis optional and enables the terminal button in the UI
- Start the server:
npm start- Open the dashboard in your browser:
http://<raspberry-pi-ip>:3000
Ensure required services (Pi-hole, MinIO, WireGuard) are installed and running if you want their status to appear.
Note: If environment variables are missing or incorrect, some services (like Pi-hole) may show as unavailable in the dashboard.
This project is intended for personal homelab monitoring and is designed to run on a Raspberry Pi over a trusted local network or VPN connection.
