YT Zero logo

YT Zero

Algorithm-free YouTube subscription inbox, self-hosted

Alternative to: youtube

YT Zero screenshotYT Zero screenshot

YT Zero turns your YouTube subscriptions into a calm, chronological inbox instead of an algorithmic feed. It reads public YouTube RSS feeds and needs no Google account or API key, storing subscriptions, watch history, playlists, and tags in your own SQLite or PostgreSQL database. An optional yt-dlp integration downloads videos for offline, ad-free local playback with SponsorBlock support.

YT Zero Docker Compose example

Self-host YT Zero on your own server, homelab, or VPS starting from this Docker Compose example. It runs YT Zero in Docker containers using the official ghcr.io/pelski/ytzero:latest image, with persistent volumes and automatic restarts preconfigured. Review the environment variables and adjust them to your setup, save the file as compose.yml (or docker-compose.yml), and start the stack with docker compose up -d.

services:
  ytzero:
    image: ghcr.io/pelski/ytzero:latest
    volumes:
      - data:/data
    restart: unless-stopped
    environment:
      # IANA timezone used for scheduling and displayed timestamps.
      TZ: "UTC"
      # HTTP idle-connection timeout, in seconds.
      IDLE_TIMEOUT_SECONDS: "120"
      # How often (minutes) subscribed channels are refreshed from their RSS feeds.
      REFRESH_INTERVAL_MINUTES: "5"
      # Interval (minutes) between full, rotating channel scans.
      FULL_SYNC_INTERVAL_MINUTES: "15"
      # Maximum age (days) of videos kept by automatic maintenance.
      VIDEO_MAINTENANCE_MAX_AGE_DAYS: "90"
      # SQLite database file location inside the data volume.
      DB_PATH: "/data/db/ytzero.db"
      # Thumbnail and image cache directory inside the data volume.
      IMG_CACHE_DIR: "/data/imgcache"

volumes:
  data:

Prefer a managed setup? WinterFlow installs, configures, and updates YT Zero for you using this same Docker Compose configuration.