1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# Copy this file to compose.yml and edit the media path / GPU section.
# Intended as a starting point for NAS users who'd rather not memorize
# the equivalent `docker run` flags.
#
# Quickstart:
# cp compose.example.yml compose.yml
# $EDITOR compose.yml # change /path/to/media → your library
# docker compose run --rm hvac --dry-run /media
# docker compose run --rm hvac /media # for the real pass
services:
hvac:
image: ghcr.io/jackdanger/hvac:latest
container_name: hvac
# The image defaults to UID 1026 / GID 100 (Synology / Unraid / OMV
# admin). On a regular Linux host that UID probably doesn't own your
# media — uncomment one of these lines to remap:
# user: "1000:1000" # typical single-user Linux box
# user: "${UID}:${GID}" # substitutes from env; export UID/GID first
# (Synology / Unraid users on the default admin account: leave the
# image default and skip this.)
# Bind-mount your media. The container side is /media; pass /media as
# the argument to hvac. Replace /path/to/media with /volume1/video on
# Synology, /share/Multimedia on QNAP, /mnt/user/media on Unraid, etc.
volumes:
- /path/to/media:/media
# GPU passthrough — pick exactly one of the two blocks below.
# ── Intel iGPU (Broadwell or newer) ──────────────────────────────
devices:
- /dev/dri:/dev/dri
# ── NVIDIA (uncomment, and comment out the Intel block above) ───
# deploy:
# resources:
# reservations:
# devices:
# - driver: nvidia
# count: all
# capabilities: [gpu]
# Override the default --help so `docker compose up` does something
# useful. Switch to ["/media"] (no --dry-run) when you're ready.
command: