"Updates"

This commit is contained in:
2026-07-06 18:25:26 +02:00
parent 591063b43b
commit 01f6b2bdfc
78 changed files with 2766 additions and 0 deletions
+558
View File
@@ -0,0 +1,558 @@
name: jellystack
networks:
media_network:
name: media_network
driver: bridge
attachable: true
services:
# Gluetun - Manage VPN
gluetun:
image: qmcgaw/gluetun:latest
container_name: gluetun
hostname: gluetun
cap_add:
- NET_ADMIN
restart: always
secrets:
- wireguard_private_key
env_file: ./env/gluetun.env
volumes:
- wireguard:/gluetun
networks:
- media_network
ports:
- 8100:8000 # Remote Control VPN
- 2648:2648/tcp # cross-seed
- 8989:8989 # sonarr
- 8081:8081 # medusa
- 7878:7878 # radarr
- 9696:9696 # prowlarr
- 8686:8686 # lidarr
- 6767:6767 # bazarr
- 9080:9080/tcp # qBit
- 8694:8694/tcp # qBit
- 6881:6881/udp # qBit
- 8080:8080 # SABnzbd
- 5656:5656/tcp # kapowarr
# - 5004:5004/tcp # cabernet
# - 6077:6077/tcp # cabernet
- 7474:7474 # autobrr
- 8191:8191/tcp # flaresolverr
devices:
- /dev/net/tun:/dev/net/tun
# Qbittorent - torrenting software
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
network_mode: "service:gluetun"
restart: always
env_file: ./env/dnl.env
volumes:
- qbittorent:/config
- torrents:/data/torrents
healthcheck:
test: curl -f http://localhost:9080 || exit 1
interval: 10s
timeout: 3s
start_period: 60s
depends_on:
gluetun:
condition: service_healthy
restart: true
# SABnzbd
sabnzbd:
image: lscr.io/linuxserver/sabnzbd:latest
container_name: sabnzbd
restart: always
network_mode: "service:gluetun"
depends_on:
gluetun:
condition: service_healthy
restart: true
volumes:
- sabnzbd:/config
- usenet:/downloads
- media:/data
env_file: ./env/dnl.env
# Sonarr - Find shows automatically
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
network_mode: "service:gluetun"
restart: always
env_file: ./env/arr.env
volumes:
- sonarr:/config
- media:/data
- tv-shows:/data/tv-shows
- downloads:/downloads
healthcheck:
test: curl -f http://localhost:8989/ping || exit 1
interval: 10s
timeout: 3s
start_period: 60s
depends_on:
gluetun:
condition: service_healthy
restart: true
qbittorrent:
condition: service_healthy
restart: true
# Radarr - Find movies automatically
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
network_mode: "service:gluetun"
restart: always
env_file: ./env/arr.env
volumes:
- radarr:/config
- media:/data
- movies:/data/movies
- downloads:/downloads
healthcheck:
test: curl -f http://localhost:7878/ping || exit 1
interval: 10s
timeout: 3s
start_period: 60s
depends_on:
gluetun:
condition: service_healthy
restart: true
qbittorrent:
condition: service_healthy
restart: true
# Prowlarr - Manages Sonarr, Radarr and download client
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
network_mode: "service:gluetun"
restart: always
env_file: ./env/arr.env
volumes:
- prowlarr:/config
healthcheck:
test: curl -f http://localhost:9696/ping || exit 1
interval: 10s
timeout: 3s
start_period: 60s
depends_on:
gluetun:
condition: service_healthy
restart: true
qbittorrent:
condition: service_healthy
restart: true
sonarr:
condition: service_healthy
restart: true
radarr:
condition: service_healthy
restart: true
# Bazarr - Subtitles. Try to use SRT format if you can rather than PGS due to performance issues
bazarr:
container_name: bazarr
image: lscr.io/linuxserver/bazarr:latest
restart: always
network_mode: "service:gluetun"
env_file: ./env/arr.env
volumes:
- bazarr:/config
- media:/data/media
healthcheck:
test: curl -f http://localhost:6767 || exit 1
interval: 10s
timeout: 3s
start_period: 60s
depends_on:
gluetun:
condition: service_healthy
restart: true
# Unpacker - Used to unzip zipped files
unpackerr:
image: golift/unpackerr:latest
container_name: unpackerr
restart: always
env_file: ./env/arr.env
networks:
- media_network
volumes:
- unpackerr:/config
- media:/data
- downloads:/downloads
depends_on:
sonarr:
condition: service_healthy
restart: true
radarr:
condition: service_healthy
restart: true
# Jellyfin - Media server
jellyfin:
image: ghcr.io/linuxserver/jellyfin:latest
container_name: jellyfin
hostname: jellyfin
restart: always
privileged: true
env_file: ./env/jfn.env
volumes:
- jellyfin:/config
- cache:/cache
- media:/media
networks:
- media_network
ports:
- 8096:8096
- 8920:8920
devices:
- /dev/dri:/dev/dri # Required for jellyfin HW transcoding / QuickSynci
- /dev/dma_heap:/dev/dma_heap
- /dev/fb0:/dev/fb0
- /dev/mali0:/dev/mali0
- /dev/rga:/dev/rga
- /dev/mpp_service:/dev/mpp_service
healthcheck:
test: curl -i http://localhost:8096/health || exit 1
interval: 10s
timeout: 3s
start_period: 60s
# Seer - Allows users to request media on their own
seerr:
container_name: seerr
image: ghcr.io/seerr-team/seerr:latest
init: true
restart: always
environment:
- LOG_LEVEL=debug
- PORT=5055
networks:
- media_network
ports:
- 5055:5055
volumes:
- seerr:/app/config
# - media:/data/media
healthcheck:
test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1
start_period: 20s
timeout: 3s
interval: 15s
retries: 3
depends_on:
jellyfin:
condition: service_healthy
restart: true
# Wizarr - Create a share links that you can send to users to invite them to your media server
wizarr:
container_name: wizarr
image: ghcr.io/wizarrrr/wizarr:latest
restart: always
volumes:
- wizarr:/data/database
networks:
- media_network
ports:
- 5690:5690
# Tdarr - Transcode videos from one format to another like x265 or H.265
tdarr:
container_name: tdarr
image: ghcr.io/haveagitgat/tdarr:latest
privileged: true
restart: always
environment:
- PUID=1002
- PGID=1002
- TZ=Europe/Paris
- UMASK_SET=002
- nodeName=ServerNode
- serverIP=0.0.0.0
- serverPort=8266
- webUIPort=8265
- internalNode=true
- inContainer=true
- ffmpegVersion=6
volumes:
- tdarr:/app/configs
- tdarr_server:/app/server
- tdarr_logs:/app/logs
- media:/data/media
- transcode_cache:/temp
networks:
- media_network
ports:
- 8265:8265 # webUI port
- 8266:8266 # server port
devices:
- /dev/dri:/dev/dri # Required for HW transcoding /share QuickSyncinc
- /dev/dma_heap:/dev/dma_heap
- /dev/mali0:/dev/mali0
- /dev/rga:/dev/rga
- /dev/mpp_service:/dev/mpp_service
tdarr-node:
container_name: tdarr-node
image: ghcr.io/haveagitgat/tdarr_node:latest
restart: always
network_mode: service:tdarr
environment:
- TZ=Europe/Paris
- PUID=1002
- PGID=1002
- UMASK_SET=002
- nodeName=MainNode
- serverIP=0.0.0.0
- serverPort=8266
- inContainer=true
volumes:
- tdarr:/app/configs
- tdarr_logs:/app/logs
- media:/data/media
- transcode_cache:/temp
music-grabber:
image: g33kphr33k/musicgrabber:latest
container_name: music-grabber
restart: always
shm_size: '2gb'
ports:
- "38274:8080"
volumes:
- music:/music
- music-grabber:/data
environment:
- MUSIC_DIR=/music
- DB_PATH=/data/music_grabber.db
# Optional: serve behind a reverse-proxy subpath (proxy must strip the prefix)
# - ROOT_PATH=/musicgrabber
- ENABLE_MUSICBRAINZ=true
- DEFAULT_CONVERT_TO_FLAC=true
# Optional: Run as specific user (like *arr stack) for correct file permissions
- PUID=1000
- PGID=1000
# Optional: Custom bind address/port (useful for IPv6 or non-standard setups)
- LISTEN_ADDR=0.0.0.0
- LISTEN_PORT=8080
# Optional: Navidrome auto-rescan
- NAVIDROME_URL=http://navidrome:4533
- NAVIDROME_USER=admin
- NAVIDROME_PASS=sandstorm-outcast-treat
# Optional: Jellyfin auto-rescan
- JELLYFIN_URL=https://jellyfin.delmar.bzh
- JELLYFIN_API_KEY=65e51490397749d6945c4561a53e012a
# AcoustID API key for audio fingerprinting (https://acoustid.org/api-key)
- ACOUSTID_API_KEY=4b5DGYGrih
# Optional: Notifications
- NOTIFY_ON=playlists,bulk,errors
# - TELEGRAM_WEBHOOK_URL=https://api.telegram.org/bot{token}/sendMessage?chat_id={chat_id}
# - WEBHOOK_URL=https://your-webhook-endpoint.com/hook
- APPRISE_URL=gotify://gotify.delmar.bzh/A-4Fe2UBRbV5J_J
- SMTP_HOST=pro1.mail.ovh.net
- SMTP_PORT=587
- SMTP_USER=admin@delmar.bzh
- SMTP_PASS=sxS4GA8rBfmFkCFL
- SMTP_TO=jme69@delmar.bzh
# Optional: Use a Monochrome mirror instead of the default instance
# - MONOCHROME_API_URL=https://api.monochrome.tf
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
user: 1000:1000
ports:
- "4533:4533"
restart: always
environment:
# Optional: put your config options customization here. Examples:
- ND_LOGLEVEL=debug
volumes:
- navidrome:/data:rw
- music:/music:ro
volumes:
wireguard:
driver: local
driver_opts:
type: "none"
o: "bind"
device: "./config/wireguard"
qbittorent:
driver: local
driver_opts:
type: "none"
o: "bind"
device: "./config/qbittorent"
sabnzbd:
driver: local
driver_opts:
type: "none"
o: "bind"
device: "./config/sabnzbd"
sabnzbd_backups:
driver: local
driver_opts:
type: "none"
o: "bind"
device: "./config/sabnzbd/backups"
nzb_files:
driver: local
driver_opts:
type: "none"
o: "bind"
device: "./config/sabnzbd/Downloads/nzb_files"
sonarr:
driver: local
driver_opts:
type: "none"
o: "bind"
device: "./config/sonarr"
radarr:
driver: local
driver_opts:
type: "none"
o: "bind"
device: "./config/radarr"
prowlarr:
driver: local
driver_opts:
type: "none"
o: "bind"
device: "./config/prowlarr"
bazarr:
driver: local
driver_opts:
type: "none"
o: "bind"
device: "./config/bazarr"
unpackerr:
driver: local
driver_opts:
type: "none"
o: "bind"
device: "./config/unpackerr"
jellyfin:
driver: local
driver_opts:
type: "none"
o: "bind"
device: "./config/jellyfin"
navidrome:
driver: local
driver_opts:
type: "none"
o: "bind"
device: "./config/navidrome"
music-grabber:
driver: local
driver_opts:
type: "none"
o: "bind"
device: "./config/music-grabber"
tdarr:
driver: local
driver_opts:
type: "none"
o: "bind"
device: "./config/tdarr"
tdarr_server:
driver: local
driver_opts:
type: "none"
o: "bind"
device: "./config/tdarr_server"
tdarr_logs:
driver: local
driver_opts:
type: "none"
o: "bind"
device: "./config/tdarr_logs"
transcode_cache:
driver: local
driver_opts:
type: "none"
o: "bind"
device: "./config/tdarr_cache"
cache:
driver: local
driver_opts:
type: "none"
o: "bind"
device: "./config/cache"
seerr:
driver: local
driver_opts:
type: "none"
o: "bind"
device: "./config/seerr"
wizarr:
driver: local
driver_opts:
type: "none"
o: "bind"
device: "./config/wizarr/data/database"
media:
driver: local
driver_opts:
type: "nfs"
o: "addr=192.168.1.15,nolock,soft,rw"
device: "/srv/nfs4/media"
tv-shows:
driver: local
driver_opts:
type: "nfs"
o: "addr=192.168.1.15,nolock,soft,rw"
device: "/srv/nfs4/media/tv-shows"
movies:
driver: local
driver_opts:
type: "nfs"
o: "addr=192.168.1.15,nolock,soft,rw"
device: "/srv/nfs4/media/movies"
music:
driver: local
driver_opts:
type: "nfs"
o: "addr=192.168.1.15,nolock,soft,rw"
device: "/srv/nfs4/media/music"
downloads:
driver: local
driver_opts:
type: "nfs"
o: "addr=192.168.1.15,nolock,soft,rw"
device: "/srv/nfs4/media/downloads"
torrents:
driver: local
driver_opts:
type: "nfs"
o: "addr=192.168.1.15,nolock,soft,rw"
device: "/srv/nfs4/downloads/torrents"
usenet:
driver: local
driver_opts:
type: "nfs"
o: "addr=192.168.1.15,nolock,soft,rw"
device: "/srv/nfs4/downloads/usenet"
secrets:
wireguard_private_key:
file: ./secrets/wireguard_private_key.secret
bittorrent-user:
file: ./secrets/bittorrent-user.secret
bittorrent-password:
file: ./secrets/bittorrent-password.secret
radarr-api:
file: ./secrets/radarr-api.secret
sonarr-api:
file: ./secrets/sonarr-api.secret