homelab-blueprint/docker-compose-files/youtarr/template.yaml
Brian Pooe 1815beadf4 refactor: restructure docs, sync stacks with Caddyfile, harden compose templates
- Add compose stacks for apps already proxied by Caddy: bento-pdf,
  it-tools, paperless-ngx, and beszel-hub (with Makefile targets)
- Remove the unused Vault stack and the drawio Caddyfile block
- Fix Caddyfile gramps upstream to port 80 to match the compose file
- Bring immich and gramps-web up to the shared template pattern
  (no-new-privileges, log rotation, memory limits, healthchecks)
- Single-quote vaultwarden SSO_AUDIENCE_TRUSTED so regex values like
  ^\d{18}$ render as valid YAML
- Move root docs into kebab-case topic folders, rebuild the docs index
  to cover every doc, and fix all broken links
2026-07-03 17:45:16 +02:00

98 lines
2.8 KiB
YAML

# Youtarr for Docker on a Proxmox LXC or host.
# The download directory is the shared youtube_downloads mount on the host.
services:
youtarr-db:
# Pinned to 10.3: upstream Youtarr relies on --innodb-large-prefix, which
# was removed in MariaDB 10.4.
image: mariadb:10.3
container_name: youtarr-db
restart: unless-stopped
environment:
TZ: {{TZ}}
MYSQL_ROOT_PASSWORD: {{YOUTARR_DB_ROOT_PASSWORD}}
MYSQL_DATABASE: youtarr
MYSQL_TCP_PORT: 3321
MYSQL_CHARSET: utf8mb4
MYSQL_COLLATION: utf8mb4_unicode_ci
volumes:
- /etc/localtime:/etc/localtime:ro
- youtarr_db_data:/var/lib/mysql
command:
- --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", "3321", "-uroot", "-p{{YOUTARR_DB_ROOT_PASSWORD}}"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
deploy:
resources:
limits:
memory: 1G
reservations:
memory: 256M
security_opt:
- no-new-privileges:true
logging:
driver: json-file
options:
max-file: "{{DOCKERLOGGING_MAXFILE}}"
max-size: "{{DOCKERLOGGING_MAXSIZE}}"
youtarr:
image: dialmaster/youtarr:latest
container_name: youtarr
restart: unless-stopped
user: "{{PUID}}:{{PGID}}"
depends_on:
youtarr-db:
condition: service_healthy
environment:
IN_DOCKER_CONTAINER: 1
TZ: {{TZ}}
DB_HOST: youtarr-db
DB_PORT: 3321
DB_USER: root
DB_PASSWORD: {{YOUTARR_DB_ROOT_PASSWORD}}
DB_NAME: youtarr
YOUTUBE_OUTPUT_DIR: {{YOUTUBE_OUTPUT_DIR}}
ports:
# Upstream Youtarr listens on 3011 inside the container and defaults to
# publishing it as 3087 on the Docker host.
- "{{YOUTARR_HOST_PORT}}:3011"
volumes:
- {{YOUTUBE_OUTPUT_DIR}}:/usr/src/app/data
- {{DOCKERCONFDIR}}/youtarr/server/images:/app/server/images
- {{DOCKERCONFDIR}}/youtarr/config:/app/config
- {{DOCKERCONFDIR}}/youtarr/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
deploy:
resources:
limits:
memory: 2G
reservations:
memory: 512M
security_opt:
- no-new-privileges:true
logging:
driver: json-file
options:
max-file: "{{DOCKERLOGGING_MAXFILE}}"
max-size: "{{DOCKERLOGGING_MAXSIZE}}"
networks:
default:
name: youtarr-network
volumes:
youtarr_db_data: