-
Notifications
You must be signed in to change notification settings - Fork 1
Installation
🏠 Home › Installation
How to run CHUB in Docker, plus the PUID/PGID and permissions reference for every install method.
CHUB runs as a Docker container from ghcr.io/chodeus/chub:latest. Other paths: Unraid · Bare metal.
- Linux host with Docker 24+ (or Docker Desktop on macOS/Windows).
- A host folder for config, database, and logs (grows to 50–200 MB).
- Optionally, the folders that hold your posters, media, and Kometa assets.
Create a folder (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:
- /tmp-
Replace the four host paths with yours.
-
Set
PUID/PGIDto the user that owns those paths (see below). -
Set
TZto your timezone. -
Start it:
docker compose up -d
-
Open http://localhost:8000 and follow First Run.
docker compose pull
docker compose up -dCHUB migrates its database schema automatically on startup — no manual steps.
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:latest| Container path | What goes here |
|---|---|
/config |
Config, database, logs. Required. |
/posters |
Poster sources/output (poster modules). |
/media |
Your media library (nohl, jduparr). |
/kometa |
Kometa asset folder (poster_renamerr, asset_renamerr). |
CHUB listens on 8000 inside the container. Map it to any host port: -p 8080:8000.
CHUB's entrypoint briefly runs as root to apply PUID/PGID, then drops to that unprivileged user for the app. Set them to the user/group that owns your mounted host folders so CHUB can read and write them.
| Host | PUID | PGID |
|---|---|---|
| Unraid | 99 |
100 |
| Typical Linux | 1000 |
1000 |
Find yours with id <user> on the host. If you omit both, the image defaults to 100:99.
Gotcha: "Permission denied" on startup almost always means
PUID/PGIDdon't match the owner of/config. Runchown -R <puid>:<pgid> /srv/apps/chubon the host, or correct the env vars.
Rootless option: instead of PUID/PGID, set user: "99:100" (the uid:gid that owns your config dir, pre-chown'd). The container then never runs as root.
docker compose logs chubCommon causes: Troubleshooting → Container won't start.
Next: First Run · Related: Unraid, Bare metal