Youtarr
★ 1.7kA self-hosted alternative to Youtube
ISC LicenseOpen Source — No Paywall2 Containers — 2 containers — light hosting footprintDocker · Compose · SourceNeeds MariaDB9+ active committers (12mo)
About
Youtarr is a self-hosted application for automatically downloading and organizing YouTube content from channels and playlists. It is aimed at people who want to archive videos, watch them offline, or...
Community Ratings
No ratings yetNew this week
Read recap →Weekly Recap — Oct 2, 2026 – Oct 9, 2026Oct 9, 2026
Features
- automatic channel downloads
- playlist mirroring
- Plex/Jellyfin/Emby metadata
- watch status sync
- in-app playback
- SponsorBlock integration
- scheduled downloads
- auto-cleanup
- REST API
- web interface
Details
- Last Updated
- Oct 14, 2026
- Created
- May 13, 2023
- Install Methods
- dockerdocker-composesource
- Requirements
- DockerDocker ComposeGitBash shellMariaDB/MySQL
- Authentication
- local
- API
- REST
- Backup & Export
- database-dumpfile-backup
- Runtime / Stack
- Docker
- Privacy & Independence
- Cloud: OptionalOffline Capable
- User Model
- Multi-User
- Deployment
Deployment: Docker Compose ✓2 Containers — light hosting footprintRuns as 2 containers
Run Youtarr with Docker Compose
Compose file from the Youtarr project repository.
2 services · database: mariadb · infra: mariadb
no resource limits declared
needs persistent storage (5 volumes)
docker-compose.yml · @ 46c1701 · scanned Sep 27, 2026
# IMPORTANT NOTES:
# 1) UID/GID and folder setup:
# By default, the youtarr service runs as ROOT (UID 0, GID 0) for compatibility with existing setups.
# For improved security, you can set YOUTARR_UID and YOUTARR_GID environment variables to run the container as a non-root user.
# If you do so, ensure that the following directories exist on the host with the correct ownership/permissions before
# starting the container:
# - ./config
# - ./jobs
# - ./server/images
# - <YOUTUBE_OUTPUT_DIR> (as specified in environment variable)
# Docker will create these directories as ROOT if they do not exist!
#
# To create and set ownership/permissions, you can use the following commands:
# Example (using example YOUTUBE_OUTPUT_DIR of /path/to/youtube_videos and YOUTARR_UID/GID of 1000/1000):
# mkdir -p config jobs server/images /path/to/youtube_videos
# sudo chown -R 1000:1000 config jobs server/images /path/to/youtube_videos
#
# 2) Database setup notes:
# The default bundled MariaDB uses ./database as a bind mount for backwards compatibility.
# On Docker Desktop (Windows/macOS), ARM hosts, and some NAS/virtualized filesystems,
# bind-mounted MariaDB data can become corrupted during schema migrations. For a safer named
# volume, use docker-compose.arm.yml or run ./scripts/migrate-to-named-volume.sh
# for an existing bind-mounted install.
services:
youtarr-db:
image: mariadb:10.3
container_name: youtarr-db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-123qweasd}
MYSQL_DATABASE: ${DB_NAME:-youtarr}
MYSQL_TCP_PORT: ${DB_PORT:-3321}
# Set utf8mb4 as default for new installations
# Only set MYSQL_USER / MYSQL_PASSWORD if you configure a non-root DB_USER user in .env
# MYSQL_USER: ${DB_USER}
# MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_CHARSET: utf8mb4
MYSQL_COLLATION: utf8mb4_unicode_ci
volumes:
- ./database:/var/lib/mysql
command: --port=${DB_PORT:-3321} --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --innodb-file-per-table=1 --innodb-large-prefix=ON
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-P", "${DB_PORT:-3321}", "-u", "${DB_USER:-root}", "-p${DB_PASSWORD:-123qweasd}"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
youtarr:
image: ${YOUTARR_IMAGE:-dialmaster/youtarr:latest}
container_name: youtarr
restart: unless-stopped
# Optional: Run as specific UID:GID for security (defaults to root if not set for backwards compatibility with existing users)
user: "${YOUTARR_UID:-0}:${YOUTARR_GID:-0}"
depends_on:
youtarr-db:
condition: service_healthy
environment:
# DEPRECATED but retained for backwards compatibility with old images for now
IN_DOCKER_CONTAINER: 1
TZ: ${TZ:-UTC}
DB_HOST: ${DB_HOST:-youtarr-db}
DB_PORT: ${DB_PORT:-3321}
DB_USER: ${DB_USER:-root}
DB_PASSWORD: ${DB_PASSWORD:-123qweasd}
DB_NAME: ${DB_NAME:-youtarr}
# Optional: Disable authentication (for platforms with external auth like Elfhosted)
AUTH_ENABLED: ${AUTH_ENABLED:-}
# Optional: Seed initial admin credentials for headless deployments
AUTH_PRESET_USERNAME: ${AUTH_PRESET_USERNAME:-}
AUTH_PRESET_PASSWORD: ${AUTH_PRESET_PASSWORD:-}
# Optional: Configure Express proxy header trust
TRUST_PROXY: ${TRUST_PROXY:-}
# Optional external cookies; /app/config uses the existing mount (see docs/CONFIG.md).
YOUTARR_COOKIES_FILE: ${YOUTARR_COOKIES_FILE:-}
# Logging configuration
LOG_LEVEL: ${LOG_LEVEL:-info}
# This is just informational and lets the app know where the videos will be stored on the host
YOUTUBE_OUTPUT_DIR: ${YOUTUBE_OUTPUT_DIR}
# Optional: Custom data path for platforms like Elfhosted (defaults to /usr/src/app/data)
# This is the internal path where videos are downloaded inside the container and is not needed for most users
# DATA_PATH: /storage/rclone/storagebox/youtube
ports:
- "${YOUTARR_HOST_PORT:-3087}:3011"
volumes:
- ${YOUTUBE_OUTPUT_DIR}:/usr/src/app/data
- ./server/images:/app/server/images
- ./config:/app/config
- ./jobs:/app/jobs
healthcheck:
test: ["CMD", "curl", "--fail", "--silent", "--show-error", "--output", "/dev/null", "http://localhost:3011/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
default:
name: youtarr-network
# Named volume definition (used by docker-compose.arm.yml override)
volumes:
youtarr-db-data:
This file may be out of date. Check the Youtarr documentation for current setup steps.
Tags
Track your self-hosted stack
Bookmark software to try, rate tools you've used, and keep your collection in one place.
Metadata extracted from README on Aug 31, 2026
Related Software
TrackWatch
25
Self-hosted music release tracker for Spotify users that automatically follows artists and updates a playlist with new releases.
Media ManagementPermissive LicenseAudio Streaming+3
Cloud Required
Mixpost
133
Mixpost is a social media management platform for scheduling content, managing accounts, and collaborating with teams.
Analytics ToolsAutomation ToolsSocial Media+4
Open Core
Seerr
12.9k
Seerr is a free and open source application for managing media library requests and integrating with services like Jellyfin, Plex, Emby, Sonarr, and Radarr.
Media ManagementPermissive LicenseMedia Servers+2
Single Container
tubesync
2.8k
TubeSync is a web-based personal video recorder for YouTube that syncs channels and playlists to local storage and can update media servers like Plex or Jellyfin.
Media ManagementMedia ServersFile Synchronization+4
Cloud Required
Rapidbay
897
RapidBay is a self-hosted web app for searching torrents, selecting video files, and streaming or casting them after automatic conversion.
Media ServersPermissive LicenseMedia Management+3
Reaparr
700
Reaparr is a web project promoted on its website and DockerHub, but the provided README does not describe its function clearly.
Media ManagementCopyleft LicenseMedia Servers+2
Pinchflat
5.4k
Pinchflat is a self-hosted YouTube media manager for downloading content from channels and playlists with yt-dlp.
Media ManagementMedia ServersDigital Archiving+4
Single ContainerFully FOSS
YoutubeDL-Server
319
A simple web and REST interface for downloading YouTube videos onto a server.
Media ManagementMedia ServersAutomation Tools+2
2 Containers
ChannelTube
330
ChannelTube is a tool for synchronizing and fetching content from YouTube channels using yt-dlp.
Media ManagementDigital ArchivingAutomation Tools+4
yt-dlp Web UI
2.6k
A web UI and RPC server for yt-dlp that helps fetch videos and monitor upcoming livestreams.
Media ManagementCopyleft LicenseMedia Servers+2
Single Container
Tracearr
2.7k
A monitoring platform for Plex, Jellyfin, and Emby that provides a unified dashboard, playback analytics, account sharing detection, and automations.
Media ManagementMedia ServersAnalytics Tools+1
3 Containers
Jellyfin
58.1k
Jellyfin is a free software media server for managing and streaming personal media to client devices.
Multimedia StreamingCopyleft LicenseMedia Management+3
