- Go 41.6%
- Svelte 28.1%
- JavaScript 16.4%
- CSS 13.6%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018phCjvgq7mMGSb2wduTWHx |
||
| backend | ||
| docker | ||
| docs/screenshots | ||
| frontend | ||
| .dockerignore | ||
| .gitignore | ||
| compose.yaml | ||
| Dockerfile | ||
| LICENSE | ||
| manifest.json | ||
| README.en.md | ||
| README.md | ||
Deutsch · English
Fabulous Dash
Your homelab at a glance – beautiful, fast and completely private.
A self-hosted dashboard for apps, links, calendars and files with a glass design. A single Go binary, one Docker container, no cloud, no telemetry.
What is Fabulous Dash?
Fabulous Dash is the start page for your home network. All your services – Jellyfin, Nextcloud, Proxmox, TrueNAS, Home Assistant, your router, your tools – live as tiles in categories, show whether they are reachable and, if you like, what is happening right now: who is watching what, how fast downloads are running, how full the pools are, which light is still on. On top of that there are widgets, calendars from Nextcloud and Google, a pastebin, a file box for sharing files and user management for the whole family.
Every user has their own tiles, their own design and their own connections. The interface is available in English and German.
Quick start
mkdir fabulous-dash && cd fabulous-dash
curl -O https://git.justdoit.network/Releases/Fabulous-Dash/raw/branch/main/compose.yaml
docker compose up -d
Then open http://<server>:5661 and sign in:
| User | Password |
|---|---|
admin |
fabulous |
On first sign-in you immediately choose your own user name and a new password – the start account is gone afterwards. The dashboard starts empty: use the small lock at the top right to add categories, apps and links, and enable live info and widgets under Profile → Plugins. The language can be changed on the sign-in page and under Settings → General.
Features
🧩 Tiles the way you want them
- Apps and links in categories, freely arranged by drag & drop on a grid
- Resize by dragging – from a bare icon square to a large info tile
- Service logos in original colours for more than 60 homelab services, website icons automatically, over 100 symbols
- Health checks with status dot and response time; optional e-mail on outage and recovery
- Expiring tiles for things you only need for a while
- Workspaces such as “Private” and “Work” with their own categories, tiles and widgets
📡 Live info right on the tile
Can be switched on per tile – credentials are stored encrypted on the server and never leave it.
| Service | Shows |
|---|---|
| Jellyfin | running streams with progress, direct play/transcoding, movies · series · episodes |
| SABnzbd | speed, queue, time left, free space, failures |
| Immich | photos, videos, storage, usage per user, running background jobs |
| Radarr · Sonarr · Lidarr | queue with progress, missing items, releases of the next 7 days, warnings |
| Bazarr | missing subtitles for episodes and movies, throttled providers, messages |
| Nextcloud | active users, files, shares, load, RAM, app updates |
| Paperless-ngx | documents, inbox, processing, latest documents |
| Home Assistant | lights on, who is home, updates and selected sensors or switches |
| Proxmox VE | CPU, RAM, storage, running VMs and containers |
| TrueNAS | pool health and usage, alerts, uptime (REST and JSON-RPC) |
| Docker | running, stopped and unhealthy containers – or a single container |
| Dockhand | containers of an environment and available updates |

🧱 Widgets
One box above the apps and one above the links:
- Weather (Open-Meteo, no API key), timer with sound, countdowns, tasks with due times
- Upcoming events from Nextcloud and Google Calendar
- Proxmox and TrueNAS as their own widget – reusing the connection of an app tile
- Six sizes from “Mini” to “Large”, content adapts, sortable by drag & drop
📅 Calendar with Nextcloud and Google
- Month and year view with calendar weeks, upcoming events, show and hide calendars
- Nextcloud: create, edit, move and delete events – directly via CalDAV
- Google Calendar: just paste the secret iCal address – events including recurring series appear in the calendar and the widget (read-only, synchronised every 10 minutes)
- Arrange the panels of the calendar page freely and resize them
🗂️ Tools
- Pastebin – multiple files, syntax highlighting, private/internal/public, password, expiry
- Filebox – upload files, preview, quota per user, share links with expiry and password
- Log – who did what and when
- Backup – one click or every night, optionally via WebDAV (e.g. Nextcloud) and encrypted; restore by upload
🎨 Appearance
- Nine designs plus your own with wallpaper; the design editor adjusts colours, glass, rounding, spacing and animations
- Your own name and logo, world clocks, greeting by time of day
- English or German – per user under Settings → General
- Works like an app on your phone – with its own app icon for the home screen

🔐 Users & security
- Multiple users and admins, invitations by e-mail, “forgot password”
- Passkeys (WebAuthn) and two-factor sign-in (TOTP) with recovery codes
- Groups & permissions for Pastebin, Filebox and every plugin
- Secrets encrypted with AES-256-GCM, key stored separately from the data
- Sign-in lockout like fail2ban, trusted reverse proxies, CSRF protection, Content Security Policy
- Certificates are verified – your own CA under
./config/caor an exception per service - Regular users only reach services in the home network if the admin allows it, never the server itself
Installation
With the ready-made image (recommended)
# compose.yaml
services:
fabulous-dash:
image: git.justdoit.network/releases/fabulous-dash:latest
container_name: fabulous-dash
restart: unless-stopped
ports: ["5661:5661"]
environment:
PUID: 1000
PGID: 1000
TZ: Europe/Berlin
# FD_EXTERNAL_URL: https://dash.example.org
volumes:
- ./config:/config
- ./db:/db
# optional for Docker live info, read-only:
# - /var/run/docker.sock:/var/run/docker.sock:ro
:latest always points to the newest published version and is rebuilt every week with fresh base images –
so updating is just docker compose pull && docker compose up -d, Watchtower or Dockhand.
Fixed versions are available as :0.8.0 etc. The image is built from exactly the source in this repository.
Build it yourself
Instead of image: you can use:
build: https://git.justdoit.network/Releases/Fabulous-Dash.git#main
or the classic way:
git clone https://git.justdoit.network/Releases/Fabulous-Dash.git
cd Fabulous-Dash
docker build -t fabulous-dash .
Settings
| Variable | Default | Meaning |
|---|---|---|
PUID / PGID |
1000 / 1000 | Owner of the files in ./config and ./db |
TZ |
Europe/Berlin | Time zone |
FD_EXTERNAL_URL |
– | Public address (for share links, e-mails and passkeys). Passkeys require HTTPS. |
FD_ADDR |
:5661 |
Listen address inside the container |
FD_SECRET |
– | Optional fixed session/vault key (otherwise in ./config/secret) |
FD_OPENMETEO_URL |
– | Your own Open-Meteo instance for the weather |
FD_OPENMETEO_GEO_URL |
– | Your own instance for the location search |
Important: ./config contains the key that encrypts passwords and credentials.
Always back up ./config and ./db together – or use the built-in backup.
For use on the internet: put Fabulous Dash behind a reverse proxy with HTTPS (Nginx Proxy Manager, Traefik, Caddy …) and trust only that proxy under Settings → Security.
Setup in detail – live info, calendars, mail, backup
Live info
First install the matching plugin (Profile → Plugins), then edit an app tile → Live info: choose the service, enter the address (empty = the tile's URL) and credentials, “Test connection”. Data is fetched every 30 seconds while someone has the dashboard open.
| Service | Access |
|---|---|
| Jellyfin | API key (Dashboard → API Keys) |
| SABnzbd | API key (Config → General → Security) |
| Immich | API key (Account Settings → API Keys); more numbers with an admin account |
| Radarr, Sonarr, Lidarr, Bazarr | API key (Settings → General → Security) |
| Nextcloud | Token of the “Server info” app (Administration → System) or an admin user with an app password |
| Paperless-ngx | API token (My Profile → API Token) |
| Home Assistant | Long-lived access token (Profile → Security), optionally entities such as sensor.living_room_temperature |
| Proxmox VE | API token user@realm!name + secret, role PVEAuditor on / |
| TrueNAS | API key, only via https (otherwise TrueNAS revokes it) |
| Docker | Socket /var/run/docker.sock:ro (admins only) or a socket proxy http://socket-proxy:2375 |
| Dockhand | User and password (ideally a separate user without 2FA), environment (default 1) |
Nextcloud calendar
Profile → Plugins → Nextcloud calendar → address, user and an app password (Nextcloud → Settings → Security). Events are synchronised in the background every ten minutes.
Google Calendar
Profile → Plugins → Google Calendar → Settings. In Google Calendar (on a computer), open the calendar's ⋮ → Settings and sharing → Integrate calendar → Secret address in iCal format, copy it and paste it. Several calendars are possible. The address is stored encrypted; data is only fetched from calendar.google.com.
Settings → Mail (admin): SMTP with STARTTLS (587) or TLS (465). Afterwards invitations, “forgot password”, sharing by e-mail and outage e-mails are available – in each user's language.
Backup
Settings → Data & backup: “Back up now” stores a ZIP with database, files, key and logo in
./db/backups; optionally every night and additionally via WebDAV, encrypted with a backup password.
Restore: upload the file – Fabulous Dash checks it, restarts and imports it.
For this the container must run with restart: unless-stopped.
Technology
- Backend: Go 1.24, standard library plus SQLite (ncruces/go-sqlite3, no cgo) – one binary with HTTP API, health checks, integrations and the embedded frontend
- Frontend: Svelte 5 + Vite, SortableJS, highlight.js, qrcode
- Data:
./db/store.db(SQLite) plus files for pastes, Filebox, avatars, wallpapers and backups
Local development:
cd frontend && npm install && npm run build # builds into backend/dist
cd ../backend && FD_DATA=./db FD_CONFIG=./config go run . # http://localhost:5661
About this repository
This is where the published version of Fabulous Dash appears – it is updated with new versions from time to time. Issues and pull requests are disabled.
License
MIT © 2026 Jan Henseler

