Tomas DvorakandDevin c5339a24b4 feat(frontend): regroup settings dialog, icon renderer tiles
Settings splits into labelled sections — renderer, appearance, wallpaper
and CSS, notifications, auth, backup — each with an icon header. Renderer
options gain a per-style glyph and accent-highlighted selection; theme
becomes a segmented Dark/Light control; the dialog widens to max-w-xl.

Renderer switching itself verified working end-to-end (live switch +
persistence across reload); unchanged code path since v2.0.0.

Authored By: TDvorak <[email protected]>

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-22 17:59:19 +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
Domains Status page
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, DNS records, TLS certificate expiry, registrar and provider detection, CT-log subdomain discovery.
  • System monitoring — lightweight dash-agent pushes CPU, memory, disk, network, load, temperatures, per-container stats, and SMART/ZFS/GPU when available.
  • 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

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%