Deployment¶
This page outlines local/offline and internet‑facing deployments, including constraints around browsers, TLS, and WebSocket/MQTT policies.
Local / offline¶
Start the bundled Deno server:
deno task dev
Visit
http://localhost:8000.Ensure vendored assets exist:
Tabler Icons under
web/vendor/tabler/icons-webfont/3.35.0/MQTT bundle:
web/vendor/mqtt/mqtt.bundle.mjs
Optionally enable strict offline mode (see the dedicated page) to prevent any CDN access.
Data sources must be reachable without the public internet, e.g.:
File mode (JSONL)
ws://localhost:9000or LAN WebSocket endpointsws://MQTT broker on localhost/LAN with WebSocket enabled
Internet‑facing¶
Serve the site with TLS (HTTPS) if you need to connect to secure feeds.
When the page is
https://, the browser will block mixed content; usewss://for WebSockets (and MQTT over WebSocket).
Configure your WebSocket servers and MQTT brokers to allow your dashboard’s Origin.
Consider putting the Deno app behind a reverse proxy (nginx, Caddy, Traefik) to:
Terminate TLS
Add a Content‑Security‑Policy header (see below)
Add authentication and rate‑limiting if the site shouldn’t be public
Suggested CSP (offline‑friendly)¶
Content-Security-Policy: default-src 'self'; connect-src 'self' ws: wss:
This blocks third‑party scripts and only allows network connections to your own
origin plus ws:/wss: data feeds.
Checklists¶
Offline¶
[ ]
/web/styles.css,/web/app.js, and Tabler Icons assets load from local paths[ ]
web/vendor/mqtt/mqtt.bundle.mjsexists and loads when using the MQTT tab[ ] DevTools → Network shows no requests to external CDNs (e.g.,
https://esm.sh/)[ ] Data sources are local (File or localhost/LAN WS/MQTT)
Open internet¶
[ ] Site is served via HTTPS (for
wss://feeds)[ ] WS/MQTT servers allow the dashboard’s Origin
[ ] Endpoints use
wss://on HTTPS pages to avoid mixed content[ ] Optional CSP and proxy authentication are configured as needed