YT Zero
Algorithm-free YouTube subscription inbox, self-hosted
Alternative to: youtube

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.