Skip to content

Install with Docker & NAS

The server is a single container. Everything it knows lives in one data folder; your media is mounted read-only next to it.

Folder layout

The scanner understands the common "Plex-style" naming. Sidecar subtitles next to the file are picked up automatically.

your library
Movies/Paper Boats (2019)/Paper Boats (2019).mkv
Movies/Paper Boats (2019)/Paper Boats (2019).en.srt   ← optional subtitles
TV/Signal & Noise (2011)/Season 01/Signal & Noise - S01E01.mkv
TV/Signal & Noise (2011)/Season 01/Signal & Noise - S01E01.fr.srt

Any computer with Docker

Create a folder (for example ~/moovo), save this as docker-compose.yml inside it, and change the two media paths to where your Movies and TV live:

docker-compose.yml
# docker-compose.yml
services:
  moovo:
    image: ghcr.io/moovoapp/server:latest
    restart: unless-stopped
    ports:
      - "8080:8080"
    environment:
      MOOVO_PUBLIC_URL: https://movies.example.com   # how your people reach it
      MOOVO_MOVIE_ROOTS: /media/movies
      MOOVO_TV_ROOTS: /media/tv
      TMDB_API_KEY: ${TMDB_API_KEY:-}                # optional: posters & details
      TZ: America/New_York
    volumes:
      - ./data:/data                  # database, artwork, subtitles
      - /path/to/Movies:/media/movies:ro   # read-only: it never modifies your files
      - /path/to/TV:/media/tv:ro
SettingWhat it does
MOOVO_PUBLIC_URLThe address your people use to reach the server (see Remote access).
MOOVO_MOVIE_ROOTS / MOOVO_TV_ROOTSWhere the media is mounted inside the container. Separate several with commas.
TMDB_API_KEYOptional. A free key from themoviedb.org for posters, cast and descriptions. You can also add it later in the app.
TZYour time zone, used for movie-night reminders and streaks.

Then start it:

terminal
docker compose up -d
docker compose logs -f moovo

Synology (DSM 7.2+)

  1. Install Container Manager from the Package Center.
  2. In File Station, create docker/moovo and a data folder inside it.
  3. Container Manager → Project → Create, pick the docker/moovo folder, and paste the compose file above. Use your shared folders as the media paths, e.g. /volume1/Movies:/media/movies:ro.
  4. Build and start it, then open the project's Logs tab for the setup code.

Unraid

Use the Docker Compose Manager plugin: add a stack called moovo, paste the compose file, and map /mnt/user/Movies and /mnt/user/TV. Put data under /mnt/user/appdata/moovo.

TrueNAS SCALE

Apps → Discover Apps → Custom App. Image ghcr.io/moovoapp/server, tag latest, port 8080. Add host-path storage for /data (a dataset for app data) and your media datasets for /media/movies and /media/tv, both read-only. Add the environment variables from the table above.

Media on another machine (SMB/NFS)

If your movies are on a separate NAS, let Docker mount the share itself, so it survives reboots:

docker-compose.yml (excerpt)
services:
moovo:
  volumes:
    - ./data:/data
    - nas-movies:/media/movies:ro
    - nas-tv:/media/tv:ro

volumes:
nas-movies:
  driver: local
  driver_opts:
    type: cifs
    device: "//192.168.1.20/Movies"
    o: "username=reader,password=${NAS_PASSWORD},vers=3.0,ro,uid=1000,gid=1000"
nas-tv:
  driver: local
  driver_opts:
    type: cifs
    device: "//192.168.1.20/TV"
    o: "username=reader,password=${NAS_PASSWORD},vers=3.0,ro,uid=1000,gid=1000"