Flame is a self-hosted startpage and app dashboard with visual GUI editing and Docker container discovery, replacing cloud bookmark portals like start.me.
Flame is an application dashboard and startpage built for home servers and private networks. Rather than editing YAML manifests or restarting containers, administrators manage bookmarks and service shortcuts through in-browser editors. An integrated search bar queries local inventory or external search engines from one entry point.
start.me hosts bookmarks and dashboards on third-party cloud servers. For homelab operators, routing private RFC 1918 subnets, local DNS names, or tailnet addresses through an external SaaS exposes internal network topology and breaks navigation whenever internet connectivity drops. Flame runs locally as a Docker container on your own hardware, keeping application endpoints, bookmarks, and search queries inside your network perimeter. It delivers the core utility of start.me—a central browser homepage with grouped bookmarks and quick-launch icons—while running entirely on self-managed infrastructure.
Operationally, start.me removes host maintenance in exchange for monthly subscriptions covering custom domains and team sharing. Flame requires managing persistent storage and reverse proxy routing, but it integrates directly with the Docker daemon. Containers labeled with flame.type and flame.url appear on the dashboard automatically, eliminating manual entry. It trades start.me's cloud synchronization and RSS widgets for local network privacy and automated container tracking.
Is Flame free to use? Flame is open-source software with no subscription tiers or paywalled features, requiring only host hardware to run.
Flame vs start.me — which fits a homelab better? Choose Flame to keep internal IP addresses private, automate Docker discovery, and avoid subscription costs. Choose start.me if you need hosted cloud sync across external devices without running server infrastructure.
Can Flame run without Docker? Yes. Although Docker is standard, Flame can run directly on Linux, macOS, or Windows using Node.js and SQLite.
Flame is well suited for homelab operators who want container auto-discovery and visual editing without managing static configuration files. While large environments needing role-based access control or nested app categories may outgrow it, an MIT license ensures complete freedom to modify the code, and active maintenance through June 2026 maintains stability across modern Docker stacks.
We started this exact setup from scratch in a clean Linux machine on Nov 2, 2026 and checked it through Flame's own API: every check passed. Recipes are re-checked regularly and removed if they stop working.
mkdir -p flame && cd flame
curl -fsSL https://open-source.store/tools/flame/compose.yml -o compose.ymlcat > .env <<EOF
PASSWORD=$(openssl rand -hex 12)
SECRET=$(openssl rand -hex 32)
EOFPASSWORD — Master password to access settings and manage apps or bookmarks. Generated above; keep it secret.SECRET — Secret key used to sign authentication tokens. Generated above; keep it secret.docker compose up -dservices:
flame:
image: pawelmalak/flame:multiarch2.4.0
ports:
- "5005:5005"
environment:
- PASSWORD=${PASSWORD}
- SECRET=${SECRET}
volumes:
- flame-data:/app/data
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://127.0.0.1:5005/api/config || exit 1"]
interval: 5s
timeout: 5s
retries: 10
volumes:
flame-data:
Free IDE for Java, Kotlin, Go, TypeScript and Python. Built on IntelliJ Community, fully open source, 300+ plugins.
Show that Flame 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 26 s: pawelmalak/flame:multiarch2.4.0.
Based on the upstream setup. Official compose. Image pinned to multiarch2.4.0 for arm64 support; persistent data volume mounted; master password and JWT secret moved to .env; healthcheck added.
flame-1 | 2026-11-02T22:57:53.962261263Z [2026-11-02 22:57:53.961 UTC+0] [INFO] Executing pending migrations flame-1 | 2026-11-02T22:57:54.000959513Z [2026-11-02 22:57:54.000 UTC+0] [INFO] Connected to database flame-1 | 2026-11-02T22:57:54.002713221Z [2026-11-02 22:57:54.002 UTC+0] [INFO] Socket: listen flame-1 | 2026-11-02T22:57:54.002835513Z [2026-11-02 22:57:54.002 UTC+0] [INFO] Server is running on port 5005 in production mode flame-1 | 2026-11-02T22:57:56.877771625Z [2026-11-02 22:57:56.877 UTC+0] [ERROR] Unauthorized flame-1 | 2026-11-02T22:57:56.878214542Z [2026-11-02 22:57:56.878 UTC+0] [ERROR] Unauthorized flame-1 | 2026-11-02T22:57:56.878830042Z [2026-11-02 22:57:56.878 UTC+0] [ERROR] Unauthorized flame-1 | 2026-11-02T22:57:56.879677417Z [2026-11-02 22:57:56.879 UTC+0] [ERROR] Unauthorized flame-1 | 2026-11-02T22:58:08.979898172Z [2026-11-02 22:58:08.978 UTC+0] [ERROR] Unexpected token '@' flame-1 | 2026-11-02T22:58:08.979983756Z [2026-11-02 22:58:08.979 UTC+0] [ERROR] Unexpected token '@' flame-1 | 2026-11-02T22:58:20.992684136Z [2026-11-02 22:58:20.992 UTC+0] [ERROR] Expected ' flame-1 | 2026-11-02T22:58:20.995135053Z [2026-11-02 22:58:20.995 UTC+0] [ERROR] Expected ' flame-1 | 2026-11-02T22:58:47.996256759Z [2026-11-02 22:58:47.995 UTC+0] [ERROR] Expected property name or '}' in JSON at position 1 flame-1 | 2026-11-02T22:58:47.998363343Z [2026-11-02 22:58:47.998 UTC+0] [ERROR] Expected property name or '}' in JSON at position 1