diff --git a/docker-compose.yml b/docker-compose.yml index a117055..5f59e0c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,52 +1,62 @@ ---- +# Compose file for the *arr stack. Configuration files are stored in the +# directory you launch the compose file on. Change to bind mounts if needed. +# All containers are ran with user and group ids of the main user and +# group to aviod permissions issues of downloaded files, please refer +# the read me file for more information. + +############################################################################# +# NOTICE: We recently switched to using a .env file. PLEASE refer to the docs. +# https://github.com/TechHutTV/homelab/tree/main/media#docker-compose-and-env +############################################################################# + networks: servarrnetwork: name: servarrnetwork ipam: config: - subnet: 172.39.0.0/24 + services: + # airvpn recommended (referral url: https://airvpn.org/?referred_by=673908) gluetun: image: qmcgaw/gluetun container_name: gluetun cap_add: - NET_ADMIN devices: - - /dev/net/tun:/dev/net/tun + - /dev/net/tun:/dev/net/tun # If running on an LXC see readme for more info. networks: servarrnetwork: ipv4_address: 172.39.0.2 ports: - - 6881:6881 - - 6881:6881/udp - - 8085:8085 - - 6881:6881 - - 6789:6789 - - 9696:9696 + - 8080:8080 # qbittorrent web interface + - 6881:6881 # qbittorrent torrent port + - 6789:6789 # nzbget + - 9696:9696 # prowlarr volumes: - ./gluetun:/gluetun + # Make a '.env' file in the same directory. + env_file: + - .env healthcheck: test: ping -c 1 www.google.com || exit 1 interval: 20s timeout: 10s retries: 5 - environment: - - VPN_SERVICE_PROVIDER=private internet access - - OPENVPN_USER=p5492873 - - OPENVPN_PASSWORD=5goiaAsYEg - - SERVER_REGIONS=Lithuania - - TZ=America/Chicago - - UPDATER_PERIOD=24h - restart: always + restart: unless-stopped + qbittorrent: - image: lscr.io/linuxserver/qbittorrent + image: lscr.io/linuxserver/qbittorrent:latest container_name: qbittorrent - network_mode: service:gluetun + restart: unless-stopped + labels: + - deunhealth.restart.on.unhealthy=true environment: - - PUID=1000 - - PGID=1000 - - TZ=America/Chicago - - WEBUI_PORT=8085 + - PUID=${PUID} + - PGID=${PGID} + - TZ=${TZ} + - WEBUI_PORT=8080 # must match "qbittorrent web interface" port number in gluetun's service above + - TORRENTING_PORT=${FIREWALL_VPN_INPUT_PORTS} # airvpn forwarded port, pulled from .env volumes: - ./qbittorrent:/config - /data:/data @@ -54,31 +64,34 @@ services: gluetun: condition: service_healthy restart: true - restart: unless-stopped + network_mode: service:gluetun healthcheck: test: ping -c 1 www.google.com || exit 1 interval: 60s retries: 3 start_period: 20s timeout: 10s + + # See the 'qBittorrent Stalls with VPN Timeout' section for more information. deunhealth: image: qmcgaw/deunhealth container_name: deunhealth - network_mode: none + network_mode: "none" environment: - LOG_LEVEL=info - HEALTH_SERVER_ADDRESS=127.0.0.1:9999 - - TZ=America/Chicago + - TZ=${TZ} restart: always volumes: - /var/run/docker.sock:/var/run/docker.sock + nzbget: image: lscr.io/linuxserver/nzbget:latest container_name: nzbget environment: - - PUID=1000 - - PGID=1000 - - TZ=America/Chicago + - PUID=${PUID} + - PGID=${PGID} + - TZ=${TZ} volumes: - /etc/localtime:/etc/localtime:ro - ./nzbget:/config @@ -89,13 +102,14 @@ services: restart: true restart: unless-stopped network_mode: service:gluetun + prowlarr: image: lscr.io/linuxserver/prowlarr:latest container_name: prowlarr environment: - - PUID=1000 - - PGID=1000 - - TZ=America/Chicago + - PUID=${PUID} + - PGID=${PGID} + - TZ=${TZ} volumes: - /etc/localtime:/etc/localtime:ro - ./prowlarr:/config @@ -105,47 +119,33 @@ services: condition: service_healthy restart: true network_mode: service:gluetun + sonarr: image: lscr.io/linuxserver/sonarr:latest container_name: sonarr + restart: unless-stopped environment: - - PUID=1000 - - PGID=1000 - - TZ=America/Chicago + - PUID=${PUID} + - PGID=${PGID} + - TZ=${TZ} volumes: - /etc/localtime:/etc/localtime:ro - ./sonarr:/config - /data:/data - restart: unless-stopped ports: - 8989:8989 networks: servarrnetwork: ipv4_address: 172.39.0.3 - lidarr: - image: lscr.io/linuxserver/lidarr:latest - container_name: lidarr - environment: - - PUID=1000 - - PGID=1000 - - TZ=America/Chicago - volumes: - - /etc/localtime:/etc/localtime:ro - - ./lidarr:/config - - /data:/data - ports: - - 8686:8686 - networks: - servarrnetwork: - ipv4_address: 172.39.0.5 - restart: unless-stopped + radarr: image: lscr.io/linuxserver/radarr:latest container_name: radarr + restart: unless-stopped environment: - - PUID=1000 - - PGID=1000 - - TZ=America/Chicago + - PUID=${PUID} + - PGID=${PGID} + - TZ=${TZ} volumes: - /etc/localtime:/etc/localtime:ro - ./radarr:/config @@ -155,15 +155,33 @@ services: networks: servarrnetwork: ipv4_address: 172.39.0.4 + + lidarr: + container_name: lidarr + image: lscr.io/linuxserver/lidarr:latest restart: unless-stopped + volumes: + - /etc/localtime:/etc/localtime:ro + - ./lidarr:/config + - /data:/data + environment: + - PUID=${PUID} + - PGID=${PGID} + - TZ=${TZ} + ports: + - 8686:8686 + networks: + servarrnetwork: + ipv4_address: 172.39.0.5 + bazarr: image: lscr.io/linuxserver/bazarr:latest container_name: bazarr restart: unless-stopped environment: - - PUID=1000 - - PGID=1000 - - TZ=America/Chicago + - PUID=${PUID} + - PGID=${PGID} + - TZ=${TZ} volumes: - /etc/localtime:/etc/localtime:ro - ./bazarr:/config @@ -173,33 +191,27 @@ services: networks: servarrnetwork: ipv4_address: 172.39.0.6 - ytdl-sub: - image: ghcr.io/jmbannon/ytdl-sub:latest - container_name: ytdl-sub + + seerr: + container_name: seerr + image: ghcr.io/seerr-team/seerr:latest environment: - - PUID=1000 - - PGID=1000 - - TZ=America/Chicago - - DOCKER_MODS=linuxserver/mods:universal-cron - volumes: - - ./ytdl-sub:/config - - /data/youtube:/youtube - networks: - servarrnetwork: - ipv4_address: 172.39.0.8 + - LOG_LEVEL=debug + - PUID=${PUID} + - PGID=${PGID} + - TZ=${TZ} + 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 restart: unless-stopped - jellyseerr: - container_name: jellyseerr - image: fallenbagel/jellyseerr:latest - environment: - - PUID=1000 - - PGID=1000 - - TZ=America/Chicago volumes: - - ./jellyseerr:/app/config + - ./seerr:/app/config ports: - 5055:5055 + networks: servarrnetwork: - ipv4_address: 172.39.0.9 - restart: unless-stopped + ipv4_address: 172.39.0.7 \ No newline at end of file