If you aren’t familiar with YouTube-DL, it’s a handy command line program that allows users to easily download YouTube and other online videos without the need for gimmicky software or special website privileges and credentials.
Managing it is even easier on Unraid, as user kmb32123 has created a container that automates the installation of YouTube-DL and provides a nice GUI for adding videos via URL.
In this guide, I’ll outline the relatively simple installation process and talk a bit about how to securely get this up-and-running with external access via a reverse proxy.
What We’ll Need
We won’t need much to set this up – a working installation of Unraid and access to the Community Applications plugin will get you most of the way.
If you’d like to access YouTube-DL externally, refer to the following guides to set up NGINX Proxy Manager using a custom domain or Duck DNS (or any other dynamic DNS provider) before following the external access steps later in this guide.
To begin, head to the Community Applications plugin via the “Apps” tab within the Unraid interface and search for “youtube-dl”.
Click the installation button on the “youtube-dl-server” container that appears:
There are two fields we’ll need to complete before we can click “Apply” and install the container:
- Web UI: This is the port you’ll use to access YouTube-DL internally. I’ve chosen to leave it at the default “8080”.
- Download: The folder you’d like the downloads to be stored. I’ve created a “youtube-dl” folder in my “Downloads” share, but you can select any available folders within your shares.
When you’re ready, click “Apply” to install the container.
After it’s finished installing, YouTube-DL will be accessing by visiting:
<Server IP Address>:<YouTube-DL Port>/youtube-dl
So in my instance, I was able to access the GUI by visiting:
From there, you can enter the URL of almost any web video you’d like to download, select the option for video and audio formats using the dropdown on the right, and click “Submit” to have it begin downloading into the folder you selected.
Accessing YouTube-DL Externally
If you’d like to access the web UI on an external network, the process of adding YouTube-DL as a new proxy host in NGINX Proxy Manager will differ slightly from most other applications you like already have set up.
To get started, after you’ve created a subdomain in Cloudflare or DuckDNS, create a new proxy host and complete the “Details” and “SSL” tabs as usual:
Before you save it to create a new proxy host, we’ll need to add a custom location due to the container requiring “/youtube-dl” to be appended onto the URL.
In the “Custom locations” tab, add the following and then click “Save”:
For some reason, in my multiple attempts at recreating this to document the steps for this guide, the first “Save” always threw an internal error. If the same happens for you, click out of the proxy host dialogue box, go back in, re-enable SSL, and click “Save”.
You should now be able to access your YouTube-DL container externally at:
Securing External Access
If the idea of stopping here and leaving your external instance of YouTube-DL available to anyone who has access to your subdomain doesn’t scare you, it should.
Luckily, NGINX Proxy Manager implements a common NGINX feature called Access Lists, which allows you to secure websites that don’t have built-in authentication methods.
To do this, head to the “Access Lists” tab in NGINX Proxy Manager and create a new list by giving it a name and creating username/password combinations or adding approved IP addresses to limit who has access to the application via the subdomain.
To implement this, edit the YouTube-DL proxy host you created earlier and under the “Details” tab, change the “Access List” dropdown from “Publicly Accessible” to the list you just created.
If you’ve followed the steps above, you should have a working web UI for online video downloads using YouTube-DL and secure web access for when you find videos you’d like to download on-the-go.
Feel free to leave any questions, comments, or feedback in the comment section below.
If you’ve found this or any of the other posts on SHIFT14 helpful, please consider supporting the site through a one-time PayPal donation or ongoing support through Patreon. My goal is to continue providing in-depth guides for the technical community and the support helps justify the time and resources spent doing so.