{"id":15779508,"url":"https://github.com/jim60105/docker-yt-dlp","last_synced_at":"2026-04-10T21:05:33.971Z","repository":{"id":215519458,"uuid":"739106470","full_name":"jim60105/docker-yt-dlp","owner":"jim60105","description":"This is the docker image for yt-dlp from the community. (Dockerfile, CI image build and test)","archived":false,"fork":false,"pushed_at":"2024-01-19T18:55:07.000Z","size":59,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-01-19T19:55:33.063Z","etag":null,"topics":["docker","docker-image","dockerfile","recording","youtube","youtube-dl","yt-dlp"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jim60105.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-01-04T19:34:42.000Z","updated_at":"2024-04-15T14:03:40.494Z","dependencies_parsed_at":"2024-01-19T19:49:34.523Z","dependency_job_id":"5b99739b-1592-476e-81ec-77e9f8576014","html_url":"https://github.com/jim60105/docker-yt-dlp","commit_stats":null,"previous_names":["jim60105/docker-yt-dlp"],"tags_count":5,"template":false,"template_full_name":"jim60105/Dockerfile-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jim60105%2Fdocker-yt-dlp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jim60105%2Fdocker-yt-dlp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jim60105%2Fdocker-yt-dlp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jim60105%2Fdocker-yt-dlp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jim60105","download_url":"https://codeload.github.com/jim60105/docker-yt-dlp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246492127,"owners_count":20786311,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-image","dockerfile","recording","youtube","youtube-dl","yt-dlp"],"created_at":"2024-10-04T18:20:21.712Z","updated_at":"2026-04-10T21:05:33.965Z","avatar_url":"https://github.com/jim60105.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# docker-yt-dlp\n\n[![CodeFactor](https://www.codefactor.io/repository/github/jim60105/docker-yt-dlp/badge)](https://www.codefactor.io/repository/github/jim60105/docker-yt-dlp) [![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/jim60105/docker-yt-dlp/scan.yml?label=IMAGE%20SCAN)](https://github.com/jim60105/docker-yt-dlp/actions/workflows/scan.yml)\n\nThis is the docker image for [yt-dlp/yt-dlp: A youtube-dl fork with additional features and fixes](https://github.com/yt-dlp/yt-dlp) from the community.\n\nGet the Dockerfile at [GitHub](https://github.com/jim60105/docker-yt-dlp), or pull the image from [ghcr.io](https://ghcr.io/jim60105/yt-dlp) or [quay.io](https://quay.io/repository/jim60105/yt-dlp?tab=tags).\n\n## Usage Command\n\nMount the current directory as `/download` and run yt-dlp with additional input arguments.  \nThe downloaded files will be saved to where you run the command.\n\n```bash\ndocker run -it -v \".:/download\" ghcr.io/jim60105/yt-dlp:pot [OPTIONS] [--] URL [URL...]\n```\n\nThe `[OPTIONS]`, `[URL...]` placeholder should be replaced with the options and arguments for yt-dlp. Check the [yt-dlp README](https://github.com/yt-dlp/yt-dlp?tab=readme-ov-file#usage-and-options) for more information.\n\nYou can find all available tags at [ghcr.io](https://github.com/jim60105/yt-dlp/pkgs/container/yt-dlp/versions?filters%5Bversion_type%5D=tagged) or [quay.io](https://quay.io/repository/jim60105/yt-dlp?tab=tags).\n\n\u003e [!TIP]\n\u003e\n\u003e If you're experiencing YouTube bot detection issues (HTTP 403 errors, \"Sign in to confirm you're not a bot\" messages), consider using the _**POT provider version**_ which includes automatic token generation to help bypass these restrictions.\n\n## Building the Docker Image\n\n### Dockerfiles\n\nThis repository contains five Dockerfiles for building Docker images based on different base images:\n\n| Dockerfile                                     | Base Image                                                                                                                         |\n| ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |\n| [Dockerfile](Dockerfile)                       | [Alpine official image](https://hub.docker.com/_/alpine/)                                                                          |\n| [alpine.Dockerfile](alpine.Dockerfile)         | [Python official image 3.12-alpine](https://hub.docker.com/_/python/)                                                              |\n| [ubi.Dockerfile](ubi.Dockerfile)               | [Red Hat Universal Base Image 9 Minimal](https://catalog.redhat.com/software/containers/ubi9/ubi-minimal/615bd9b4075b022acc111bf5) |\n| [distroless.Dockerfile](distroless.Dockerfile) | [distroless-python](https://github.com/alexdmoss/distroless-python)                                                                |\n| [pot.Dockerfile](pot.Dockerfile)               | [denoland/deno:alpine](\u003chttps://hub.docker.com/r/denoland/deno\u003e)                                          |\n\n### Build Arguments\n\nThe [alpine.Dockerfile](alpine.Dockerfile), [ubi.Dockerfile](ubi.Dockerfile), [distroless.Dockerfile](distroless.Dockerfile), and [pot.Dockerfile](pot.Dockerfile) are built using a build argument called `BUILD_VERSION`. This argument represents [the release version of yt-dlp](https://github.com/yt-dlp/yt-dlp/tags), such as `2025.12.08` or `2025.06.25`.\n\nIt is important to note that the [Dockerfile](Dockerfile) always builds with [the latest apk package source](https://pkgs.alpinelinux.org/package/edge/community/aarch64/yt-dlp), so it can't set the build version explicitly.\n\n\u003e [!NOTE]\n\u003e\n\u003e - The apk edge branch follows the latest release of yt-dlp.\n\u003e - The `alpine.Dockerfile` installs yt-dlp from pip source, so the image size may slightly different compared to the `Dockerfile` even when they have the same version.\n\n### Build Command\n\n```bash\ndocker build -t yt-dlp .\ndocker build --build-arg BUILD_VERSION=2025.12.08 -f ./alpine.Dockerfile -t yt-dlp:alpine .\ndocker build --build-arg BUILD_VERSION=2025.12.08 -f ./ubi.Dockerfile -t yt-dlp:ubi .\ndocker build --build-arg BUILD_VERSION=2025.12.08 -f ./distroless.Dockerfile -t yt-dlp:distroless .\ndocker build --build-arg BUILD_VERSION=2025.12.08 -f ./pot.Dockerfile -t yt-dlp:pot .\n```\n\n## POT Provider Variant\n\nThe POT (Proof of Origin Token) provider variant is designed to help bypass YouTube's bot detection mechanisms. This variant includes the [bgutil-ytdlp-pot-provider-rs](https://github.com/jim60105/bgutil-ytdlp-pot-provider-rs) which automatically generates POT tokens to make your yt-dlp requests appear more legitimate to YouTube's servers.\n\n### Why Use POT Provider?\n\nYouTube has implemented bot detection that may block download requests, resulting in:\n\n- HTTP 403 errors during video downloads\n- \"Sign in to confirm you're not a bot\" messages\n- IP address or account blocking\n\nThe POT provider helps simulate a genuine client by generating proof-of-origin tokens that YouTube's servers expect from legitimate browser-based requests.\n\n\u003e [!WARNING]\n\u003e Providing a PO token does not guarantee bypassing 403 errors or bot checks, but it may help your traffic seem more legitimate to YouTube's servers.\n\n### Usage with POT Provider\n\nUse the POT variant with the `:pot` tag:\n\n```bash\ndocker run -it -v \".:/download\" ghcr.io/jim60105/yt-dlp:pot [OPTIONS] [--] URL [URL...]\n```\n\nThe POT provider will run automatically and supply tokens to yt-dlp as needed. No additional configuration is required for basic use.\n\n## LICENSE\n\n\u003e [!NOTE]  \n\u003e The main program, [yt-dlp/yt-dlp](https://github.com/yt-dlp/yt-dlp), is distributed under [Unlicense license](https://github.com/yt-dlp/yt-dlp/blob/master/LICENSE).  \n\u003e Please consult their repository for access to the source code and licenses.  \n\u003e The following is the license for the Dockerfiles and CI workflows in this repository.\n\n\u003e [!CAUTION]  \n\u003e A GPLv3 licensed Containerfile means that you _**MUST**_ **distribute the source code with the same license**, if you\n\u003e\n\u003e - Re-distribute the image. (You can simply point to this GitHub repository if you doesn't made any code changes.)\n\u003e - Distribute an image that uses code from this repository.\n\u003e - Or **distribute an image based on this image**. (`FROM ghcr.io/jim60105/yt-dlp` in your Containerfile)\n\u003e\n\u003e \"Distribute\" means to make the image available for other people to download, usually by pushing it to a public registry. If you are solely using it for your personal purposes, this has no impact on you.\n\u003e\n\u003e Please consult the [LICENSE](LICENSE) for more details.\n\n\u003cimg src=\"https://github.com/jim60105/docker-yt-dlp/assets/16995691/f33f8175-af23-4a8a-ad69-efd17a7625f4\" alt=\"gplv3\" width=\"300\" /\u003e\n\n[GNU GENERAL PUBLIC LICENSE Version 3](LICENSE)\n\nCopyright (C) 2024 Jim Chen \u003cJim@ChenJ.im\u003e.\n\nThis program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjim60105%2Fdocker-yt-dlp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjim60105%2Fdocker-yt-dlp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjim60105%2Fdocker-yt-dlp/lists"}