Movary logo

Movary

Self-hosted hub to track, rate and explore your movie watch history

Alternative to: letterboxd, trakt


Movary is a self-hosted web app for tracking, rating and exploring your movie watch history, with statistics on genres, actors and viewing habits over time. It can import history from Trakt, Letterboxd and Netflix, and automatically log plays from Plex, Jellyfin, Emby or Kodi. Ratings and watch dates sync against official IMDb datasets, and activity can be cross-posted to Mastodon.

Movary Docker Compose example

Self-host Movary on your own server, homelab, or VPS starting from this Docker Compose example. It runs Movary in Docker containers using the official leepeuker/movary:latest, mysql:8 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:
  movary:
    image: leepeuker/movary:latest
    restart: unless-stopped
    environment:
      # TMDB API key. Recommended: most metadata/image features are degraded without it. Get one at https://www.themoviedb.org/settings/api
      TMDB_API_KEY: ""
      # Public base URL where Movary is reached (protocol + host + optional port).
      APPLICATION_URL: "http://localhost"
      # Timezone used for dates and scheduled tasks (see https://www.php.net/manual/en/timezones.php).
      TIMEZONE: "UTC"
      DATABASE_MODE: "mysql"
      DATABASE_MYSQL_HOST: "mysql"
      DATABASE_MYSQL_NAME: "movary"
      DATABASE_MYSQL_USER: "movary"
      DATABASE_MYSQL_PASSWORD: "movary_db_password"
    volumes:
      - storage:/app/storage
    depends_on:
      mysql:
        condition: service_healthy

  mysql:
    image: mysql:8
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: "movary_root_password"
      MYSQL_DATABASE: "movary"
      MYSQL_USER: "movary"
      MYSQL_PASSWORD: "movary_db_password"
    volumes:
      - db:/var/lib/mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "--password=movary_root_password"]
      interval: 10s
      timeout: 5s
      retries: 10

volumes:
  storage:
  db:

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