How to Set Up Homarr Dashboard with Docker Compose

Homarr Dashboard For Your Home Server

Homarr gives your self-hosted services one start page, but the dashboard should not become a shortcut to handing an app control of your Docker daemon. This setup uses Docker Compose, keeps Homarr data in a host directory, and makes the Docker socket an explicit decision instead of a default.

What you need before installing Homarr

You need a Linux host with Docker Engine and the Docker Compose plugin working. Run the two checks below before creating the dashboard, then use the current Docker installation instructions for your distribution if either command fails.

docker --version
docker compose version

Homarr publishes a current Docker installation path in its Docker documentation. Docker Compose keeps the image, port, environment, and persistent mount in one file, which makes the service easier to inspect and update than a long detached command.

Use Docker and Podman concepts to understand the container model, then follow the Docker installation walkthrough for Ubuntu when it matches your host.

Create the Compose project

Create the project directory under the account that will run Compose so the service definition and persistent Homarr data stay together.

mkdir -p ~/homarr
cd ~/homarr
openssl rand -base64 32

Copy the generated value into SECRET_ENCRYPTION_KEY and store it in a private environment file or secret manager, because changing it later can prevent Homarr from reading encrypted local data.

services:
  homarr:
    container_name: homarr
    image: ghcr.io/homarr-labs/homarr:latest
    restart: unless-stopped
    ports:
      - "7575:7575"
    volumes:
      - ./appdata:/appdata
      # Remove this mount unless you need Docker integration.
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - SECRET_ENCRYPTION_KEY=replace-with-a-32-byte-base64-value

Save the file as compose.yaml. The image reference is ghcr.io/homarr-labs/homarr:latest.

Decide whether Homarr should reach Docker

The Docker socket mount is powerful because it gives a process inside the container a direct route to the Docker service. Homarr documents the mount for its Docker integration, but a bookmark dashboard does not need it.

Your goalCompose choiceWhy it matters
Links and dashboard widgets onlyRemove the Docker socket volumeHomarr cannot inspect or act on containers.
Container status and Docker controlsKeep the Docker socket volumeHomarr can communicate with the local Docker service.
Dashboard exposed beyond a trusted LANRemove the socket and restrict accessA dashboard compromise should not become Docker-daemon access.

Read container image security guidance before relying on a floating latest tag for a service that reaches other infrastructure.

Start Homarr and verify the container

Run these commands from the directory containing compose.yaml. Docker Compose downloads the image when needed, then starts the declared service in the background.

docker compose up -d
docker compose ps

Open http://SERVER_IP:7575 from a browser on your trusted network. Complete Homarr’s first-run setup, then add one low-risk bookmark before connecting a service that needs credentials or a privileged integration.

If the page is unreachable, first confirm that port 7575 is published and that the host firewall allows access from the network you intend to use. Linux firewall and access-control basics can help you narrow that boundary without exposing the dashboard broadly.

Add services without confusing authentication and access

A dashboard link is not an authorization layer. Homarr can make a private service convenient to open, but each application still needs its own authentication, updates, backups, and network policy.

Use distinct credentials for connected services and avoid putting administrator tokens into a dashboard merely to show a status tile. If the server has multiple users, the Linux users, groups, and permissions guide is the right next step for separating routine administration from broad host access.

Update and roll back safely

Check the current Homarr Docker documentation before an upgrade, then pull and recreate the service from the same project directory. The appdata directory is the state you need to back up before changing the image.

docker compose pull
docker compose up -d
docker compose ps

The strongest objection to this setup is fair. Mounting the Docker socket can turn a dashboard into a high-impact administrative surface, so keep it only when Docker integration is worth that tradeoff and do not expose the dashboard publicly without an access design.

Verify your Homarr setup

  1. docker compose ps reports the Homarr service as running.
  2. http://SERVER_IP:7575 loads from the intended trusted network.
  3. The appdata directory exists beside compose.yaml.
  4. SECRET_ENCRYPTION_KEY is stored outside public source control.
  5. The Docker socket mount is present only when you need Docker integration.

Start with one bookmark, one bounded integration, and a backup of appdata. When the server feels slow, use CPU, disk, and memory checks to diagnose the host instead of granting the dashboard more control.

Sources

Homarr Docker installation documentation and Homarr Docker integration documentation provide the current image and Docker-integration guidance. Docker Compose documentation explains the Compose service model used here.