Skip to content

Installation

Home Lab runs as a single container. It creates and migrates its own SQLite database on first run - there is nothing to set up by hand.

Prerequisites

  • Docker and Docker Compose
  • A data volume to persist the database and backups
  • (Optional) a reverse proxy such as Traefik if you want a domain + TLS

1. Create a compose file

yaml
services:
  homelab:
    image: homelab:latest
    container_name: homelab
    restart: unless-stopped
    ports:
      - "8088:8088"
    environment:
      PORT: 8088
      HOST: 0.0.0.0
      DATA_DIR: /data
    volumes:
      - homelab-data:/data

  # Optional - only needed for Docker container controls in the UI
  dockerproxy:
    image: tecnativa/docker-socket-proxy
    container_name: homelab-dockerproxy
    restart: unless-stopped
    environment:
      CONTAINERS: 1
      POST: 1
      START: 1
      STOP: 1
      RESTART: 1
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro

volumes:
  homelab-data:

Why the docker-socket-proxy?

Home Lab never talks to the Docker socket directly. The optional dockerproxy sidecar exposes a read-mostly subset of the Docker API (list containers, start/stop/restart) so the dashboard can show container status and control containers without handing it the raw socket. Leave it out if you don't want Docker controls - everything else still works. See Docker settings.

2. Start the container

bash
docker compose up -d

Open http://your-host:8088. On a fresh install you'll see an empty dashboard - no demo data. Start adding pages and services, or import from Homepage.

3. Put it behind your reverse proxy (optional)

Home Lab serves the API and the UI from the same origin on one port, so any standard reverse-proxy route works. With a Traefik file provider, for example, point a router at the homelab service on port 8088.

HTTPS for the PWA

To install Home Lab as an app, it must be served over HTTPS (or localhost). Put it behind TLS to get the install prompt.

Updating

bash
docker compose pull
docker compose up -d

The schema migrates automatically on startup and your data is preserved in the volume. Automatic backups are written daily as a safety net.

Data & persistence

Everything lives under DATA_DIR (mapped to the homelab-data volume):

PathContents
/data/homelab.dbThe SQLite database (pages, services, credentials, settings)
/data/backups/Automatic daily backups, last 7 kept

As long as the volume survives, your dashboard survives.

Next steps