A self-hosted, extensible interface with no frontend dependencies, built for automation and performance

System administrators and developers looking for a robust, controllable, and automatable solution to manage large-scale video downloads will find a powerful ally in YTPTube. This self-hosted Docker-based web frontend for yt-dlp is designed specifically for workflow automation, fine-grained control, and frontend efficiency, eliminating the need for client-side JavaScript and enabling full server-side rendering.

Built for production: performance and security first

Unlike other frontends such as meTube, YTPTube has been rewritten from scratch with a focus on back-end performance and continuous operation. Its key technical feature: all code parsing and syntax highlighting happens server-side, which allows:

  • Compatibility with AMP and JS-disabled browsers.
  • Faster page loads and better overall frontend performance.
  • Seamless operation behind reverse proxies and in hardened environments.

The interface supports multiple concurrent downloads, scheduling of periodic tasks (by channel, playlist, or individual links), and reusable presets, ideal for setting different download behaviors based on the source or context.

Integration, extensibility, and fine-grained CLI control

YTPTube is more than just a graphical layer — it’s a complete interface for embedding yt-dlp into CI/CD workflows, automation scripts, or internal services. Its advanced capabilities include:

  • Per-link CLI options and cookies: You can define custom download options for each video or playlist.
  • Integrated video player with external subtitle support.
  • Basic HTTP authentication with support for reverse proxy integration (Nginx, Caddy, etc.).
  • Built-in scheduler and auto-rescheduling for live streams.
  • Notification system based on selected download events.
  • Basic mode for simplified UIs, useful in internal tools or shared environments.
  • REST API for integration with scripts, iOS Shortcuts, or browser bookmarklets.

Plugin support is also available: you can place custom yt-dlp plugins under /config/yt-dlp, restart the container, and the plugins will be auto-loaded, making it ideal for advanced post-processing or custom logic.

Docker-first deployment and DevOps-friendly

Deployment is straightforward via Docker or Docker Compose. The container ships with bundled tools like ffmpeg, aria2, mkvmerge, mp4box, curl_cffi, and rtmpdump.

mkdir -p ./{config,downloads} && docker run -d --rm --user "$(id -u):$(id -g)" \
--name ytptube -p 8081:8081 -v ./config:/config -v ./downloads:/downloads \
ghcr.io/arabcoders/ytptube:latest
Code language: JavaScript (javascript)

Or with Compose:

services:
  ytptube:
    image: ghcr.io/arabcoders/ytptube:latest
    container_name: ytptube
    restart: unless-stopped
    ports:
      - "8081:8081"
    volumes:
      - ./config:/config
      - ./downloads:/downloads
Code language: PHP (php)

Data is stored in a lightweight SQLite database, sufficient for most use cases, and compatible with persistent volume strategies, backup systems, or container replication. The container also supports auto-updating yt-dlp on each restart, configurable via the YTP_YTDLP_AUTO_UPDATE environment variable.

Real-world use cases

  • Dev teams building educational or training video libraries.
  • Internal documentation systems archiving technical content from video platforms.
  • Media managers integrating video assets from multiple online sources in a controlled, repeatable workflow.

YTPTube provides a centralized way to manage yt-dlp, reduce manual error, and automate complex media workflows. Its modular design, command-line integration, and RESTful API make it a versatile, high-performance, infrastructure-as-code-friendly tool.

The project is open source and available at GitHub: https://github.com/arabcoders/ytptube, with full documentation, setup guides, and a growing Discord community. A must-have tool for sysadmins, DevOps engineers, and developers who want more than just a download button.

Scroll to Top