README.md

May 3, 2026 ยท View on GitHub

Build Status Docker Pulls

full_logo

ChannelTube is a tool for synchronizing and fetching content from YouTube channels using yt-dlp.

Run using docker-compose

services:
  channeltube:
    image: thewicklowwolf/channeltube:latest
    container_name: channeltube
    volumes:
      - /path/to/config:/channeltube/config
      - /data/media/video:/channeltube/downloads
      - /data/media/audio:/channeltube/audio_downloads
      - /etc/localtime:/etc/localtime:ro
    ports:
      - 5000:5000
    restart: unless-stopped

Configuration via environment variables

Certain values can be set via environment variables:

  • PUID: The user ID to run the app with. Defaults to 1000.
  • PGID: The group ID to run the app with. Defaults to 1000.
  • video_format_id: Specifies the ID for the video format. The default value is 137.
  • audio_format_id: Specifies the ID for the audio format. The default value is 140.
  • defer_hours: Defines the time to defer in hours. The default value is 0.
  • thread_limit: Sets the maximum number of threads to use. The default value is 1.
  • fallback_vcodec: Specifies the fallback video codec to use. Defaults to vp9.
  • fallback_acodec :Specifies the fallback audio codec to use. Defaults to mp4a.
  • subtitles: Controls subtitle handling. Options: none, embed, external. Defaults to none.
  • subtitle_languages: Comma-separated list of subtitle languages to include. Defaults to en.
  • include_id_in_filename: Include Video ID in filename. Set to true or false. Defaults to false.
  • verbose_logs: Enable verbose logging. Set to true or false. Defaults to false.
  • short_video_cutoff: Time-based cutoff (in seconds) used to filter short videos. Videos with runtime shorter than this value will be ignored. Defaults to 180.
  • auto_update_hour: Enables automatic nightly update of yt-dlp when set to a value between 0 and 23 (24-hour clock). The update will run once per day during the specified hour. If unset or set to any value outside 0โ€“23, automatic updates are disabled. Default is disabled
  • ytdlp_update_type: Update type for yt-dlp. Options: stable (default) or nightly (uses pre-release builds).

For information on format IDs, refer to https://github.com/yt-dlp/yt-dlp

yt-dlp-formats

Sync Schedule

Use a comma-separated list of hours to search for new items (e.g. 2, 20 will initiate a search at 2 AM and 8 PM).

Note: There is a deadband of up to 10 minutes from the scheduled start time.

Media Server Integration (optional)

A media server library scan can be triggered when new content is retrieved.

For Plex, use: Plex: http://192.168.1.2:32400
For Jellyfin, use: Jellyfin: http://192.168.1.2:8096
To use both, enter: Plex: http://192.168.1.2:32400, Jellyfin: http://192.168.1.2:8096
The same format applies for the tokens.

The Media Server Library Name refers to the name of the library where the videos are stored.

To disable this feature:

  • Leave Media Server Addresses, Media Server Tokens and Media Server Library Name blank.

Cookies (optional)

To utilize a cookies file with yt-dlp, follow these steps:

  • Generate Cookies File: Open your web browser and use a suitable extension (e.g. cookies.txt for Firefox) to extract cookies for a user on YT.

  • Save Cookies File: Save the obtained cookies into a file named cookies.txt and put it into the config folder.


light


dark


https://hub.docker.com/r/thewicklowwolf/channeltube