Homelab Dashboard#
What Was Established#
A Node.js + Express dashboard is deployed at https://status.nbkelley.com, serving homelab monitoring data. All API calls are server-side — no internal IPs, credentials, or raw API responses reach the browser.
Deployment#
| Detail | Value |
|---|---|
| Public URL | https://status.nbkelley.com |
| Host | proxy VM (192.168.1.222) |
| Port | 3002 |
| Runtime | Node.js + Express, Docker container |
| compose.yaml location | /home/iluvatar/compose.yaml on proxy VM |
| App directory | /opt/homelab-dashboard/ on proxy VM |
| Routing | Cloudflare Tunnel → 127.0.0.1:3002 |
File Structure#
/opt/homelab-dashboard/
server.js ← Express app, all API logic
package.json
package-lock.json
dockerfile
start.sh
node_modules/
public/
index.html
styles.css
app.js ← frontend render enginecompose.yaml Entry#
homelab-dashboard:
build: /opt/homelab-dashboard
container_name: homelab-dashboard
restart: unless-stopped
network_mode: host
environment:
- PORT=3002network_mode: host means the app binds directly to host port 3002. The ports: mapping is ignored when using host networking.