CyberJack

docker-compose.yml for a *arr setup

May 17th, 2022 (edited)
1,806
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 7.34 KB | None | 1 0
  1. version: "3.7"
  2.  
  3. x-common-settings:
  4.   x-environment: &environment
  5.     PUID: ${PUID}
  6.     PGID: ${PGID}
  7.     TZ: ${TZ}
  8.  
  9.   x-healthcheck: &healthcheck
  10.     interval: 30s
  11.     timeout: 5s
  12.     retries: 1
  13.    
  14.   x-labels: &labels
  15.     traefik.enable: false
  16.     diun.enable: true
  17.    
  18.   x-volumes:
  19.     x-localtime: &localtime
  20.       type: bind
  21.       source: /etc/localtime
  22.       target: /etc/localtime
  23.       read_only: true
  24.  
  25. services:
  26.   gluetun:
  27.     image: qmcgaw/gluetun
  28.     container_name: gluetun
  29.     restart: unless-stopped
  30.     cap_add:
  31.      - NET_ADMIN
  32.     devices:
  33.      - /dev/net/tun:/dev/net/tun
  34.     networks:
  35.      - web      
  36.     #ports:
  37.     #  - 8888:8888/tcp # HTTP proxy
  38.     #  - 8388:8388/tcp # Shadowsocks
  39.     #  - 8388:8388/udp # Shadowsocks
  40.     volumes:
  41.      - *localtime
  42.       - type: bind
  43.         source: /path/to/project/gluetun
  44.         target: /gluetun
  45.     environment:
  46.       <<: *environment
  47.       # See https://github.com/qdm12/gluetun/wiki for all the options
  48.       VPNSP: ...
  49.     labels:
  50.      - diun.enable=true
  51.      
  52.       - traefik.enable=true
  53.       - traefik.docker.network=web
  54.      
  55.       - traefik.http.routers.prowlarr.rule=Host(`prowlarr.lan`)
  56.       - traefik.http.routers.prowlarr.service=prowlarr
  57.       - traefik.http.services.prowlarr.loadbalancer.server.port=9696
  58.  
  59.       - traefik.http.routers.sonarr.rule=Host(`sonarr.lan`)
  60.       - traefik.http.routers.sonarr.service=sonarr
  61.       - traefik.http.services.sonarr.loadbalancer.server.port=8989
  62.  
  63.       - traefik.http.routers.radarr.rule=Host(`radarr.lan`)
  64.       - traefik.http.routers.radarr.service=radarr
  65.       - traefik.http.services.radarr.loadbalancer.server.port=7878
  66.  
  67.       - traefik.http.routers.bazarr.rule=Host(`bazarr.lan`)
  68.       - traefik.http.routers.bazarr.service=bazarr
  69.       - traefik.http.services.bazarr.loadbalancer.server.port=6767
  70.  
  71.       - traefik.http.routers.transmission.rule=Host(`transmission.lan`)
  72.       - traefik.http.routers.transmission.service=transmission
  73.       - traefik.http.services.transmission.loadbalancer.server.port=9091
  74.  
  75.       - traefik.http.routers.nzbget.rule=Host(`nzbget.lan`)
  76.       - traefik.http.routers.nzbget.service=nzbget
  77.       - traefik.http.services.nzbget.loadbalancer.server.port=6789    
  78.  
  79.   prowlarr:
  80.     image: ghcr.io/linuxserver/prowlarr:develop
  81.     container_name: prowlarr
  82.     restart: unless-stopped
  83.     network_mode: "service:gluetun"
  84.     depends_on:
  85.       gluetun:
  86.         condition: service_healthy
  87.       transmission:
  88.         condition: service_healthy
  89.       nzbget:
  90.         condition: service_healthy
  91.       spotweb:
  92.         condition: service_healthy
  93.     volumes:
  94.      - *localtime
  95.       - type: bind
  96.         source: /path/to/project/prowlarr
  97.         target: /config
  98.     environment:
  99.       <<: *environment
  100.     healthcheck:
  101.       <<: *healthcheck
  102.       test: ["CMD", "curl", "-s", "-o", "/dev/null", "${HEALTHCHECK_PROWLARR}"]
  103.     labels:
  104.       <<: *labels
  105.  
  106.   sonarr:
  107.     image: lscr.io/linuxserver/sonarr
  108.     container_name: sonarr
  109.     restart: unless-stopped
  110.     network_mode: "service:gluetun"
  111.     depends_on:
  112.       gluetun:
  113.         condition: service_healthy
  114.       prowlarr:
  115.         condition: service_healthy
  116.     volumes:
  117.      - *localtime
  118.       - type: bind
  119.         source: /path/to/project/sonarr
  120.         target: /config
  121.       - type: bind
  122.         source: /path/to/storage/tv
  123.         target: /tv
  124.       - type: bind
  125.         source: /path/to/downloads/transmission/complete
  126.         target: /downloads/complete
  127.     environment:
  128.       <<: *environment
  129.     healthcheck:
  130.       <<: *healthcheck
  131.       test: ["CMD", "curl", "-s", "-o", "/dev/null", "${HEALTHCHECK_SONARR}"]
  132.     labels:
  133.       <<: *labels
  134.  
  135.   radarr:
  136.     image: lscr.io/linuxserver/radarr
  137.     container_name: radarr
  138.     restart: unless-stopped
  139.     network_mode: "service:gluetun"
  140.     mem_limit: 2048m
  141.     depends_on:
  142.       gluetun:
  143.         condition: service_healthy
  144.       prowlarr:
  145.         condition: service_healthy
  146.     volumes:
  147.      - *localtime
  148.       - type: bind
  149.         source: /path/to/project/radarr
  150.         target: /config
  151.       - type: bind
  152.         source: /path/to/storage/movies
  153.         target: /movies
  154.       - type: bind
  155.         source: /path/to/downloads/transmission/complete
  156.         target: /downloads
  157.     environment:
  158.       <<: *environment
  159.     healthcheck:
  160.       <<: *healthcheck
  161.       test: ["CMD", "curl", "-s", "-o", "/dev/null", "${HEALTHCHECK_RADARR}"]
  162.     labels:
  163.       <<: *labels
  164.  
  165.   bazarr:
  166.     image: lscr.io/linuxserver/bazarr
  167.     container_name: bazarr
  168.     restart: unless-stopped
  169.     network_mode: "service:gluetun"
  170.     depends_on:
  171.       gluetun:
  172.         condition: service_healthy
  173.       sonarr:
  174.         condition: service_healthy
  175.       radarr:
  176.         condition: service_healthy
  177.     volumes:
  178.      - *localtime
  179.       - type: bind
  180.         source: /path/to/project/bazarr
  181.         target: /config
  182.       - type: bind
  183.         source: /path/to/storage/tv
  184.         target: /tv
  185.       - type: bind
  186.         source: /path/to/storage/movies
  187.         target: /movies
  188.     environment:
  189.       <<: *environment
  190.     healthcheck:
  191.       <<: *healthcheck
  192.       test: ["CMD", "curl", "-s", "-o", "/dev/null", "${HEALTHCHECK_BAZARR}"]
  193.     labels:
  194.       <<: *labels
  195.  
  196.   transmission:
  197.     image: lscr.io/linuxserver/transmission
  198.     container_name: transmission
  199.     restart: unless-stopped
  200.     network_mode: "service:gluetun"
  201.     # ports:
  202.       # - 9091:9091
  203.       # - 51413:51413
  204.       # - 51413:51413/udp    
  205.     depends_on:
  206.       gluetun:
  207.         condition: service_healthy
  208.     volumes:
  209.      - *localtime
  210.       - type: bind
  211.         source: /path/to/project/transmission
  212.         target: /config
  213.       - type: bind
  214.         source: /path/to/downloads/transmission
  215.         target: /downloads
  216.       - type: bind
  217.         source: /path/to/downloads/transmission/watch
  218.         target: /watch
  219.     environment:
  220.       <<: *environment
  221.       DOCKER_MODS: linuxserver/mods:transmission-transmissionic
  222.     healthcheck:
  223.       <<: *healthcheck
  224.       test: ["CMD", "curl", "-s", "-o", "/dev/null", "${HEALTHCHECK_TRANSMISSION}"]
  225.     labels:
  226.       <<: *labels
  227.  
  228.   nzbget:
  229.     image: lscr.io/linuxserver/nzbget
  230.     container_name: nzbget
  231.     restart: unless-stopped
  232.     network_mode: "service:gluetun"
  233.     depends_on:
  234.       gluetun:
  235.         condition: service_healthy
  236.     volumes:
  237.      - *localtime
  238.       - type: bind
  239.         source: /path/to/project/nzbget
  240.         target: /config
  241.       - type: bind
  242.         source: /path/to/downloads
  243.         target: /downloads
  244.     environment:
  245.       <<: *environment
  246.     healthcheck:
  247.       <<: *healthcheck
  248.       test: ["CMD", "curl", "-s", "-o", "/dev/null", "${HEALTHCHECK_NZBGET}"]
  249.     labels:
  250.       <<: *labels
  251.  
  252. networks:
  253.   web:
  254.     external: true
  255.  
  256.  
  257. #
  258. # You need a .env file like this:
  259. #
  260. # PUID=1000
  261. # PGID=1000
  262. # TZ=Europe/London
  263. # HEALTHCHECK_PROWLARR=https://url.to.ping
  264. # HEALTHCHECK_SONARR=https://url.to.ping
  265. # HEALTHCHECK_RADARR=https://url.to.ping
  266. # HEALTHCHECK_BAZARR=https://url.to.ping
  267. # HEALTHCHECK_TRANSMISSION=https://url.to.ping
  268. # HEALTHCHECK_NZBGET=https://url.to.ping
  269. #
  270.  
  271. #
  272. # The "web" network is an external created network, used by Traefik
  273. #
  274. # The "diun" labels are for Diun (https://github.com/crazy-max/diun) to check for updates.
  275. #
  276. # healthchecks.io is used for healthchecks.
  277. #
Advertisement
Add Comment
Please, Sign In to add comment