Appearance
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 -dOpen 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 -dThe 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):
| Path | Contents |
|---|---|
/data/homelab.db | The 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
- First steps - your first page, service and widget
- Environment variables - tuning and TLS options