homelab-blueprint/docker-compose-files/youtarr/README.md
2026-06-28 13:40:08 +02:00

2.8 KiB

Youtarr

Docker deployment for Youtarr, a self-hosted YouTube downloader with metadata for media servers. Run all commands from the repository root.

Current Deployment

  • Proxmox LXC: 103 (ytd)
  • Static IP: 10.0.10.14
  • Web UI: http://10.0.10.14:3087
  • Caddy backend: 10.0.10.14:3087
  • Storage: /mnt/unas/youtube_downloads

Persistent Data

  • DOCKERCONFDIR/youtarr/config stores Youtarr configuration.
  • DOCKERCONFDIR/youtarr/jobs stores scheduled job state.
  • DOCKERCONFDIR/youtarr/server/images stores thumbnails and cached images.
  • youtarr_db_data stores the bundled MariaDB database.
  • YOUTUBE_OUTPUT_DIR points at the shared video library, which should be mounted to the UNAS youtube_downloads share.

Installation

  1. Create .env if it does not exist:

    cp -n .env.sample .env
    
  2. Set the required values in .env:

    TZ=Africa/Johannesburg
    PUID=0
    PGID=0
    DOCKERCONFDIR=/opt/appdata
    YOUTUBE_OUTPUT_DIR=/mnt/unas/youtube_downloads
    YOUTARR_HOST_PORT=3087
    YOUTARR_DB_ROOT_PASSWORD=<strong-password>
    DOCKERLOGGING_MAXFILE=3
    DOCKERLOGGING_MAXSIZE=10m
    
  3. Create the local directories:

    mkdir -p /opt/appdata/youtarr/{config,jobs,server/images}
    chown -R 0:0 /opt/appdata/youtarr
    

    If this stack runs inside a Proxmox LXC, bind-mount /mnt/unas/youtube_downloads into the container before starting Docker. The Proxmox host mounts this share over SMB with /etc/unas-smb-credentials and maps it to UID/GID 0. The dedicated privileged LXC therefore runs Youtarr with upstream's default root UID/GID.

  4. Render the template:

    ./substitute_env.sh docker-compose-files/youtarr/template.yaml docker-compose.youtarr.yml .env
    
  5. Validate and start the stack:

    docker compose -f docker-compose.youtarr.yml config --quiet
    docker compose -f docker-compose.youtarr.yml up -d
    
  6. Open Youtarr at http://<HOST_IP>:3087.

Apply Configuration Changes

./substitute_env.sh docker-compose-files/youtarr/template.yaml docker-compose.youtarr.yml .env
docker compose -f docker-compose.youtarr.yml up -d

Network Requirements

  • YOUTARR_HOST_PORT=3087 publishes the app on host port 3087. The container-side port remains 3011, as required by the upstream image, so the Compose mapping is 3087:3011 (HOST:CONTAINER).
  • The video output directory must be mounted and writable before the stack starts.

Troubleshooting

  • If MariaDB migration errors mention bind-mount corruption, keep the bundled youtarr_db_data named volume instead of switching the database to a host bind mount.
  • If downloads do not appear, confirm YOUTUBE_OUTPUT_DIR points at the host mount that backs the youtube_downloads share.