Your watchlist belongs to you.

Sofa is a movie and TV tracker you run yourself, in one Docker container. Follow shows episode by episode, log watches straight from your media server, and keep your history off someone else’s servers.

Sofa’s page for Better Call Saul: the series backdrop and poster, a Completed status, where to watch it, and the episode list for season one with every episode checked off.

Pick up where you left off

Check off episodes one at a time or a whole season at once. Continue Watching lines up the next episode of every show you’re partway through.

Find something to watch

Get recommendations based on what you’ve rated highly, see what’s airing this week, and check which services are streaming a title.

Take it with you

The iPhone and Android apps sign in to your own server. Get them from the App Store or Google Play.

Right at home in your stack

Logs what you finish inThrough each server’s webhook. Plex and Emby need a premium plan; Jellyfin needs its Webhook plugin.
Sends your watchlist toAs a custom import list, so anything you add gets downloaded on the next sync.
Imports your history fromWatches, ratings, and watchlist. Sign in to Trakt or Simkl, or upload a Letterboxd export.

Ready in minutes

This is the whole deployment. Sofa keeps everything in a single SQLite file, so there’s no database server to set up alongside it.

compose.yml
services:  sofa:    image: ghcr.io/jakejarvis/sofa:edge    container_name: sofa    restart: unless-stopped    ports:      - "3000:3000"    volumes:      - sofa-data:/data    environment:      - TMDB_API_READ_ACCESS_TOKEN=${TMDB_API_READ_ACCESS_TOKEN}      - BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET}      - BETTER_AUTH_URL=${BETTER_AUTH_URL:-http://localhost:3000}​volumes:  sofa-data:
  • One image, nothing else to run

    No separate database, cache, or worker. Built for amd64 and arm64.

  • All your data in one volume

    The SQLite database, cached posters, and backups.

  • Always up-to-date

    A free TMDB read access token provides the latest movie and TV show data.

Start it with docker compose up -d, open port 3000, and create your account. The first account becomes the admin.