tinyMediaManager offers a official docker image based on Debian Buster (for maximum compatibility). This image includes all needed components (up to date libmediainfo, FFmpeg, …) for the best experience. This image should work on any x86_64 device.

Using this image, you will get a fully working instance of tinyMediaManager which is accessible remotely (via web/VNC).


  • Map any local port to 4000 for web access (via noVNC)
  • Map a local volume/folder to /data where all local data from tinyMediaManager is stores (like data, logs, cache and backups)
  • Map local volumes/folders/mounts to /media/xxx where all media will be accessed. E.g.:
    • /mnt/movies -> /media/movies
    • /mnt/tvshows -> /media/tvshows
  • If you want to add custom scrapers, you need to map the folder containing the custom addons to /app/addons
  • For the HTTP API access (v4.3+), you need to map the HTTP API port too
  • If you need special start parameters, you would need to map /app/launcher-extra.yml too (see Start Parameters)

Sample run command:

docker run \
    --name=tinymediamanager \
    -p 4000:4000 \
    -e "LC_ALL=en_US.UTF-8" \
    -e "LANG=en_US.UTF-8" \
    -e "ALLOW_DIRECT_VNC=true" \
    -v </path/to/local/data/>:/data \
    -v </path/to/movies>:/media/movies \
    -v </path/to/tvshows>:/media/tvshows \
    -v </path/to/addons/>:/app/addons \

After starting the container, you can access tinyMediaManager via http://your-host-ip:4000.

Sample compose file

version: "2.1"
    image: tinymediamanager/tinymediamanager:latest
    container_name: tinymediamanager
      - USER_ID=1000
      - GROUP_ID=100
      - ALLOW_DIRECT_VNC=true
      - LC_ALL=en_US.UTF-8 # force UTF8
      - LANG=en_US.UTF-8   # force UTF8
      - PASSWORD=<password>
      - </path/to/local/data/>:/data
      - </path/to/movies>:/media/movies
      - </path/to/addons/>:/media/tv_shows
      - 5900:5900 # VNC port
      - 4000:4000 # Webinterface
    restart: unless-stopped

Data volumes

You should map the following folders to a volume/folder on the host:

  • /data: where all local data of tinyMediaManager will be stores. If you do not map this out of the container, all your data/settings will be lost on an upgrade of tinyMediaManager
  • /media: contains all your data sources
  • /app/addons: where to put custom scrapers
  • /app/launcher-extra.yml: custom launch parameters - see Start Parameters

ATTENTION: If you want to use your own launcher-extra.yml you need to add the following lines to make tmm work as intended:

javaHome: ""
  - "-Dtmm.contentfolder=/data"
  - "-Dtmm.noupdate=true"
env: [ ]

You need read/write access to all mapped volumes!


This image offers some special configuration parameters which can be passed to docker by using environment variables

Variable         Description     Default  
USER_ID ID of the user tinyMediaManager runs as. See below for an example how to use this. 1000
GROUP_ID ID of the group tinyMediaManager runs as. See below for an example how to use this. 1000
PASSWORD Password for remote access  
LC_TIME Desired date/time format. en_US.UTF-8 for 12 hour format, C.UTF-8 for 24 hour format  
TZ Timezone  
ALLOW_DIRECT_VNC To access the VNC server directly false


When using using data volumes (-v flags for /data and media), permissions issues can occur between the host and the container (tinyMediaManager). For example, the user within the container may not exist on the host or does not match the right user on the host. This could prevent the container from properly accessing files and folders on the shared volume and vice versa. To avoid any problem, you can specify the user tinyMediaManager should run as.

This is done by passing the user ID and group ID to the container via the USER_ID and GROUP_ID environment variables.

To find the right IDs to use, issue the following command on the host, with the user owning the data volume on the host:

id <username>

Which gives an output like this one:

uid=1000(myuser) gid=1000(myuser) groups=1000(myuser),4(adm),24(cdrom),27(sudo),46(plugdev),113(lpadmin)

The value of uid (user ID) and gid (group ID) are the ones that you should be given the container.


Because of security restrictions in the browser, your client clipboard cannot be synchronized to the clipboard of tinyMediaManager. To copy data from/to the remote connection of tinyMediaManager, you need to invoke the clipboard feature from noVNC. Just open the control panel of noVNC from the left side of the window and use the clipboard feature from there to copy the data.