3.2 KiB
I cant download anything
If you are receiving errors like:
- "OSError: [Errno 5] I/O error"
- "OSError: [Errno 18] Cross-device link: '/tmp/random_id/name.webm' -> '/downloads/name.webm'
- "Operation not permitted: '/downloads/name.webm'
This indicates an error with your mounts and how they interact with the container. So, the basic solution is to do the following:
services:
ytptube:
user: "${UID:-1000}:${UID:-1000}" # change this to your user id and group id, for example: "1000:1000"
image: ghcr.io/arabcoders/ytptube:latest
container_name: ytptube
restart: unless-stopped
environment:
- YTP_TEMP_PATH=/downloads/tmp
- YTP_DOWNLOAD_PATH=/downloads/files
ports:
- "8081:8081"
volumes:
- ./config:/config:rw
- ./downloads:/downloads:rw
Then run the following command to create the necessary directories and start the container:
mkdir -p ./config && mkdir -p ./downloads/{tmp,files} && docker compose -f compose.yaml up -d
Reference: Issue #363
I want to use link with playlist but only download the video not all the videos in the playlist?
Simply create a preset, and in the Command options for yt-dlp field set --no-playlist. Then select the preset
whenever the link includes a playlist id.
Note
You can also do the same via advanced options
Command options for yt-dlpfield, but presets are more convenient.
Install specific yt-dlp version?
You can force specific version of yt-dlp by setting the YTP_YTDLP_VERSION environment variable for example
YTP_YTDLP_VERSION=2025.07.21 or master or nightly
Then restart the container to apply the changes.
How to generate POT tokens?
You need to start up a pot provider server we already have extractor bgutil-ytdlp-pot-provider pre-installed in the container.
You can simply do the following to enable the support for it.
services:
ytptube:
user: "${UID:-1000}:${UID:-1000}" # change this to your user id and group id, for example: "1000:1000"
image: ghcr.io/arabcoders/ytptube:latest
container_name: ytptube
restart: unless-stopped
ports:
- "8081:8081"
volumes:
- ./config:/config:rw
- ./downloads:/downloads:rw
tmpfs:
- /tmp
depends_on:
- bgutil_provider
bgutil_provider:
init: true
image: brainicism/bgutil-ytdlp-pot-provider:latest
container_name: bgutil_provider
restart: unless-stopped
ports:
- "127.0.0.1:4416:4416"
Then simply create a new preset, and in the Command options for yt-dlp field set the following:
--extractor-args "youtubepot-bgutilhttp:base_url=http://bgutil_provider:4416"
--extractor-args "youtube:player-client=default,tv,mweb;formats=incomplete"
you and also enable the fallback by using the follow extractor args
--extractor-args "youtubepot-bgutilhttp:base_url=http://bgutil_provider:4416;disable_innertube=1"
--extractor-args "youtube:player-client=default,tv,mweb;formats=incomplete"
Use this settings in case the extractor fails to get the pot tokens from the bgutil provider server.
For more information please visit bgutil-ytdlp-pot-provider project.