Docker
Docker Compose is the recommended installation method. Install Docker Engine and the Compose plugin.
Docker Compose
First, create a docker-compose.yml file with the following content:
#---------------------------------------------------------------------## Homarr - A simple, yet powerful dashboard for your server. ##---------------------------------------------------------------------#services: homarr: container_name: homarr image: ghcr.io/homarr-labs/homarr:latest restart: unless-stopped volumes: - /var/run/docker.sock:/var/run/docker.sock # Optional, only if you want docker integration - ./homarr/appdata:/appdata environment: - SECRET_ENCRYPTION_KEY= ports: - '7575:7575' Encryption key
The SECRET_ENCRYPTION_KEY above is randomly generated by your browser. You can also generate one with openssl rand -hex 32.
Start Homarr from the directory containing docker-compose.yaml:
docker compose up -dPersist /appdata; it contains the database and configuration. Mount the Docker socket only when Homarr needs Docker
discovery or management.
Integration URLs must be reachable from the Homarr container. Browser-facing app URLs may use a different hostname; see Managing integrations.
Update
Update the image and recreate the container with the same configuration. Homarr runs database migrations automatically
at startup, including when moving from v1 to v2; no separate upgrade procedure is needed. Keep the /appdata mount and
SECRET_ENCRYPTION_KEY unchanged. Workshop connects to the production service by default.
docker compose pull
docker compose up -dUninstall
docker compose down removes the containers and Compose network. Delete the configured /appdata host directory or
volume only when the Homarr data is no longer needed.
Docker CLI
The equivalent standalone container is:
docker run \
--name homarr \
--restart unless-stopped \
-p 7575:7575 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /absolute/path/to/homarr/appdata:/appdata \
-e SECRET_ENCRYPTION_KEY='your_64_character_hex_string' \
-d ghcr.io/homarr-labs/homarr:latestRemove the Docker socket mount when it is not required. To update, pull the current image, recreate the container with
the same arguments, and keep the /appdata mount and SECRET_ENCRYPTION_KEY unchanged.