Scrob logo

Scrob

Self-hosted media tracking app that syncs watch history from Jellyfin, Plex, and Emby

Alternative to: letterboxd, trakt

Scrob screenshot

Scrob is a self-hosted media tracking app that automatically syncs your watch history, ratings, and personal lists from Jellyfin, Plex, Emby, Nuvio, and Stremio libraries, acting as your own private Letterboxd plus Trakt. It tracks movies, TV shows, and episodes with no manual logging required, and offers a progressive web app interface installable on any device.

Scrob Docker Compose example

Self-host Scrob on your own server, homelab, or VPS starting from this Docker Compose example. It runs Scrob in Docker containers using the official postgres:16-alpine, bellamy/scrob:latest images, with persistent volumes and automatic restarts preconfigured. Review the environment variables and adjust them to your setup, save the file as compose.yml (or docker-compose.yml), and start the stack with docker compose up -d.

services:
  scrob-db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: "scrob"
      # Password for the bundled PostgreSQL database.
      POSTGRES_PASSWORD: "changeme"
      POSTGRES_DB: "scrob"
    volumes:
      - db_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U scrob -d scrob"]
      interval: 5s
      timeout: 5s
      retries: 10

  scrob:
    image: bellamy/scrob:latest
    restart: unless-stopped
    depends_on:
      scrob-db:
        condition: service_healthy
    environment:
      # Connection string to the PostgreSQL database (password must match POSTGRES_PASSWORD above).
      DATABASE_URL: "postgresql+asyncpg://scrob:changeme@scrob-db:5432/scrob"
      # JWT signing key. Generate with: openssl rand -hex 32
      SECRET_KEY: "changeme"
      # Allow new users to register. The first user can always register regardless of this setting.
      ENABLE_REGISTRATIONS: "false"
      # Container timezone (e.g. Europe/Lisbon).
      TZ: "UTC"
    volumes:
      - scrob_data:/app/backend/data

volumes:
  db_data:
  scrob_data:

Values set to changeme are required — replace them with your own values before starting Scrob.

Prefer a managed setup? WinterFlow installs, configures, and updates Scrob for you using this same Docker Compose configuration.