← All posts

Orbitdash: a server dashboard I can edit

A homelab dashboard with live CPU, memory, and disk on the same page as the service links, and a board you edit from the UI.

I ran Homer and then Homarr as the front page of my homelab. Both are a list of links, and both keep that list in a YAML file. Adding a service meant opening the file, editing it, and redeploying, which is a strange amount of ceremony for one URL.

Orbitdash is the dashboard I wanted to look at every day. The links live in a SQLite database and you add, edit, and reorder them in the browser. Live CPU, memory, and disk sit on the same page, so I stopped keeping a Grafana tab open just to see whether the box was busy.

Orbitdash showing service links grouped by category, with CPU, RAM, and disk stats and a metrics chart below

Living with it

Services get an icon, a name, a one-line description, and a category. Upload a PNG or SVG, or paste a URL and Orbitdash fetches it. Categories reorder by drag and collapse with a click, and the collapsed state is remembered per browser. There is an inline search for when the list gets long, and a toggle for a 3, 4, or 5 column grid depending on the screen.

The metrics panel keeps the last 60 seconds of samples and draws them as a chart, with CPU, RAM, and disk as tabs.

Running it

It is one container with one volume:

services:
  orbitdash:
    image: ghcr.io/chriscorbell/orbitdash:latest
    restart: unless-stopped
    ports:
      - "7770:3000"
    volumes:
      - ./orbitdash-data:/data

The database and the uploaded icons live under that volume, so a backup is a copy of one directory. Images are published for x86_64 and aarch64, and every commit gets its own tag alongside latest in case you want to pin a build.

The stack is TypeScript, React, Tailwind, shadcn/ui, Hono, Bun, and SQLite. The part I am most pleased with is that I have not opened a config file since.