Small, local-only dashboard for tracking servers via SNMP. Built with Vue 3 + Vite, Node/Express, and a JSON datastore.
- Add/edit servers (host, SNMP community, version, port)
- Live SNMP polling for hostname, uptime, memory, disk
- Local JSON storage for config + last stats (no native build deps)
- Single Docker container deployment
- SNMP enabled on each host (QNAP, Unraid, Ubuntu, etc.)
- SNMP community string configured and reachable from this dashboard host
From the repo root:
cd server
npm install
npm run devIn another terminal:
cd web
npm install
npm run devVite dev server will proxy /api to http://localhost:3000.
Build and run:
docker compose up --buildOpen http://localhost:3000.
Pull and run the published image:
docker run -d \
--name server-dashboard \
-p 3000:3000 \
-v server-dashboard-data:/data \
ghcr.io/cbulock/server-dashboard:latestOpen http://localhost:3000.
The API service polls SNMP on a schedule inside the container (default: every 6 hours). Override with minutes (minimum 1):
docker run -d \
--name server-dashboard \
-p 3000:3000 \
-v server-dashboard-data:/data \
-e POLL_INTERVAL_MINUTES=360 \
ghcr.io/cbulock/server-dashboard:latest- JSON database stored under
/data/db.jsoninside the container. - Data persists via the
server-dashboard-dataDocker volume.
The dashboard uses standard Host-Resources MIB OIDs to get memory and storage totals. If a device reports storage differently, you may still see partial data for memory/disk.
