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.
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.srtAny 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
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| Setting | What it does |
|---|---|
MOOVO_PUBLIC_URL | The address your people use to reach the server (see Remote access). |
MOOVO_MOVIE_ROOTS / MOOVO_TV_ROOTS | Where the media is mounted inside the container. Separate several with commas. |
TMDB_API_KEY | Optional. A free key from themoviedb.org for posters, cast and descriptions. You can also add it later in the app. |
TZ | Your time zone, used for movie-night reminders and streaks. |
Then start it:
docker compose up -d
docker compose logs -f moovoSynology (DSM 7.2+)
- Install Container Manager from the Package Center.
- In File Station, create
docker/moovoand adatafolder inside it. - Container Manager → Project → Create, pick the
docker/moovofolder, and paste the compose file above. Use your shared folders as the media paths, e.g./volume1/Movies:/media/movies:ro. - 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:
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"