Skip to main content

Docker

services:
alchemist:
image: ghcr.io/bybrooklyn/alchemist:latest
container_name: alchemist
ports:
- "3000:3000"
volumes:
- ~/.config/alchemist:/app/config
- ~/.config/alchemist:/app/data
- /path/to/media:/media
- /tmp/alchemist:/tmp # optional: fast SSD for temp files
environment:
- ALCHEMIST_CONFIG_PATH=/app/config/config.toml
- ALCHEMIST_DB_PATH=/app/data/alchemist.db
restart: unless-stopped

Volumes

MountPurpose
~/.config/alchemist on the hostMounted into /app/config and /app/data so config.toml and alchemist.db persist across restarts
/mediaYour media library — mount read-write
/tmp (optional)Temp dir for in-progress encodes — use a fast SSD

Environment variables

VariableDescription
ALCHEMIST_CONFIG_PATHPath to config.toml inside the container
ALCHEMIST_DB_PATHPath to the SQLite database inside the container
ALCHEMIST_CONFIG_MUTABLESet false to block runtime config writes
RUST_LOGLog verbosity: info, debug, alchemist=trace

Alchemist does not use PUID/PGID. Handle permissions at the host level.

Hardware acceleration

See GPU Passthrough for vendor-specific Docker configuration.

Updating

docker compose pull && docker compose up -d

Migrations run automatically on startup. Config and database are preserved in mounted volumes.

Nightly builds

image: ghcr.io/bybrooklyn/alchemist:nightly

Published on every push to main that passes Rust checks.