Last active
April 11, 2024 19:08
-
-
Save JSH32/8a5dc7c950ade9effcf3f85d38a24613 to your computer and use it in GitHub Desktop.
My media stack file for media server
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
version: "3.8" | |
services: | |
jellyfin: | |
image: jellyfin/jellyfin | |
volumes: | |
- jellyfin-config:/config | |
- jellyfin-cache:/cache | |
- ${MEDIA_LOCATION}:/media | |
# This is for menu links https://jellyfin.org/docs/general/clients/web-config/#custom-menu-links | |
# When doing initial setup this may need to be commented out | |
- /var/lib/docker/volumes/media_jellyfin-config/_data/config.json:/jellyfin/jellyfin-web/config.json | |
restart: unless-stopped | |
network_mode: "host" | |
environment: | |
TZ: ${TIMEZONE} | |
PUID: 1000 | |
PGID: 1000 | |
extra_hosts: | |
- "host.docker.internal:host-gateway" | |
labels: | |
- docker-volume-backup.stop-during-backup=true | |
qbittorrent: | |
image: dyonr/qbittorrentvpn | |
restart: unless-stopped | |
ports: | |
- 8089:8080 | |
cap_add: | |
- NET_ADMIN | |
environment: | |
TZ: ${TIMEZONE} | |
PUID: 1000 | |
PGID: 1000 | |
VPN_ENABLED: yes | |
VPN_TYPE: wireguard | |
LAN_NETWORK: 192.168.0.0/24 | |
sysctls: | |
- net.ipv6.conf.all.disable_ipv6=0 | |
volumes: | |
- qbittorrent-config:/config | |
- ${MEDIA_LOCATION}/downloads:/downloads | |
labels: | |
- docker-volume-backup.stop-during-backup=true | |
sonarr: | |
image: cr.hotio.dev/hotio/sonarr:latest | |
environment: | |
TZ: ${TIMEZONE} | |
PUID: 1000 | |
PGID: 1000 | |
volumes: | |
- sonarr-config:/config | |
- ${MEDIA_LOCATION}/downloads:/downloads | |
- ${MEDIA_LOCATION}:/media | |
ports: | |
- 8989:8989 | |
restart: unless-stopped | |
labels: | |
- docker-volume-backup.stop-during-backup=true | |
radarr: | |
image: cr.hotio.dev/hotio/radarr:latest | |
user: root:root | |
environment: | |
TZ: ${TIMEZONE} | |
PUID: 1000 | |
PGID: 1000 | |
volumes: | |
- radarr-config:/config | |
- ${MEDIA_LOCATION}/downloads:/downloads | |
- ${MEDIA_LOCATION}:/media | |
ports: | |
- 7878:7878 | |
restart: unless-stopped | |
labels: | |
- docker-volume-backup.stop-during-backup=true | |
prowlarr: | |
image: lscr.io/linuxserver/prowlarr:latest | |
environment: | |
TZ: ${TIMEZONE} | |
PUID: 1000 | |
PGID: 1000 | |
volumes: | |
- prowlarr-config:/config | |
ports: | |
- 9696:9696 | |
restart: unless-stopped | |
labels: | |
- docker-volume-backup.stop-during-backup=true | |
flaresolverr: | |
# DockerHub mirror flaresolverr/flaresolverr:latest | |
image: ghcr.io/flaresolverr/flaresolverr:latest | |
container_name: flaresolverr | |
environment: | |
LOG_LEVEL: info | |
LOG_HTML: false | |
CAPTCHA_SOLVER: ${CAPTCHA_SOLVER:-none} | |
TZ: ${TIMEZONE} | |
ports: | |
- 8191:8191 | |
restart: unless-stopped | |
jellyseerr: | |
image: fallenbagel/jellyseerr:latest | |
container_name: jellyseerr | |
environment: | |
LOG_LEVEL: debug | |
TZ: ${TIMEZONE} | |
ports: | |
- 5055:5055 | |
volumes: | |
- jellyseer-config:/app/config | |
restart: unless-stopped | |
labels: | |
- docker-volume-backup.stop-during-backup=true | |
jfa: | |
container_name: jfa | |
image: hrfee/jfa-go | |
restart: unless-stopped | |
ports: | |
- 8056:8056 | |
environment: | |
TZ: ${TZ} | |
volumes: | |
- jfa-db:/data | |
- jellyfin-config:/jf | |
labels: | |
- docker-volume-backup.stop-during-backup=true | |
decluttarr: | |
image: ghcr.io/manimatter/decluttarr:latest | |
container_name: decluttarr | |
restart: always | |
labels: | |
- docker-volume-backup.stop-during-backup=true | |
env_file: | |
- stack.env | |
environment: | |
TZ: ${TIMEZONE} | |
PUID: 1000 | |
PGID: 1000 | |
# General | |
LOG_LEVEL: INFO | |
# Features | |
REMOVE_TIMER: 10 | |
REMOVE_FAILED: True | |
REMOVE_STALLED: True | |
REMOVE_METADATA_MISSING: True | |
REMOVE_ORPHANS: True | |
REMOVE_UNMONITORED: True | |
PERMITTED_ATTEMPTS: 3 | |
NO_STALLED_REMOVAL_QBIT_TAG: "Don't Kill If Stalled" | |
# Radarr | |
RADARR_URL: http://radarr:7878 | |
# Sonarr | |
SONARR_URL: http://sonarr:8989 | |
# Qbittorrent | |
QBITTORRENT_URL: http://qbittorrent:8080 | |
miniserve: | |
image: svenstaro/miniserve | |
restart: always | |
volumes: | |
- ${MEDIA_LOCATION}/downloads:/files/downloads | |
- ${MEDIA_LOCATION}/movies:/files/movies | |
- ${MEDIA_LOCATION}/shows:/files/shows | |
- ${MEDIA_LOCATION}/books:/files/books | |
ports: | |
- 4567:8080 | |
command: "--dirs-first --enable-zip --auth ${FILES_USERNAME}:${FILES_PASSWORD} --title Files /files" | |
# Volume backup | |
backup: | |
image: offen/docker-volume-backup:v2.39.0 | |
environment: | |
# Run on Mondays and Thursdays at 5am | |
BACKUP_CRON_EXPRESSION: "0 5 * * MON,THU" | |
BACKUP_FILENAME: backup-%Y-%m-%dT%H-%M-%S.tar.gz | |
BACKUP_LATEST_SYMLINK: backup-latest.tar.gz | |
volumes: | |
# All the volumes to backup | |
- jfa-db:/backup/jfa-db-backup:ro | |
- prowlarr-config:/backup/prowlarr-config-backup:ro | |
- sonarr-config:/backup/sonarr-config-backup:ro | |
- radarr-config:/backup/radarr-config-backup:ro | |
- qbittorrent-config:/backup/qbittorrent-config-backup:ro | |
- jellyfin-config:/backup/jellyfin-config-backup:ro | |
- jellyfin-cache:/backup/jellyfin-cache-backup:ro | |
- jellyseer-config:/backup/jellyseer-config-backup:ro | |
# Docker socket | |
- /var/run/docker.sock:/var/run/docker.sock:ro | |
# Location to backup to | |
- ${MEDIA_LOCATION}/media-vol-backups:/archive | |
volumes: | |
jfa-db: | |
reiverr-config: | |
prowlarr-config: | |
sonarr-config: | |
radarr-config: | |
qbittorrent-config: | |
jellyfin-config: | |
jellyfin-cache: | |
jellyseer-config: |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This will need to be configured further. You'll have to go into
qbittorrent-config/_data/wireguard
and drop a config file in here for it to function (orVPN_ENABLED=no
). You will also most likely have to change yourLAN_NETWORK
.This is not designed to be a setup guide but just simply a starting point for getting your media server rolling. You should probably have prior experience with docker and linux.