Tomáš Dvořák 9b79bce174
ci / backend (push) Canceled after 0s
ci / frontend (push) Canceled after 0s
chore: add FUNDING.yml — GitHub Sponsors button
2026-10-04 19:50:29 +02:00

Dash

Dash

Self-hosted homelab dashboard.
Service boards, uptime monitors, domain watch, and system metrics in one container.

Quick Start · Documentation · Releases · Contributing

CI Release License

What is Dash?

Dash is a self-hosted homelab dashboard: service boards with drag-and-drop, uptime monitors, domain intelligence, push-based system metrics, incidents, and public status pages — one static Go binary serving an embedded React UI. No YAML, no external database; auth is optional and off by default.

Screenshots

Board Monitors Systems
Service board Uptime monitors System metrics
More screenshots
Domain intel Domains Status page
Domain detail with provider detection Domain watch Public status page

Features

  • Service boards — multiple boards, sections, drag-and-drop, multi-URL services, icon upload, four renderers (Bento, Cards, Index, Console), dark/light themes, custom accent/wallpaper/CSS.
  • Uptime monitors — HTTP, TCP, ping, DNS, keyword, JSON-path, and push checks on a schedule; heartbeat history, uptime graphs, per-monitor alert rules.
  • Domain watch — WHOIS/RDAP, TLS certificate, host geolocation, and CT-log subdomain discovery; every DNS record is attributed to its vendor (Cloudflare, Google Workspace, Purelymail, …) with provider badges across registrar, DNS, hosting, email, and CA.
  • System monitoring — lightweight dash-agent pushes CPU, memory, disk, network, load, temperatures, per-container stats, and SMART/ZFS/GPU when available; rendered as stacked per-container charts, per-sensor temperature lines, and load/bandwidth series.
  • Incidents & status pages — automatic incidents on monitor down, maintenance windows, public /status/:slug pages, SVG badges.
  • Alerts — webhook, Slack, Discord, Telegram, Gotify, ntfy, and SMTP transports.
  • Observability — Prometheus /api/metrics, JSON export, CSV bulk import, importers for Homepage, Homarr, and Dashy configs.
  • Optional auth — local username/password, bcrypt + SQLite sessions, off by default; public status pages stay open either way.
  • i18n + PWA — English and Czech UI, installable manifest/service worker.

Architecture

Browser ──▶ dash (single static Go binary)
              ├── Embedded React UI (embed.FS)
              ├── REST API (Gin) ──▶ SQLite
              └── Schedulers ──▶ monitors, domain refresh, alerts, retention
                                    │
                                    ▼ outbound
                        HTTP/TCP/ICMP/DNS, WHOIS/RDAP, TLS, SMTP

dash-agent (one binary per host) ──push JSON──▶ POST /api/systems/ingest

Quick Start

Prerequisites: Docker.

curl -fsSL https://raw.githubusercontent.com/Dvorinka/Dash/main/install.sh | sh

Installs into ./dash and starts the stack on port 3000. Or from a clone:

git clone https://github.com/Dvorinka/Dash.git && cd Dash
./scripts/setup.sh          # builds the image and starts the stack

Or plain docker run, no script needed:

docker run -d -v ./data:/data -p 3000:3000 ghcr.io/dvorinka/dash:latest

Then open http://localhost:3000 — everything is configured from the UI. For the system agent, binary installs, reverse proxies, and upgrades see docs/installation.md.

Configuration

Dash is configured from the UI; the server reads three environment variables (DASH_PORT, DASH_DATA_DIR, DASH_DEV). All state lives in one directory — a SQLite database plus uploaded icons. See docs/configuration.md.

System agent

Monitor a Linux host: create a system in the UI, copy the token, then:

dash-agent -url http://dash:3000 -token <token>

One static binary, no dependencies. systemd unit and container image covered in docs/installation.md.

Documentation

  • docs/installation.md — Docker, binary, agent, reverse proxy, upgrades
  • docs/configuration.md — env vars, notifications, auth, boards, operations
  • docs/monitoring.md — external monitoring stack (Beszel + Prometheus/Grafana) and how Dash consumes it
  • docs/widgets.md — widget development guide
  • openapi.yaml — API contract (generated TS client in packages/api-client)
  • ROADMAP.md — design decisions and release history

Develop

Requires Go 1.24+ and Node 20+.

npm install            # workspaces: frontend + api-client
npm run dev            # vite dev on :5173, proxies /api to :8080
cd apps/backend
DASH_DEV=1 go run ./cmd/dash   # API on :8080 (DASH_DEV skips embedded UI)

Contributing

See CONTRIBUTING.md for the development workflow.

Security

See SECURITY.md for reporting vulnerabilities.

License

MIT

S
Description
No description provided
Readme MIT
19 MiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 49.1%
Go 37.1%
HTML 12.2%
CSS 0.8%
Shell 0.4%
Other 0.4%