# Homarr: a no-YAML dashboard for self-hosted services

> Homarr is a TypeScript dashboard for self-hosted stacks, configured by drag and drop rather than YAML, with authentication and OIDC/LDAP built in. The trade-off is that its real value depends on how many of its integrations you actually run.

**homarr-labs/homarr** — A modern and easy to use dashboard. 40+ integrations. 20K+ icons built in. Authentication out of the box. No YAML, drag and drop configuration.

- Repository: https://github.com/homarr-labs/homarr
- Website: https://homarr.dev
- Stars: 4,785 · Forks: 307
- Language: TypeScript
- License: Apache-2.0
- Published: 2026-09-07 · Updated: 2026-09-07 · Language: en
- Canonical page: https://hysenlabs.com/projects/homarr-labs-homarr

## What Homarr replaces, and for whom

A home server tends to accumulate services: a media server, a download client, a DNS filter, a photo library, a note app. Each has its own port and its own login page. The usual fix is a bookmarks page, which tells you nothing about whether those services are healthy.

Homarr targets that gap. The repository describes it as a dashboard with more than 40 integrations and authentication out of the box, configured without YAML. The integration list in the README names the applications it can talk to directly, including AdGuard Home, Aria2, Bazarr, Coolify, Deluge, Emby, Gluetun, Gotify, Home Assistant, Immich, Jellyfin, Jellyseerr, Lidarr, Nextcloud, ntfy, NZBGet, OpenMediaVault, OPNsense, Overseerr, Pi-hole and Plex.

The audience is therefore narrow and specific: people who already run several of those services and want one page that shows their state. If you run one service, or none of the listed ones, the integration layer does nothing for you and Homarr is just a grid of links.

The README also states compatibility with x86 hardware, Raspberry Pi and old laptops, and with Windows, Linux, TrueNAS and Unraid, plus Helm support for Kubernetes. That breadth matters because dashboards like this are usually deployed on whatever spare machine is already running.

## How the board, widgets and realtime updates fit together

Homarr is a TypeScript monorepo. The top-level entries include apps/, packages/, tooling/, a Dockerfile, an nginx.conf and a turbo.json, with pnpm-lock.yaml and pnpm-workspace.yaml indicating a pnpm workspace managed by Turborepo. The package.json shows separate database migration scripts for sqlite, mysql and postgresql, so the data layer is pluggable rather than fixed.

The README states that realtime widget updates use WebSockets, tRPC and Redis. That combination is worth reading carefully, because it is the mechanism behind the live tiles: a widget does not poll on a timer in the browser, it receives updates pushed from the server. Redis is named as part of that path, which means a multi-instance deployment has a shared channel for those updates rather than each instance holding its own state.

Configuration lives in the database, not in a config file. That is the central design decision. It is what makes drag and drop possible, and it is also what makes backup a database question rather than a file-copy question.

Secrets for integrations are stored encrypted. The README names BCrypt and AES-256-CBC, and the .env.example confirms the second half: SECRET_ENCRYPTION_KEY is described there as the key used to encrypt integration secrets in the database, and it should be a 32-byte string. Losing that key means the stored integration credentials are not recoverable, so it belongs in whatever you use to keep secrets, not only in the container environment.

## Installing Homarr with Docker Compose and reaching the dashboard

The README points to the installation section of the documentation site for setup, and the repository ships a Dockerfile and a deployments/ directory. The .env.example is the authoritative source for the environment variables the application reads, and it gives the sqlite driver as the simplest starting point.

Copy the example file and fill in the two secrets. The file itself says SECRET_ENCRYPTION_KEY should be generated with openssl rand -hex 32 on Unix, or by starting the project without one, which shows a randomly generated value.

```bash
cp .env.example .env
openssl rand -hex 32
```

Paste the generated value into SECRET_ENCRYPTION_KEY in .env. The example also carries an AUTH_SECRET, with a comment stating it is not used anywhere but is required by Auth.js.

For the database, the example lists three drivers. The sqlite form uses DB_DRIVER='better-sqlite3' with DB_URL pointing at a file path, mysql2 accepts either a URL or separate DB_HOST, DB_PORT, DB_USER, DB_PASSWORD and DB_NAME values, and node-postgres takes a postgres:// URL. Pick one and leave the others commented out.

```bash
DB_DRIVER='better-sqlite3'
DB_URL='FULL_PATH_TO_YOUR_SQLITE_DB_FILE'
LOG_LEVEL='info'
```

Start the container with the environment file and a published port. The README does not state a default port, so take the port from the image documentation or your compose file rather than assuming one; the related searches show that "homarr port" and "homarr default port" are common questions, which suggests this is a frequent point of confusion. Once it is up, open the address in a browser and you land on the setup flow, where you create the first user. From there the board editor is drag and drop: add a widget, pick an integration, and enter that service's URL and credentials.

## Where Homarr gets in the way

The database-backed configuration is the biggest constraint. Because boards, users and integration credentials live in the database, your backup strategy has to cover that database and the encryption key together. A snapshot of the container alone is not a restore.

Redis appearing in the realtime path is a second consideration. For a single-user instance on a Raspberry Pi, that is extra moving parts for a feature you may not notice. The README does not describe a mode that drops Redis, so treat it as part of the deployment rather than an optional add-on.

Integration coverage is the third. The README's list is long but finite, and a service outside it becomes a plain link with no live data. That is a real downgrade in a tool whose selling point is widgets that read from your services.

Finally, this is a large TypeScript monorepo with Turborepo, pnpm workspaces, patches and a multi-stage Dockerfile that installs build tooling such as python3, make and g++ to compile native dependencies when prebuilds are unavailable. Running it from source is a developer task, not a five-minute install. The container is the intended path for most people.

## Homarr compared with Homepage and Heimdall

The related searches put "homarr vs homepage" and "homarr alternatives" next to "homarr vs heimdall", so the comparison is worth making concretely.

Homepage is a YAML-configured dashboard. You write service definitions in files, and the dashboard reads them. That approach is excellent for people who keep their configuration in Git, review changes as diffs, and want to restore a dashboard by checking out a repository. Homarr takes the opposite position: the README states plainly that there is no YAML involved, and configuration happens through the drag and drop grid. The consequence is that your dashboard is not a text file you can review or diff. You gain a visual editor and a user management layer; you give up file-based configuration and its version control story.

Heimdall is the older link-dashboard model: a curated set of application tiles with a fixed set of fields per application. Homarr's widgets go further by pulling live data through the integrations, and it adds permissions, groups and single sign-on via OIDC or LDAP. If you only need a tidy page of links, Heimdall's simpler model is less to operate. If you want the tiles to show what your services are doing, and you want accounts, Homarr is the one that does that.

Neither comparison is settled by feature count. It comes down to whether you want your dashboard as files or as database rows.

## Licence, upgrades and what maintenance actually costs

Homarr is licensed under Apache-2.0. That is a permissive licence: it allows commercial use and modification, and it includes an explicit patent grant. It does not impose a copyleft obligation on your own code the way the GPL would. This is a description of the licence text, not legal advice; if you are embedding Homarr in something you distribute, read the LICENSE file in the repository and get proper counsel.

The practical implication for a self-hoster is that running Homarr for your own infrastructure carries no licensing question at all.

On maintenance, the facts are concrete. The repository is not archived, and the last push was on 2026-08-27, the same day as the v1.76.2 release. Releases v1.76.0, v1.76.1 and v1.76.2 all landed in August 2026, so the release cadence is frequent. Frequent releases also mean upgrade work: because configuration lives in the database, schema migrations run against your instance, and the package.json shows separate migration commands per driver for exactly that reason. Back up the database before pulling a new image.

The repository layout also points at the project's own tooling: a CHANGELOG.md, a .releaserc.json for release automation, a crowdin.yml for translations, and an e2e/ directory with a vitest configuration. The presence of end-to-end tests is a signal about how changes are validated, though the repository does not publish coverage numbers or a support policy.

## Conclusion

Adopt Homarr if you run several self-hosted services and want one board with widgets that read from them, plus user accounts you did not have to build. Skip it if you want a static page of links, or if your services are not among the documented integrations, because a dashboard of plain bookmarks is not what this project is. Before committing, check the integrations list for your exact applications, confirm which database driver you will use from the .env.example options, and generate SECRET_ENCRYPTION_KEY with openssl rand -hex 32 rather than leaving the placeholder value in place.

## FAQ

### What does Homarr do?

It is a self-hosted dashboard that puts your services on one page and connects to more than 40 of them through integrations, so widgets can show live data rather than just a link. Configuration is done by drag and drop, and the README states there is no YAML involved.

### Is Homarr open source and free?

Yes. The repository is public and licensed under Apache-2.0, a permissive licence that allows commercial use and modification. There is no paid tier mentioned in the repository.

### Is Homarr a good alternative to Heimdall?

It depends on what you want from the tiles. Heimdall is a link dashboard with a fixed set of fields per application, while Homarr adds live widgets driven by integrations plus user management with permissions, groups and single sign-on via OIDC or LDAP.

### How do I install Homarr with Docker?

Copy .env.example to .env, generate a 32-byte SECRET_ENCRYPTION_KEY with openssl rand -hex 32, and choose one of the three database drivers documented in that file: better-sqlite3, mysql2 or node-postgres. Then start the container with that environment file and open it in a browser to create the first user.

### How do I access the Homarr dashboard?

Once the container is running, open its address in a browser and complete the setup flow to create the first user. The README does not state a default port, so use the port you published in your own compose file or container run command.

### Is Homarr worth it?

It is worth it if you already run several of the services in its integration list, since the live widgets and the built-in user management are the parts you cannot get from a plain bookmarks page. If you run none of them, the dashboard is just a grid of links.

## Sources

- [Official documentation](https://homarr.dev)
- [Official README](https://github.com/homarr-labs/homarr#readme)
- [Project repository](https://github.com/homarr-labs/homarr)
- [Release notes](https://github.com/homarr-labs/homarr/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/homarr-labs-homarr
