Before setting up Youtarr, ensure you have:
- Docker & Docker Compose installed on your system
- Bash Shell (Git Bash for Windows users)
- Git to clone the repository
Choose your preferred installation method
-
Clone the repository:
git clone https://github.com/DialmasterOrg/Youtarr.git cd Youtarr -
Start Youtarr:
./start.sh
If this is a first time run you will:
- Be prompted to setup your output directory for videos (defaults to
./downloads) - Choose your timezone (default
UTC), which drives scheduled downloads and nightly cleanup jobs.
--no-auth: Completely disable auth. Never expose Youtarr directly to the internet in this manner, only use if you have your own authentication layer (Cloudflare Tunnel, OAuth Proxy, etc)--headless-auth: Set auth credentials in.env, bypassing the need to setup credentials in the UI (as that may be difficult to do over localhost for headless setups)--pull-latest: Pull latest code from Github and latest image from DockerHub--debug: Set log level to debug
This automatically creates a
.envfile from the included.env.exampleand starts both the Youtarr application and MariaDB database containers. - Be prompted to setup your output directory for videos (defaults to
-
Access the web interface: Open your browser and navigate to
http://localhost:3087 -
Complete initial setup:
- On first access from localhost, you'll be prompted to create an admin account
- IMPORTANT: This requires access via
localhost
- IMPORTANT: This requires access via
- Choose a strong password (minimum 8 characters required)
- This account will be used for all future logins and can be changed in the web UI
- On first access from localhost, you'll be prompted to create an admin account
If you prefer to use standard docker compose up commands:
-
Clone the repository:
git clone https://github.com/DialmasterOrg/Youtarr.git cd Youtarr -
Create environment configuration:
cp .env.example .env
-
Edit the .env file:
vim .env # or use your preferred editorSet the required
YOUTUBE_OUTPUT_DIRvariable to your video storage location:YOUTUBE_OUTPUT_DIR=/path/to/your/videos
Optionally configure other settings:
AUTH_PRESET_USERNAMEandAUTH_PRESET_PASSWORD- For headless deployments (e.g., Unraid)AUTH_ENABLED=false- Only if behind external authentication (VPN, reverse proxy)LOG_LEVEL- Set todebugfor troubleshooting,infofor normal/production use (default),warnfor minimal logging
See: ENVIRONMENT VARIABLES for more details
-
Start with Docker Compose:
docker compose up -d
ARM Users (Apple Silicon, Raspberry Pi): Use the ARM override to avoid MariaDB volume issues:
docker compose -f docker-compose.yml -f docker-compose.arm.yml up -d
See Troubleshooting for details.
-
Access the web interface:
- Navigate to
http://localhost:3087 - If you set preset credentials in .env, use those to log in
- If not, you'll create your admin account on first access, which will require access via
localhost - Configure Plex and other settings from the Configuration page
- Navigate to
Important: Ensure the path you assign to
YOUTUBE_OUTPUT_DIRalready exists on the host and is writable before starting the stack. Otherwise Docker will create it as root-owned and the container may not be able to write downloads.
This method is functionally equivalent to using the start.sh script, but gives you direct control over environment variables. It's the preferred approach for any Docker-native workflow.
Not Recommended: This method requires manual directory creation, permission management, and lacks helper scripts. It is more error-prone and provides limited community support.
For advanced users only. If you cannot clone the repository (e.g., Portainer, TrueNAS, limited Git access), see Manual Docker Setup Without Git in the Docker documentation.
Most users should use Method 1 or 2 above for the best experience and easiest updates.
- Initial setup can only be performed from localhost for security reasons
- If you need to reset your admin password, see the Troubleshooting Guide
After logging in, configure Youtarr through the Configuration page.
Download Directory:
- This is set by the initial setup via
./start.shor manual configuration in.envvia theYOUTUBE_OUTPUT_DIRvariable - Videos will be organized in subdirectories by channel name
- After changing the download directory, you must restart Youtarr (
./stop.shthen./start.shordocker compose downanddocker compose up -d)
Editable via the web UI or direct edits to config/config.json.
See CONFIG.md for details.
NEVER DELETE config/complete.list
The config/complete.list file tracks all downloaded videos and prevents re-downloads during automatic channel updates. Deleting this file will cause Youtarr to re-download ALL videos from all subscribed channels on the next scheduled run. This file also stores videos you've marked to ignore for automatic downloads.
Storage Growth: Downloads can consume significant disk space over time. The UI includes a storage status chip that shows total and free space for your selected directory/drive, making it easy to monitor and adjust limits/schedule as needed.
Automatic Video Removal: Can purge old videos nightly at 2:00 AM once you configure age or free-space thresholds in the Configuration page. Space-based cleanup relies on the storage status chip reporting accurate disk usage.
Do Not Rename or Move Files
Videos must retain their [youtubeid].mp4 filename and remain in the Youtarr configured mount. Moving or renaming files will cause Youtarr to mark them as "missing" from disk.
If videos are moved WITHIN the mount, on restart, Youtarr will attempt to find them, but do so at your own risk.
Format: All videos download as MP4 with comprehensive embedded metadata (title, genre, studio, keywords) and NFO files for maximum media server compatibility.
Network Storage: Youtarr supports NAS, network shares, and mounted volumes. Ensure:
- Youtarr container can write to the media location (local or network storage)
- Your media server (Plex/Jellyfin/etc.) can read from the same media location
- Youtarr can reach your media server API over the network (if using Plex integration)
Docker Desktop (Windows/macOS): When configuring Plex, use host.docker.internal or your LAN IP (e.g. 192.168.x.x) as your Plex server address to allow the container to reach the host machine.
Docker on macOS without Docker Desktop (e.g., Colima): Use the Mac's LAN IP (e.g., 192.168.x.x) or host.lima.internal.
Docker on Linux: Use the host's LAN IP (e.g., 192.168.x.x). host.docker.internal normally resolves to the Docker bridge and Plex may not be listening there.
Automatic Filtering: Youtarr automatically skips subscriber-only content. You can configure auto-downloads separately for long-form videos, Shorts, and Streams in each channel's settings.
Manual Ignore: Mark individual videos to exclude them from automatic channel downloads while keeping auto-downloads enabled for the rest of the channel. Use the ignore button on videos that haven't been downloaded yet, or bulk-ignore multiple videos at once.
Youtarr fully supports platform-managed deployments with automatic configuration:
- Auto-Configuration: When
DATA_PATHis set, config.json is auto-created on first run - Platform Authentication: Set
AUTH_ENABLED=falseto bypass internal auth (only when platform handles it). Never expose a no-auth instance directly; protect it behind your platform's authentication layer. - Pre-configured Plex: Set
PLEX_URLfor automatic Plex server configuration - Consolidated Storage: All persistent data stored under single
/app/configmount - Example:
DATA_PATH=/storage/rclone/storagebox/youtube - Details: See Docker Guide for full configuration
To access Youtarr from other devices on your network:
- Configure your firewall to allow port 3087
- Access using your server's IP address:
http://[server-ip]:3087
For external access, you'll need to:
- Set up port forwarding on your router
- Consider using a reverse proxy for security
- Implement HTTPS for secure remote access
Youtarr does not automatically update itself. When you run ./start.sh or docker compose up -d, it uses your currently installed version. Simply restarting Youtarr without pulling updates will restart the same version you currently have installed.
If you're wondering why you don't see new features after a restart, you likely need to run the update commands below.
Before upgrading, you can check if updates are available:
- View release notes and changelog: GitHub Releases
- Check your current version: Look in the footer of the Youtarr web interface
- Compare versions: If your version number is older than the latest release, an update is available
Choose the method that matches how you installed Youtarr:
If you use the ./start.sh script:
./start.sh --pull-latestThe --pull-latest flag does two things:
- Pulls the latest code from the GitHub repository (
git pull) - Pulls the latest Docker image from DockerHub (
docker compose pull) - Restarts Youtarr with the new version
Note: You don't need to run ./stop.sh first - the start script handles stopping and restarting automatically.
If you use standard Docker Compose commands:
-
Stop Youtarr:
docker compose down
-
Pull the latest git changes on the
mainbranch:git pull
-
Pull the latest Docker image:
docker compose pull
-
Start Youtarr:
docker compose up -d
Preserved:
- Your database and all downloaded videos
- Configuration settings in
config/config.json - Download history in
config/complete.list - Channel subscriptions and settings
Updated:
- Application code and features
- Database schema (via automatic migrations)
- Docker container and dependencies
Important: Database migrations run automatically on startup. If a migration fails, check the logs with docker compose logs -f and see the Troubleshooting Guide for assistance.