208 lines
4.9 KiB
YAML
208 lines
4.9 KiB
YAML
services:
|
|
jellyfin:
|
|
image: jellyfin/jellyfin:latest
|
|
container_name: jellyfin
|
|
restart: unless-stopped
|
|
group_add:
|
|
- "993" # render group for VAAPI hardware acceleration
|
|
|
|
ports:
|
|
- "8096:8096" # HTTP web UI
|
|
- "8920:8920" # HTTPS
|
|
- "7359:7359/udp" # Network discovery
|
|
- "1900:1900/udp" # DLNA
|
|
|
|
expose:
|
|
- "8096"
|
|
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=Australia/Perth
|
|
|
|
volumes:
|
|
# Config on NVMe (fast)
|
|
- ./config:/config
|
|
- ./cache:/cache
|
|
|
|
# Media libraries (read-only for safety)
|
|
- "/mnt/media/Movies:/media/movies:ro"
|
|
- "/mnt/media/TV Shows:/media/tv-shows:ro"
|
|
- "/mnt/media/Anime:/media/anime:ro"
|
|
- "/mnt/media/Kids TV:/media/kids-tv:ro"
|
|
- "/mnt/media/Kids Movies:/media/kids-movies:ro"
|
|
- "/tank/home-videos:/media/home-videos:ro"
|
|
- "/tank/videos:/media/home-videos:ro"
|
|
- "/tank/photos:/media/home-photos:ro"
|
|
|
|
devices:
|
|
# Hardware transcoding (Vega graphics)
|
|
- /dev/dri:/dev/dri
|
|
|
|
networks:
|
|
- jellyfin-net
|
|
|
|
qbittorrent:
|
|
image: linuxserver/qbittorrent:latest
|
|
container_name: qbittorrent
|
|
environment:
|
|
PUID: 1000
|
|
PGID: 1000
|
|
TZ: "${TZ}"
|
|
WEBUI_PORT: 8090
|
|
volumes:
|
|
- ~/.docker_volumes/qbittorrent/config:/config
|
|
- /mnt/media/downloads:/downloads
|
|
- /mnt/media/anime:/animeq
|
|
ports:
|
|
- "8090:8090"
|
|
- "6881:6881"
|
|
- "6881:6881/udp"
|
|
expose:
|
|
- "8090"
|
|
restart: unless-stopped
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 1G
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
|
|
sonarr:
|
|
image: linuxserver/sonarr:latest
|
|
container_name: sonarr
|
|
environment:
|
|
PUID: 1000
|
|
PGID: 1000
|
|
TZ: "${TZ}"
|
|
DOCKER_MODS: "linuxserver/mods:universal-package-install"
|
|
INSTALL_PACKAGES: "ffmpeg"
|
|
volumes:
|
|
- ~/.docker_volumes/sonarr/config:/config
|
|
- /mnt/media/Anime:/tv
|
|
- ~/media/downloads:/downloads
|
|
ports:
|
|
- "8989:8989"
|
|
expose:
|
|
- "8989"
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- qbittorrent
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 512M
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
|
|
prowlarr:
|
|
image: linuxserver/prowlarr:latest
|
|
container_name: prowlarr
|
|
environment:
|
|
PUID: 1000
|
|
PGID: 1000
|
|
TZ: "${TZ}"
|
|
volumes:
|
|
- ~/.docker_volumes/prowlarr/config:/config
|
|
ports:
|
|
- "9696:9696"
|
|
expose:
|
|
- "9696"
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- qbittorrent
|
|
- sonarr
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:9696/ping"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 30s
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 512M
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
|
|
jellyseerr:
|
|
image: fallenbagel/jellyseerr:latest
|
|
container_name: jellyseerr
|
|
environment:
|
|
PUID: 1000
|
|
PGID: 1000
|
|
TZ: "${TZ}"
|
|
volumes:
|
|
- ~/.docker_volumes/jellyseerr/config:/app/config
|
|
ports:
|
|
- "5055:5055"
|
|
expose:
|
|
- "5055"
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- jellyfin
|
|
- sonarr
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:5055/api/v1/status"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 30s
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 512M
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
|
|
caddy:
|
|
build:
|
|
context: .
|
|
dockerfile_inline: |
|
|
FROM caddy:builder AS builder
|
|
RUN xcaddy build --with github.com/caddy-dns/namedotcom
|
|
FROM caddy:latest
|
|
COPY --from=builder /usr/bin/caddy /usr/bin/caddy
|
|
container_name: caddy
|
|
restart: unless-stopped
|
|
environment:
|
|
- NAMEDOTCOM_USERNAME=
|
|
- NAMEDOTCOM_TOKEN=your_api_token
|
|
ports:
|
|
- "443:443"
|
|
- "443:443/udp"
|
|
volumes:
|
|
- ./Caddyfile:/etc/caddy/Caddyfile
|
|
- ./caddy_data:/data
|
|
- ./caddy_config:/config
|
|
networks:
|
|
- jellyfin-net
|
|
|
|
crowdsec:
|
|
image: crowdsecurity/crowdsec:latest
|
|
container_name: crowdsec
|
|
restart: unless-stopped
|
|
environment:
|
|
- COLLECTIONS=crowdsecurity/linux crowdsecurity/caddy crowdsecurity/base-httping
|
|
volumes:
|
|
- /var/log:/var/log:ro
|
|
- ./crowdsec_data:/var/lib/crowdsec/data
|
|
- ./crowdsec_config:/etc/crowdsec
|
|
networks:
|
|
- jellyfin-net
|
|
|
|
networks:
|
|
jellyfin-net:
|
|
driver: bridge
|