ytptube/FAQ.md
2025-08-09 18:32:51 +03:00

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-dlp field, 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.