95cd7d9ba8
- Apps/snacks/: docker-compose.yaml (2.3.1, host networking, privileged, /dev/dri) and README.md with full security exception documentation for: network_mode:host, privileged:true, device mount /dev/dri - apps.md: converted to agent-readable table backlog with instructions for future apps - Jellyfin-ffmpeg paths as defaults, 1G memory reservation, amd64 only (single-arch image) - Validation: ./scripts/validate-appstore.sh passes
103 lines
2.8 KiB
YAML
103 lines
2.8 KiB
YAML
name: snacks
|
|
|
|
services:
|
|
snacks:
|
|
image: derekshreds/snacks-docker:2.3.1
|
|
container_name: snacks
|
|
restart: unless-stopped
|
|
deploy:
|
|
resources:
|
|
reservations:
|
|
memory: 1G
|
|
|
|
environment:
|
|
- TZ=Europe/Stockholm
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- ASPNETCORE_ENVIRONMENT=Production
|
|
- SNACKS_WORK_DIR=/app/work
|
|
- FFMPEG_PATH=/usr/lib/jellyfin-ffmpeg/ffmpeg
|
|
- FFPROBE_PATH=/usr/lib/jellyfin-ffmpeg/ffprobe
|
|
|
|
network_mode: host
|
|
|
|
volumes:
|
|
- type: bind
|
|
source: /DATA/AppData/$AppID/media
|
|
target: /app/work/uploads
|
|
- type: bind
|
|
source: /DATA/AppData/$AppID/logs
|
|
target: /app/work/logs
|
|
- type: bind
|
|
source: /DATA/AppData/$AppID/config
|
|
target: /app/work/config
|
|
|
|
devices:
|
|
- /dev/dri:/dev/dri
|
|
|
|
privileged: true
|
|
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
|
|
cap_drop:
|
|
- ALL
|
|
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:6767/Home/Health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
|
|
x-casaos:
|
|
envs:
|
|
- container: TZ
|
|
description:
|
|
en_US: Timezone, for example Europe/Stockholm
|
|
- container: PUID
|
|
description:
|
|
en_US: User ID for filesystem permissions
|
|
- container: PGID
|
|
description:
|
|
en_US: Group ID for filesystem permissions
|
|
- container: FFMPEG_PATH
|
|
description:
|
|
en_US: "FFmpeg binary path (default: /usr/lib/jellyfin-ffmpeg/ffmpeg). Use /usr/bin/ffmpeg on systems without jellyfin-ffmpeg."
|
|
- container: FFPROBE_PATH
|
|
description:
|
|
en_US: "FFprobe binary path (default: /usr/lib/jellyfin-ffmpeg/ffprobe). Use /usr/bin/ffprobe on systems without jellyfin-ffmpeg."
|
|
ports:
|
|
- container: "6767"
|
|
description:
|
|
en_US: Web UI port
|
|
volumes:
|
|
- container: /app/work/uploads
|
|
description:
|
|
en_US: Media library — source files to be encoded
|
|
- container: /app/work/logs
|
|
description:
|
|
en_US: Transcoding logs directory
|
|
- container: /app/work/config
|
|
description:
|
|
en_US: Application configuration and SQLite database
|
|
|
|
x-casaos:
|
|
architectures:
|
|
- amd64
|
|
main: snacks
|
|
category: phirna
|
|
author: Joachim Friberg
|
|
developer: Joachim Friberg
|
|
icon: https://cdn.simpleicons.org/snacks
|
|
tagline:
|
|
en_US: Automated video library encoder with hardware acceleration
|
|
description:
|
|
en_US: >-
|
|
Batch transcode your video library with hardware acceleration (NVENC, QSV, VAAPI, AMF).
|
|
Monitors directories, skips already-encoded files, and supports distributed cluster encoding.
|
|
Web UI at http://localhost:6767
|
|
title:
|
|
en_US: Snacks
|
|
index: /
|
|
port_map: "6767" |