- 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
98 lines
2.8 KiB
YAML
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:
|