-
Notifications
You must be signed in to change notification settings - Fork 0
Installation
chodeus edited this page Apr 20, 2026
·
4 revisions
CHUB runs as a Docker container. The image is published at ghcr.io/chodeus/chub:latest.
- 🐳 Docker Compose — the recommended path (below)
- 🏃 Docker single-run (below)
- 🟦 Unraid
- 🧪 Bare metal — for development or Docker-free hosts
After CHUB is running, finish the setup with First Run.
- A Linux host with Docker 24 or newer (or Docker Desktop on macOS/Windows).
- A folder on the host for CHUB's config, database, and logs (50–200 MB over time).
- Optional: the folders that already hold your posters, media, and Kometa assets.
Create a folder for the stack (e.g. /opt/stacks/chub/) and save this as compose.yaml:
services:
chub:
image: ghcr.io/chodeus/chub:latest
container_name: chub
restart: unless-stopped
ports:
- "8000:8000"
environment:
PUID: "1000" # Unraid: 99
PGID: "1000" # Unraid: 100
TZ: "America/Los_Angeles"
volumes:
- /srv/apps/chub/config:/config
- /srv/apps/chub/posters:/posters
- /srv/media:/media
- /srv/kometa/assets:/kometa
healthcheck:
test: ["CMD-SHELL", "curl -fsS http://127.0.0.1:8000/api/health >/dev/null || exit 1"]
interval: 30s
timeout: 5s
retries: 5
start_period: 45s
security_opt:
- no-new-privileges:true
tmpfs:
- /tmpReplace the four host paths, set PUID / PGID to the user that owns them, adjust TZ to your timezone.
Start:
docker compose up -dThen open http://localhost:8000 and follow First Run.
docker compose pull
docker compose up -dNo manual migrations — CHUB updates its database schema automatically on startup.
If you don't use Compose:
docker run -d \
--name chub \
--restart unless-stopped \
-p 8000:8000 \
-e PUID=1000 -e PGID=1000 -e TZ=America/Los_Angeles \
-v /srv/apps/chub/config:/config \
-v /srv/apps/chub/posters:/posters \
-v /srv/media:/media \
-v /srv/kometa/assets:/kometa \
ghcr.io/chodeus/chub:latestdocker compose logs chubCommon causes in Troubleshooting → Container won't start.