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.
This guide has reached the end of its updates as most people are now on the latest DSM update - This guide is correct as of 08/12/2023 however no further updates will be added.
Update | Date |
---|---|
Removed docker compose section as rarely used | 18/07/2023 |
changed image to nightly as this receives the most recent bug fixes and improvements | 04/12/2023 |
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.
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.
Variable | Value |
---|---|
UID | The UID you obtained in the user setup guide |
GID | The GID you obtained in the user setup guide |
USER | youtube |
ytdl_use_local_db | true |
write_ytdl_config | true |
ytdl_port | 9998 |
Links/Execution Commands
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
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/Folder | Mount 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 Updates | Date |
---|---|
New guide published | 05/03/2022 |
Small amendment made to the environment variables to specify the use of a local database | 10/05/2022 |
Updated with DSM7.1 Steps and Screenshots | 23/06/2022 |
Changes to ‘latest’ image and update steps | 09/07/2022 |
Added new port settings and Docker Bridge Network | 23/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 amendments | 09/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 |
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.
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
I would need someone with an iPhone to chime in. This should just play back as it is a pretty standard format.
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’
Hey
Two people with similar errors on the same day can’t be coincidence as Snakeicecream had the same error but a different file – can you make sure you UID / GID are correct to start with.
The logs folder will be in /docker/youtubedl folder..
Fixed! Seems like the latest image was not working correctly so using image: tzahi12345/youtubedl-material:4.3 worked just fine.
Reference below:
https://github.com/Tzahi12345/YoutubeDL-Material/issues/919
Perfect 🙂
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?
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.
Hey see rAf’s comment – this was a broken image – pull the latest one again and you should be good
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.
Hey, completely valid question, normally the path within the app defaults to /app/video etc… Do you have MultiUser mode enabled?
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.
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?
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.