Skip to content

Plex in Docker on a Synology NAS (Hardware Transcoding)

New guide released06/12/2021
Added note around Ryzen based Synology models27/12/2021
Updated Environment Variables to ensure server is updating to latest version02/02/2022
Added Timezone Variable to the compose22/05/2022
Amended the mount path for media12/08/2022

In this guide I am going to take you through the setup of Plex in Docker using Docker Compose.

As of writing the Synology UI does not have the capability of passing through specific hardware to a container, this means we will need to set up Plex via SSH (terminal). However, don’t freak out as it’s not that difficult!

Plex Pass

You will only benefit from hardware transcoding if you have an active Plex Pass either monthly or lifetime. if you don’t have one you can either follow this guide or jump over to the non hardware transcoding version.

Does my Synology support Hardware Transcoding?

Before we do anything else, you need to make sure your model of Synology has Intel Quick Sync. You need to do a quick lookup via the two pages below, on the first one, find your NAS model then on the Intel site lookup it’s CPU specifications. (If you are using a new model with a Ryzen v1500b it does not have hardware transcode capabilities)

For example the DS920+ has an Intel Celeron j4125

If we then look up the j4125 on the Intel site we can see it is capable of Quick Sync

Quick Sync is Available

If you find that Quick Sync is not available on your model you can jump back over to the standard guide here

Lets Begin

As usual, it’s important you complete the two proceeding guides which will get your folder structure and docker, user setup.

Docker Compose

We will be using Docker Compose to set up the Plex container. In a nutshell we will be creating a text file (YAML formatted) which tells Docker exactly how we want to set up a specific container.

The next steps can be done either using a code/text editor such as Notepad++ or to keep things simple for this guide we will be using the Synology Text Editor which can be installed from the Package Center.

Install Text Editor from the Package Center

Open up Text Editor and click on File then New to start a new file.

You can now copy and paste the details below into the new text file, it is important you don’t change the spacing as YAML has to be formatted correctly in order to be read by Docker Compose.

version: "3.8"
    container_name: plex
    network_mode: host
      - VERSION=latest
      - /volume1/docker/plex:/config
      - /volume1/data/media:/data/media
      - /dev/dri:/dev/dri
    restart: unless-stopped

Environment Variables

We need to make some changes in order for the container to have the correct permissions to save its configuration files and to have access to your media.


When you created your docker user you would have noted down these IDs add these to the compose file in the ‘environment:’ section


We can now pass through our file paths into the container they are mounted using the volume’s section of the compose file.

I have pre-filled this section to pass the correct paths, the only thing that you may need to change is the /volume1/ if your file paths are on a different volume.


The timezone variable will tell the container where you are in the world meaning your logs and scheduled tasks will run at the correct times. A list of timezones with the correct formatting can be found here

Your final file should look similar to the one shown below.

Saving the Compose File

We now need to save this file into our docker share.

Click on File then Save As, navigate to the ‘Docker’ share and create a new folder called ‘plex’ (lower case)

You need to change the ‘File name’ to plex.yml and save it in the ‘plex’ folder

SSH and Docker-Compose

It’s time to get logged into your Diskstation via SSH, you can do this in the same way as when you obtained your IDs in the ‘Setting up a restricted Docker user‘ guide.

Once you have logged in you will need to give 2 commands, you can copy and paste these one at a time — you will need to enter your password for the command starting with ‘sudo’

First we are going to change directory to where the plex.yml is located, type the below and then press enter.

cd /volume1/docker/plex

Then we are going to instruct Docker Compose to read the file we created and complete the set-up of the container. Again type the below and press enter.

sudo docker-compose -f plex.yml up -d

When the command has completed you should be able to see Plex running in the list of containers in the Synology GUI.

Plex Initial Setup

After a few minutes you should be able to access the server and go through the Plex setup by going to the IP of your NAS in your browser followed by port 32400/web/


You will be asked to sign in or sign up for an account if you don’t have one already.

You should now be able to add your media which will be in the /data/media folder within Plex

Once you have got to the main Plex interface make sure you go into the settings and turn on

  • Enable HDR tone mapping
  • Use hardware acceleration when available

That’s it you are all setup. When a new server update is available you will just need to restart the container, and it will automatically download the latest update.

Throw me some bits or buy me a coffee?

If you have found my site useful please consider pinging me a tip as it helps cover the cost of running the site, you can even buy me a coffee 🙂

Buy Me A Coffee
Doge / Ethereum / Bitcoin
Published inPlex


  1. supermarcio supermarcio

    hey Dr_Frankenstein, love the guides so far! thank you! Battling to switch Network > Secure connections to “required”. :32400/web/ fails to load data when on; need “preferred” via and can then http. Also, Plex can’t seem to see the internet in Remote Access (Your server is signed in to Plex, but is not reachable from outside your network.)… any pointers on where I am going off please?

    • Dr_Frankenstein Dr_Frankenstein

      Glad they are working out :). You may need to actively do a port forward on your router to open up 32400 to your NAS. See if that helps with the connection issue – I personally turn off relays, so any connections must be direct or not at all.

      On the secure element the app once the port forward has been done see if this issue goes away. For me the only reason I had to have it on preferred before was due to the old LG WebOS app.

  2. Patrick Van Deursen Patrick Van Deursen

    Fantastic guides you put up here!! used the weekend to put all my packages in Docker. Succeeded so far with Plex, BAzarr, Radarr and Sonarr. Would have had the guts nor the outcome were it not for your fantastic guides.

    One question I have, and was the main reason going to docker, is, am am currently on DSM 6, can I now transfer easily to DSM 7? anybody have experience with the above packages transferred to docker and then upgrading?

    • Dr_Frankenstein Dr_Frankenstein

      Thanks, you can just jump right over to DSM 7 the containers are disposable and independent of the system. your important data is all kept outside of them.

      • Patrick Van Deursen Patrick Van Deursen

        thanks will do that this weekend. Other question. I copied your exact yml file. If I now look at my variables I see PLEX_ARCH : amd64.However my DS918+ has a Intel Celeron J3455. Is that incorrect? Do I need to adapt something?

        • Dr_Frankenstein Dr_Frankenstein

          Hey, no you are good amd64 is just the set of 64bit instructions used by all modern CPUs.

          • Patrick Van Deursen Patrick Van Deursen


  3. aionon aionon

    Love the help I’ve gotten here. Successfully (for the most part) have Plex, Radarr, Sonarr, and nzbget all running. However, having an issue with Plex not updating. Seems like Docker (or my lack of a lot of experience with it) tends to obscure versioning to some extent, especially when selecting “latest”. I keep downloading latest for the image from, then stop and reset… and I’m still on and showing needing an update from within Plex itself. Can’t really figure out if this is me, or maybe, or what. The other apps have been updating fine. Thanks for the guides, and any insight someone might have on this.

    • Dr_Frankenstein Dr_Frankenstein

      Hey, if you followed this guide before the 2nd of Feb it was missing the VERSION environment variable, if you add that the container will pull the latest Plex version on the next restart.

      • Aionon Aionon

        Yeah, I added Plex last month after the latest Nvidia Shield update took it out there. Updating that variable took care of things, thanks so much :-). Now I just have to figure out why it still doesn’t transcode properly to my Roku, even though my model should be able to. Nvidia Shield had the same issue though…

        • Dr_Frankenstein Dr_Frankenstein

          Drop in over on Discord see if someone else has a Roku to try out.

  4. TTL TTL

    Could you make a guide on getting tinyMediaManager up and running in docker on a Synology nas? I tried another guide who uses user scripts to install and it didn’t work. I tried doing it manually by following your guides here but changing the docker compose file to that of tinyMediaManager settings and I can get it running but when I go to add my media folder inside tinyMediaManager it says it doesn’t have access. I’m stumped.

    • Dr_Frankenstein Dr_Frankenstein

      Hey, reach out to me on Discord this looks fairly straight forward to set up.

  5. Bryan Bryan

    I am a believer! sabnzbd,sonarr,radarr and Plex up and running smoothly on my synology DS918+
    After the huge mono debacle and both sonarr and radarr Syno community versions giving me so many headaches I was ready to get a Mac mini and just run everything from there, but with this docker set up I can keep using the synology like I wanted.
    Thank you so much! Donated 30 coffee’s to cause.

    • Dr_Frankenstein Dr_Frankenstein

      Hey, thanks so much for the coffees it is greatly appreciated, now you are well and truly in the Docker rabbit hole as there are no end of other containers you can start to play with!

      • Bryab Bryab

        Yeah…. I was kinda afraid of that as well 🙂

    • Patrick Van Deursen Patrick Van Deursen

      I also made the jump and that worked perfectly thanks to dr Frankenstein. question is what do I now keep in the package center? Mono, Python ( I have 4 versions installed….), Node.js, ffmpeg, git… No clue if I need them still (or ever have) for these 4 packages.

      • Dr_Frankenstein Dr_Frankenstein

        Some are needed for DSM none for the Docker containers themselves as they will have what they required inside each image

Leave a Reply to Dr_Frankenstein Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed. – writing Synology Docker Guides since 2016 – Join My Discord!