Skip to content

YouTubeDL Material in Docker on a Synology NAS

Last updated on 4 December 2023

Please note if you are using DSM7.2 or higher you should use the Container Manager version of this guide from the menu.
UpdateDate
Removed docker compose section as rarely used18/07/2023
changed image to nightly as this receives the most recent bug fixes and improvements04/12/2023
Historic updates now at the end of the guide.

What is YouTubeDL Material?

YouTubeDL Material is nice web front end for YoutubeDL, This is a tool that is used to download video from YouTube and many other sites. This is useful for if you want copies of videos to watch locally offline or if you like to hoard entire channels!

Let’s Begin

In this guide I am going to take you through the steps to get YoutubeDL Material up and running in Docker on your Synology NAS

In order for you to successfully use this guide please complete the two steps below first.

Downloading the Container

Open up Docker within DSM and navigate to the ‘Registry’ tab and search for ‘tzahi12345’ in the keyword box.

Within the results right click and download the top result ‘, When it asks which version number to download select ‘nightly‘ as this has the most recent updates for this container.

Please note the screenshot shows latest I will change this shortly to nightly

Setting up the container

Now we have downloaded the image and got hold of our user IDs we can move onto the next stage.

Go back into Docker and click on the ‘Image’ tab, in the list of your containers select the image, and click on ‘Launch’

The first screen will ask how you want to set up the Docker network, we are going to use the ‘bridge’ network allowing us to amend ports later.

General Settings

Next you will be greeted with the General Settings screen, this is where you can start specifying some of your preferences.

You can change the name of the container to anything you like, and you may want to enable Auto Restart as this will ensure the container starts automatically if you reboot your NAS.

You will also notice a Configure capabilities button — don’t change anything in here!

Next up we are going to click on the ‘Advanced Settings’ button, this will take you to a new window with a number of tabs which we are going to work through.

Environment

Next we are going to set up a couple of environment variables that docker will use to allow the container access to our files and folders.

Click the Add button, and fill in the following details as per the table/screenshot, you will need to do one at a time.

VariableValue
UIDThe UID you obtained in the user setup guide
GIDThe GID you obtained in the user setup guide
USERyoutube
ytdl_use_local_dbtrue
write_ytdl_configtrue
ytdl_port9998
The default downloader can also be changed in the preferences

You do not need to set up anything on these tabs.

Press ‘Save’ to go back to the initial setup screen, then press ‘Next’

Port Settings

On this screen we are going to specify port 9998 to access YouTubeDL, this is in line with the Environment Variable set earlier. You will need to change BOTH the Local Port and the Container Port (we don’t normally do this)

Volume Settings

Where you store your downloaded videos can be changed based on your own preferences, I am basing this guide on the overall media setup and folder structure from our other guides.

Create a ‘youtube’ folder in /data/media and then add 4 subfolders

  • audio
  • subscriptions
  • users
  • video
Folder structure as per the screenshot

We can now move onto the volume tab in which we will be specifying the directories where YoutubeDL will store its configuration files and where the video downloads will be stored.

Click on Add Folder, click on the ‘docker’ share and create a new sub-folder called ‘youtubedl’ click on this folder and click ‘select’

We now need to repeat this process adding the folders below one at a time. Your path settings should look like the table/screenshot below.

File/FolderMount path
/docker/youtubedl/app/appdata
/data/media/youtube/subscriptions/app/subscriptions
/data/media/youtube/users/app/users
/data/media/youtube/audio/app/audio
/data/media/youtube/video/app/video

Click Next to move to the final screen.

Summary

You have now completed the setup of the container.

You will be shown an overall summary of the settings we have specified, this is a good time to double-check everything is correct. Finally, click on Done and the container should start to boot.

You should now be able to access the web interface via the IP of your NAS followed by the port 9998

e.g. 192.168.0.40:9998

You can use the main screen to download individual videos by pasting the URL and selecting the quality, or if you want to add subscriptions to specific channels use the menu on the left.

I recommend going into the advanced settings and amending the downloader to ‘yt-dlp’ if you have any issues pulling videos.



Historic UpdatesDate
New guide published05/03/2022
Small amendment made to the environment variables to specify the use of a local database10/05/2022
Updated with DSM7.1 Steps and Screenshots23/06/2022
Changes to ‘latest’ image and update steps09/07/2022
Added new port settings and Docker Bridge Network23/07/2022
Fixed a rogue old image for the ports section use ports 9998 on both sides!08/09/2022
Removed the default downloader so you can select one from the settings after startup.26/01/2023
Compose version number removed and small wording amendments09/04/2023
Amended the path to save the compose file – this is for security, so the container has no access to the file contents.14/04/2023
Historic Updates

Looking for some help, join our Discord community

If you are struggling with any steps in the guides or looking to branch out into other containers join our Discord community!

Buy me a beverage!

If you have found my site useful please consider pinging me a tip as it helps cover the cost of running things or just lets me stay hydrated. Plus 10% goes to the devs of the apps I do guides for every year.

Published inDockerMedia Management 7.1Synology

59 Comments

  1. Steven Reilly Steven Reilly

    Hey – great guide, thanks so much.

    I’m finding that I can’t play videos on iPhone which I guess is to do with format.

    Is there anything I can specify in setting that will help with this?

    The videos I have at moment are MPEG-4 1080p but just get a playback error

    • Dr_Frankenstein Dr_Frankenstein

      I would need someone with an iPhone to chime in. This should just play back as it is a pretty standard format.

  2. rAf rAf

    Great tutorial! I have tried to create this and even though the container is deployed, I keep receiving the error below and the container keeps on restarting. Seems like I have to make an ‘appdata/logs’ directory, any ideas?

    Error: EACCES: permission denied, mkdir ‘appdata/logs’

  3. Snakeicecream Snakeicecream

    Thank you so much for this guide. This has worked perfectly for me for months, but recently all of a sudden I started getting this error in my logs and the page no longer loads:

    Error: EACCES: permission denied, open ‘./appdata/local_db.json’

    I’ve tried completely creating a new image and everything and it keeps happening. Any ideas to why this might be?

    • Dr_Frankenstein Dr_Frankenstein

      Hey – double-check the UID and GID you used for the container – if they are correct that file exists within /docker/youtubedl with the container stopped check its permissions are set to the dockerlimited user.

    • Dr_Frankenstein Dr_Frankenstein

      Hey see rAf’s comment – this was a broken image – pull the latest one again and you should be good

  4. Ioannis Ioannis

    Hello!

    First of all, youre amazing and i thank you very much for what you do!

    Im having an issue where i cant see the files in my shared folder (/data/media/youtube) after they have downloaded. I see the youtube file is downloaded under My Videos in the webpage and they work. The path listed under those files is user/admin/video and i cant seem to find that location either. soory im a newb.

    • Dr_Frankenstein Dr_Frankenstein

      Hey, completely valid question, normally the path within the app defaults to /app/video etc… Do you have MultiUser mode enabled?

    • Dr_Frankenstein Dr_Frankenstein

      OK – I have done some digging – Looks like you do have Multi User enabled – You need to add one additional volume mount

      /data/media/youtube/users to /users on the container side.

      I will add this to the guide when I am making the next update over the weekend.

  5. Jay Jay

    Wow this application is fantastic and even better than I thought! Thanks for the guide! I didn’t come here looking for it but pleasantly surprised and happy to discover this!

    My one complaint (in no way guide-related) is that any user of the local network will have unrestricted access to download as they please. Do you know if there is any way to lock this behind a login screen?

    • Dr_Frankenstein Dr_Frankenstein

      Hey thanks – yeah it’s a missing feature – The project is starting to go stale I have been watching the Issues pile up over on Github, if the situation doesn’t improve this could turn into an abandoned project. I will be watching it and also looking at viable alternatives as I use this and Tubesync currently however this is nice from grabbing single videos.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

drfrankenstein.co.uk – writing Synology Docker Guides since 2016 – Join My Discord!