-
-
Notifications
You must be signed in to change notification settings - Fork 30
1. Start Here
This guide focuses on the recommended path: Docker Compose with the prebuilt release image.
Recommended path: Docker Compose
- Clone the repo and enter the project root.
- Pick a compose file:
-
docker-compose.yml(SQLite, simplest) -
docker-compose.postgres.yml(Postgres, production)
-
- Set required environment variables:
-
SECRET(required, long random string) -
REDIS_URL(required for Docker, default in compose isredis://redis:6379) -
TZ(recommended)
-
- Optional metadata keys for richer matching:
-
TMDB_API,TVDB_API_KEY,MAL_API,IGDB_ID,IGDB_SECRET,STEAM_API_KEY,BGG_API_TOKEN - See Environment Variables for the full list.
-
- Start the stack:
docker compose up -d
- Open
http://localhost:8000and log in.
First-run checklist
- Migrations
- Docker images run
python manage.py migrate --noinputon boot. - From source:
cd src && python manage.py migrate.
- Docker images run
- Create your first user
- Use the "Register now" link on the login page (registration is enabled by default).
- If registration is disabled (
REGISTRATION=False), create a user from the CLI:cd src && python manage.py createsuperuser
- Enable the admin (optional)
- Set
ADMIN_ENABLED=Truein your environment. - Create or promote an admin user:
- Docker:
docker exec -it yamtrack python manage.py createsuperuser - Or promote an existing user:
docker exec -it yamtrack python manage.py shell >>> from users.models import User >>> User.objects.filter(username="your_username").update(is_staff=True, is_superuser=True)
- Docker:
- See Admin Guide for details.
- Set
First login: what to do next
- Connect integrations in Settings -> Integrations (Plex, Trakt, Pocket Casts, Last.fm, etc.).
- Run your first import in Settings -> Import.
- Visit History and Statistics; background caches may show "Refreshing ... in background" while they rebuild.
- Tune Preferences and Sidebar to control media types, sorting, and layout.
Running from source (local dev) If you are not using Docker, you will need Redis and a Celery worker/beat process for imports and cache refreshes. See the AGENTS.md Quickstart or README for the full local dev flow.
Upgrading?
If you are moving from dev to release, follow the Upgrade Guide:
This guide covers the fork upgrade path from upstream dev into release.
Before you upgrade
- Back up your database.
- Docker (SQLite): copy
./dbor at least./db/db.sqlite3. - Docker (Postgres): dump the
postgres_datavolume or usepg_dump. - From source: copy
src/db/db.sqlite3if you use SQLite locally.
- Docker (SQLite): copy
- Save your
.envor compose files. - Note your current integrations (Plex, Trakt, Pocket Casts, Last.fm) and any webhook URLs.
Upgrade steps
- Update the code or image.
- Docker:
docker compose pullthendocker compose up -d. - From source:
git pulland update dependencies (pip install -r requirements.txt).
- Docker:
- Apply migrations.
- Docker runs
python manage.py migrate --noinputon boot. - From source:
cd src && python manage.py migrate.
- Docker runs
- Ensure Redis + Celery are running.
- History/Statistics caches and import jobs rely on background tasks.
Migrations and model additions This release adds new data models and tables. Expect migrations for:
- New media types: Music, Podcast, Board Game.
- Music hierarchy (Artist, Album, Track) and podcast show/episode tracking.
- Collection metadata (CollectionEntry) and metadata backfill tracking.
New caches: History and Statistics History and Statistics now use background caching. After upgrade you may see banners like "Refreshing history in background..." or "Refreshing statistics in background...". This is expected on first load or after a refresh:
- Keep Redis and Celery running to allow cache rebuilds.
- Use the in-page refresh buttons if data looks stale.
Integration additions to configure New or expanded integrations include:
- Plex (connect + history + collection metadata)
- Pocket Casts (connect + recurring import)
- Last.fm (connect + scheduled scrobble polling)
- Jellyfin / Emby / Jellyseerr webhooks
Environment variables you may need:
LASTFM_API_KEYBGG_API_TOKEN- Plex tuning:
PLEX_*(client identifier, SSL verify, history page size) See Environment Variables for the full list.
Webhook endpoints now include your user token. You can copy the correct URLs from Settings -> Integrations.
Common upgrade surprises and fixes
- History/Statistics look empty or stuck
- Cause: caches are rebuilding or Celery is not running.
- Fix: confirm Redis + Celery are up, then wait for the refresh banner to clear.
- Webhooks stop firing
- Cause: webhook URLs need your user token.
- Fix: update URLs from Settings -> Integrations; regenerate the token if needed.
- Signups are closed
- Cause:
REGISTRATION=Falsein env. - Fix: set
REGISTRATION=Trueor create a user viacreatesuperuser.
- Cause:
- 403s behind a reverse proxy
- Cause: missing
URLSin env. - Fix: set
URLSto your public base URL(s).
- Cause: missing
See also