Heimdall is an open-source startpage that replaces cloud bookmark managers with a private, self-hosted dashboard featuring live service API tiles.
start.me stores bookmarks in cloud accounts that cannot reach private IP addresses without internet exposure. Heimdall runs inside your local network to turn disparate container endpoints into an organized application launcher. It operates as an internal startpage with direct access to local APIs and zero external dependencies.
start.me aggregates public bookmarks, RSS feeds, and web widgets inside a hosted profile. For homelab operators running services like Pi-hole, Plex, or torrent clients, cloud bookmarking cannot query internal subnets or display live telemetry from private APIs without routing credentials off-site. Heimdall runs directly within your private network or Docker bridge. Its Enhanced Apps connect directly to native service APIs behind your firewall, surfacing live metrics such as active download queues or blocked DNS queries directly on launcher tiles.
The trade-off centers on hosted convenience versus local integration. Migrating from start.me surrenders automatic browser sync and team boards. In exchange, Heimdall eliminates recurring subscription fees and keeps internal addresses private. Administrators maintain an SQLite container and handle reverse proxy routing for remote access. Compared to code-driven dashboards like Homepage or Dashy, Heimdall offers a simpler point-and-click interface, providing an accessible launchpad managed entirely through a browser UI rather than manual YAML editing.
Heimdall vs start.me — which should you choose? Choose start.me for zero-maintenance cloud bookmarking that syncs across devices. Choose Heimdall for a private, self-hosted startpage that queries local APIs without exposing internal addresses.
Can Heimdall pull live data from internal services? Yes. Heimdall queries local API endpoints over LAN or Docker networks once ALLOW_INTERNAL_REQUESTS is enabled in your environment settings.
Does Heimdall support configuration through YAML files? No. Heimdall stores configuration in an internal SQLite database managed via the web interface; administrators wanting declarative files should look at Homepage or Dashy.
Heimdall provides an accessible, low-maintenance startpage for homelabs where visual simplicity and web-based tile management take priority over code-driven configuration. Active maintenance from the linuxserver.io team in 2026 and an unrestrictive MIT license make it a practical launchpad for home networks, provided you host it on a dedicated subdomain.
We started this exact setup from scratch in a clean Linux machine on Nov 2, 2026 and checked it through Heimdall's own API: every check passed. Recipes are re-checked regularly and removed if they stop working.
mkdir -p heimdall && cd heimdall
curl -fsSL https://open-source.store/tools/heimdall/compose.yml -o compose.ymlcat > .env <<EOF
ADMIN_PASSWORD=$(openssl rand -hex 12)
EOFADMIN_PASSWORD — Admin password used by smoke test to secure the default account. Generated above; keep it secret.docker compose up -dservices:
heimdall:
image: linuxserver/heimdall:2.8.4
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
volumes:
- heimdall-config:/config
ports:
- "80:80"
restart: always
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:80/ || exit 1"]
interval: 5s
timeout: 5s
retries: 5
volumes:
heimdall-config:
Go, gRPC and Protobuf done right, LLM agents in production, and the hard parts of shipping a first product.
Show that Heimdall is listed as an open-source alternative. Paste into your README:
Ubuntu 24.04 · Apple container, Docker 29.1.3, Compose 2.40.3+ds1-0ubuntu1~24.04.1. Images pulled in 14 s: linuxserver/heimdall:2.8.4.
Based on the upstream setup. Official LinuxServer Docker image pinned to 2.8.4. Published web port 80 and added healthcheck.
heimdall-1 | 2026-11-02T07:55:26.738589799Z [migrations] started heimdall-1 | 2026-11-02T07:55:26.740492257Z [migrations] 01-nginx-site-confs-default: executing... heimdall-1 | 2026-11-02T07:55:26.741714632Z [migrations] 01-nginx-site-confs-default: succeeded heimdall-1 | 2026-11-02T07:55:26.742440174Z [migrations] 02-default-location: executing... heimdall-1 | 2026-11-02T07:55:26.743394757Z [migrations] 02-default-location: succeeded heimdall-1 | 2026-11-02T07:55:26.743398216Z [migrations] done heimdall-1 | 2026-11-02T07:55:26.766167507Z ─────────────────────────────────────── heimdall-1 | 2026-11-02T07:55:26.766176716Z heimdall-1 | 2026-11-02T07:55:26.766177466Z ██╗ ███████╗██╗ ██████╗ heimdall-1 | 2026-11-02T07:55:26.766178174Z ██║ ██╔════╝██║██╔═══██╗ heimdall-1 | 2026-11-02T07:55:26.766178757Z ██║ ███████╗██║██║ ██║ heimdall-1 | 2026-11-02T07:55:26.766179507Z ██║ ╚════██║██║██║ ██║ heimdall-1 | 2026-11-02T07:55:26.766180091Z ███████╗███████║██║╚██████╔╝ heimdall-1 | 2026-11-02T07:55:26.766180632Z ╚══════╝╚══════╝╚═╝ ╚═════╝ heimdall-1 | 2026-11-02T07:55:26.766181216Z heimdall-1 | 2026-11-02T07:55:26.766181674Z Brought to you by linuxserver.io heimdall-1 | 2026-11-02T07:55:26.766182257Z ─────────────────────────────────────── heimdall-1 | 2026-11-02T07:55:26.766182841Z heimdall-1 | 2026-11-02T07:55:26.766183341Z To support LSIO projects visit: heimdall-1 | 2026-11-02T07:55:26.766183882Z https://www.linuxserver.io/donate/ heimdall-1 | 2026-11-02T07:55:26.766184424Z heimdall-1 | 2026-11-02T07:55:26.766184924Z ─────────────────────────────────────── heimdall-1 | 2026-11-02T07:55:26.766185466Z GID/UID heimdall-1 | 2026-11-02T07:55:26.766185966Z ─────────────────────────────────────── heimdall-1 | 2026-11-02T07:55:26.767183091Z heimdall-1 | 2026-11-02T07:55:26.767186216Z User UID: 1000 heimdall-1 | 2026-11-02T07:55:26.767186841Z User GID: 1000 heimdall-1 | 2026-11-02T07:55:26.767187382Z ─────────────────────────────────────── heimdall-1 | 2026-11-02T07:55:26.767633174Z Linuxserver.io version: v2.8.4-ls371 heimdall-1 | 2026-11-02T07:55:26.767635132Z Build-date: 2026-10-30T22:20:54+00:00 heimdall-1 | 2026-11-02T07:55:26.767635674Z ─────────────────────────────────────── heimdall-1 | 2026-11-02T07:55:26.767636341Z heimdall-1 | 2026-11-02T07:55:26.787659091Z Setting resolver to 127.0.0.11 heimdall-1 | 2026-11-02T07:55:26.788896341Z Setting worker_processes to 2 heimdall-1 | 2026-11-02T07:55:26.796859299Z generating self-signed keys in /config/keys, you can replace these with your own keys if required heimdall-1 | 2026-11-02T07:55:26.823992549Z ....+......+............+++++++++++++++++++++++++++++++++++++++*.+...+...+......+.+.................+.+......+++++++++++++++++++++++++++++++++++++++*..+..........+.....+............+....+.....+.+......+.....+...+......+....+..+...+.........+.+...........+...+.+.....+.......+..+.......+......+....................+...+.......+.........+...+...+........+....+...+..+.......+...+.....+......+....+...+.....+...+.........+......+.........+.+......+......+.....+....+.....+.............+...+..............+...+...+....+......+.................+.......+......+...+.........+...+..............+.+...+.....+....+...+..+..........+............+...+...+.........+........+.............+..+.......+...+..+...+...+.......+........+.......+..+.+.....+....+.........+......+........+...+....++++++ heimdall-1 | 2026-11-02T07:55:26.827041966Z ......+......+..+.+.....+.......+..+.+......+...+............+.....+......+.......+..+...+.+..+.........+++++++++++++++++++++++++++++++++++++++*..+.+...+...............+..+...+..........+..+....+.........+...+..+...+..................+.+..............+.......+.........+...+..+.............+..+....+..+.......+..+......+.......+++++++++++++++++++++++++++++++++++++++*........++++++ heimdall-1 | 2026-11-02T07:55:26.828785466Z ----- heimdall-1 | 2026-11-02T07:55:26.843228882Z New container detected, installing Heimdall heimdall-1 | 2026-11-02T07:55:27.163762424Z Creating app key. This may take a while on slower systems heimdall-1 | 2026-11-02T07:55:28.384253341Z heimdall-1 | 2026-11-02T07:55:28.384275050Z INFO Application key set successfully. heimdall-1 | 2026-11-02T07:55:28.384277800Z heimdall-1 | 2026-11-02T07:55:28.394243966Z [custom-init] No custom files found, skipping... heimdall-1 | 2026-11-02T07:55:28.417396425Z [ls.io-init] done.