Appearance
Environment variables
Home Lab needs no environment variables to run - sensible defaults apply. The variables below let you tune ports, storage, TLS and caching.
Core
| Variable | Default | Description |
|---|---|---|
PORT | 8088 | Port the server listens on |
HOST | 0.0.0.0 | Bind address |
DATA_DIR | /data | Where the SQLite DB and backups live (persist this) |
STATIC_DIR | project root | Directory the static front-end is served from |
SEED | false | Seed demo data on first run (leave off for an empty start) |
Backups
| Variable | Default | Description |
|---|---|---|
BACKUP_KEEP | 7 | How many daily backups to retain |
Caching & timeouts
| Variable | Default | Description |
|---|---|---|
WIDGET_TTL_MS | 8000 | How long widget responses are cached |
HEALTH_TTL_MS | - | Cache TTL for health-source samples |
STATUS_TTL_MS | - | Cache TTL for service status |
STATUS_INTERVAL_MS | - | How often background status refresh runs |
FETCH_TIMEOUT_MS | - | Upstream request timeout |
TLS
| Variable | Default | Description |
|---|---|---|
INSECURE_TLS | off | Accept self-signed certs from upstream services (e.g. Proxmox) |
NODE_TLS_REJECT_UNAUTHORIZED | 1 | Node's global TLS verification toggle |
Self-signed upstreams
Many homelab services (Proxmox, PBS) use self-signed certificates. Set INSECURE_TLS=1 so widget requests to them succeed. This only affects Home Lab's outbound requests to your services.
Example
yaml
services:
homelab:
image: homelab:latest
environment:
PORT: 8088
DATA_DIR: /data
BACKUP_KEEP: 7
INSECURE_TLS: 1
volumes:
- homelab-data:/data
ports:
- "8088:8088"
volumes:
homelab-data: