From 74affa6dae97b133a0634e5fc14cf16ceb9873a4 Mon Sep 17 00:00:00 2001 From: Jean Froment Date: Sun, 31 Jan 2021 18:09:33 +0100 Subject: [PATCH] Split docker-compose.yml into multiple files in dedicated dir --- .gitignore | 6 +- docker-compose.yaml | 26 +++ docker-compose.yml | 385 ------------------------------------- services/bazarr.yaml | 22 +++ services/deluge.yaml | 23 +++ services/duplicati.yaml | 31 +++ services/flaresolverr.yaml | 7 + services/jackett.yaml | 18 ++ services/jdownloader.yaml | 23 +++ services/lidarr.yaml | 22 +++ services/netdata.yaml | 23 +++ services/nextcloud.yaml | 52 +++++ services/plex.yaml | 30 +++ services/portainer.yaml | 12 ++ services/radarr.yaml | 23 +++ services/sonarr.yaml | 23 +++ services/tautulli.yaml | 21 ++ services/tdarr.yaml | 28 +++ services/traefik.yaml | 30 +++ update-all.sh | 8 +- 20 files changed, 423 insertions(+), 390 deletions(-) create mode 100644 docker-compose.yaml delete mode 100644 docker-compose.yml create mode 100644 services/bazarr.yaml create mode 100644 services/deluge.yaml create mode 100644 services/duplicati.yaml create mode 100644 services/flaresolverr.yaml create mode 100644 services/jackett.yaml create mode 100644 services/jdownloader.yaml create mode 100644 services/lidarr.yaml create mode 100644 services/netdata.yaml create mode 100644 services/nextcloud.yaml create mode 100644 services/plex.yaml create mode 100644 services/portainer.yaml create mode 100644 services/radarr.yaml create mode 100644 services/sonarr.yaml create mode 100644 services/tautulli.yaml create mode 100644 services/tdarr.yaml create mode 100644 services/traefik.yaml diff --git a/.gitignore b/.gitignore index 72bae19..f9f10bb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ .DS_Store /config -tunnel-options.sh -.env -traefik/http_auth +**/tunnel-options.sh +**/.env +**/traefik/http_auth backup/ diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..9d62242 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,26 @@ +version: "3.8" + +############################################################################# +## Services are now located in separate files, in the services directory. ## +############################################################################# + +# Common network used by all services +networks: + default: + external: + name: "traefik-network" + +# Common volumes used by at least 2 services +volumes: + config: + driver: local-persist + driver_opts: + mountpoint: /data/config + torrents: + driver: local-persist + driver_opts: + mountpoint: /data/torrents + downloads: + driver: local-persist + driver_opts: + mountpoint: /data/torrents/deluge diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index ad5c6dc..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,385 +0,0 @@ -version: "3.7" - -services: - traefik: - image: traefik - container_name: traefik - restart: always - command: - - --certificatesresolvers.le.acme.email=${ACME_MAIL} - - --pilot.token=${PILOT_TOKEN} - ports: - - "80:80" - - "443:443" - volumes: - - /var/run/docker.sock:/var/run/docker.sock - - ./traefik:/etc/traefik:ro - - configtraefik:/config - environment: - - TRAEFIK_DOMAIN=${TRAEFIK_DOMAIN} - - TZ=${TZ} - labels: - - "traefik.enable=true" - # Docker labels for enabling Traefik dashboard - - "traefik.http.routers.traefik.rule=Host(`traefik.${TRAEFIK_DOMAIN}`)" - - "traefik.http.routers.traefik.service=api@internal" - - "traefik.http.routers.traefik.middlewares=common-auth@file" - - deluge: - image: ghcr.io/linuxserver/deluge - container_name: deluge - restart: always - volumes: - - torrents:/torrents - - configdeluge:/config - - downloads:/downloads - environment: - - PGID=${PGID} - - PUID=${PUID} - - TZ=${TZ} - labels: - - "traefik.enable=true" - - "traefik.http.routers.deluge.rule=Host(`deluge.${TRAEFIK_DOMAIN}`)" - - "traefik.http.routers.deluge.middlewares=common-auth@file" - - plex: - image: ghcr.io/linuxserver/plex - container_name: plex - restart: always - ports: - - "32400:32400" - - "32400:32400/udp" - - "32469:32469" - - "32469:32469/udp" - - "5353:5353/udp" - - "1900:1900/udp" - volumes: - - configplex:/config - - torrents:/torrents - environment: - - PGID=${PGID} - - PUID=${PUID} - - TZ=${TZ} - - VERSION=latest - labels: - - "traefik.enable=true" - - "traefik.http.services.plex-seedbox.loadbalancer.server.port=32400" - - "traefik.http.routers.plex.rule=Host(`plex.${TRAEFIK_DOMAIN}`)" - - flaresolverr: - image: ghcr.io/flaresolverr/flaresolverr - container_name: flaresolverr - restart: always - environment: - - CAPTCHA_SOLVER=hcaptcha-solver - - jackett: - image: ghcr.io/linuxserver/jackett - container_name: jackett - restart: always - volumes: - - config:/config - - torrents:/downloads - - /etc/localtime:/etc/localtime:ro - environment: - - PGID=${PGID} - - PUID=${PUID} - - TZ=${TZ} - - RUN_OPTS='-FlareSolverrURL="http://flaresolverr:8191"' - labels: - - "traefik.enable=true" - - "traefik.http.routers.jackett.rule=Host(`jackett.${TRAEFIK_DOMAIN}`)" - - "traefik.http.routers.jackett.middlewares=common-auth@file" - - sonarr: - image: ghcr.io/linuxserver/sonarr:preview - container_name: sonarr - restart: always - volumes: - - configsonarr:/config - - torrents:/torrents - - /etc/localtime:/etc/localtime:ro - environment: - - PGID=${PGID} - - PUID=${PUID} - - TZ=${TZ} - labels: - - "traefik.enable=true" - - "traefik.http.routers.sonarr.rule=Host(`sonarr.${TRAEFIK_DOMAIN}`)" - - "traefik.http.routers.sonarr.middlewares=common-auth@file" - - radarr: - image: ghcr.io/linuxserver/radarr:develop - container_name: radarr - restart: always - volumes: - - configradarr:/config - - torrents:/torrents - - /etc/localtime:/etc/localtime:ro - environment: - - PGID=${PGID} - - PUID=${PUID} - - TZ=${TZ} - labels: - - "traefik.enable=true" - - "traefik.http.routers.radarr.rule=Host(`radarr.${TRAEFIK_DOMAIN}`)" - - "traefik.http.routers.radarr.middlewares=common-auth@file" - - bazarr: - image: ghcr.io/linuxserver/bazarr - container_name: bazarr - restart: always - volumes: - - torrents:/torrents - - configbazarr:/config - environment: - - PGID=${PGID} - - PUID=${PUID} - - TZ=${TZ} - labels: - - "traefik.enable=true" - - "traefik.http.routers.bazarr.rule=Host(`bazarr.${TRAEFIK_DOMAIN}`)" - - "traefik.http.routers.bazarr.middlewares=common-auth@file" - - lidarr: - image: ghcr.io/linuxserver/lidarr:preview - container_name: lidarr - restart: always - volumes: - - configlidarr:/config - - torrents:/torrents - environment: - - PGID=${PGID} - - PUID=${PUID} - - TZ=${TZ} - labels: - - "traefik.enable=true" - - "traefik.http.routers.lidarr.rule=Host(`lidarr.${TRAEFIK_DOMAIN}`)" - - "traefik.http.routers.lidarr.middlewares=common-auth@file" - - tautulli: - image: ghcr.io/linuxserver/tautulli - container_name: tautulli - restart: always - volumes: - - configtautulli:/config - - config:/logs:ro # Inside of tautulli, bind to logs via "/logs/Plex Media Server/Logs" - environment: - - PGID=${PGID} - - PUID=${PUID} - - TZ=${TZ} - labels: - - "traefik.enable=true" - - "traefik.http.routers.tautulli.rule=Host(`tautulli.${TRAEFIK_DOMAIN}`)" - - jdownloader: - image: jlesage/jdownloader-2 - container_name: jdownloader - restart: unless-stopped - volumes: - - configjdownloader:/config - - downloads:/output - environment: - - USER_ID=${PUID} - - GROUP_ID=${PGID} - - TZ=${TZ} - labels: - - "traefik.enable=true" - - "traefik.http.services.jdownloader-seedbox.loadbalancer.server.port=5800" - - "traefik.http.routers.jdownloader.rule=Host(`jdownloader.${TRAEFIK_DOMAIN}`)" - - "traefik.http.routers.jdownloader.middlewares=common-auth@file" - - tdarr: - image: haveagitgat/tdarr - container_name: tdarr - restart: always - environment: - - PUID=${PUID} - - PGID=${PGID} - - TZ=${TZ} - volumes: - - torrents:/home/Tdarr/Media - - configtdarr:/home/Tdarr/Documents/Tdarr - - tdarrdb:/var/lib/mongodb - labels: - - "traefik.enable=true" - - "traefik.http.services.tdarr-seedbox.loadbalancer.server.port=8265" - - "traefik.http.routers.tdarr.rule=Host(`tdarr.${TRAEFIK_DOMAIN}`)" - - "traefik.http.routers.tdarr.middlewares=common-auth@file" - - nextcloud-db: - image: mariadb:10 - container_name: nextcloud-db - command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW - restart: always - environment: - - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - - MYSQL_DATABASE=${MYSQL_DATABASE} - - MYSQL_USER=${MYSQL_USER} - - MYSQL_PASSWORD=${MYSQL_PASSWORD} - - TZ=${TZ} - volumes: - - nextclouddb:/var/lib/mysql - labels: - - "traefik.enable=false" - - # See tools/init-setup-nextcloud.sh for first install - nextcloud: - depends_on: - - nextcloud-db - image: linuxserver/nextcloud - container_name: nextcloud - restart: always - environment: - - PGID=${PGID} - - PUID=${PUID} - - TZ=${TZ} - volumes: - - confignextcloud:/config - - nextclouddata:/data - - torrents:/torrents - - config:/seedbox-config - labels: - - "traefik.enable=true" - - "traefik.http.routers.nextcloud.rule=Host(`nextcloud.${TRAEFIK_DOMAIN}`)" - - "traefik.http.services.nextcloud-seedbox.loadbalancer.server.scheme=https" - - "traefik.http.services.nextcloud-seedbox.loadbalancer.server.port=443" - - portainer: - image: portainer/portainer-ce - container_name: portainer - restart: always - volumes: - - /var/run/docker.sock:/var/run/docker.sock - command: --admin-password ${PORTAINER_ADMIN_PASSWORD} --host=unix:///var/run/docker.sock - labels: - - "traefik.enable=true" - - "traefik.http.routers.portainer.rule=Host(`portainer.${TRAEFIK_DOMAIN}`)" - - "traefik.http.services.portainer-seedbox.loadbalancer.server.port=9000" - - netdata: - image: netdata/netdata - restart: always - container_name: netdata - hostname: netdata.${TRAEFIK_DOMAIN} - environment: - PGID: 999 - cap_add: - - SYS_PTRACE - security_opt: - - apparmor:unconfined - volumes: - - /proc:/host/proc:ro - - /sys:/host/sys:ro - - /etc/passwd:/host/etc/passwd:ro - - /etc/group:/host/etc/group:ro - - /etc/os-release:/host/etc/os-release:ro - - /var/run/docker.sock:/var/run/docker.sock:rw - labels: - - "traefik.enable=true" - - "traefik.http.routers.netdata.rule=Host(`netdata.${TRAEFIK_DOMAIN}`)" - - "traefik.http.routers.netdata.middlewares=common-auth@file" - - duplicati: - image: ghcr.io/linuxserver/duplicati - container_name: duplicati - restart: unless-stopped - environment: - - PUID=${PUID} - - PGID=${PGID} - - TZ=${TZ} - volumes: - - configduplicati:/config - - backups:/backups - - alldata:/source - labels: - - "traefik.enable=true" - - "traefik.http.routers.duplicati.rule=Host(`duplicati.${TRAEFIK_DOMAIN}`)" - - "traefik.http.routers.duplicati.middlewares=common-auth@file" - -networks: - default: - external: - name: "traefik-network" - -volumes: - alldata: - driver: local-persist - driver_opts: - mountpoint: /data - config: - driver: local-persist - driver_opts: - mountpoint: /data/config - configtraefik: - driver: local-persist - driver_opts: - mountpoint: /data/config/traefik - configplex: - driver: local-persist - driver_opts: - mountpoint: /data/config/Plex - configsonarr: - driver: local-persist - driver_opts: - mountpoint: /data/config/sonarr - configradarr: - driver: local-persist - driver_opts: - mountpoint: /data/config/radarr - configbazarr: - driver: local-persist - driver_opts: - mountpoint: /data/config/bazarr - configlidarr: - driver: local-persist - driver_opts: - mountpoint: /data/config/lidarr - configdeluge: - driver: local-persist - driver_opts: - mountpoint: /data/config/deluge - configtautulli: - driver: local-persist - driver_opts: - mountpoint: /data/config/tautulli - configjdownloader: - driver: local-persist - driver_opts: - mountpoint: /data/config/jdownloader - configtdarr: - driver: local-persist - driver_opts: - mountpoint: /data/config/tdarr - tdarrdb: - driver: local-persist - driver_opts: - mountpoint: /data/config/tdarr-db - nextclouddb: - driver: local-persist - driver_opts: - mountpoint: /data/nextcloud-db - confignextcloud: - driver: local-persist - driver_opts: - mountpoint: /data/config/nextcloud - nextclouddata: - driver: local-persist - driver_opts: - mountpoint: /data/config/nextcloud-data - torrents: - driver: local-persist - driver_opts: - mountpoint: /data/torrents - downloads: - driver: local-persist - driver_opts: - mountpoint: /data/torrents/deluge - configduplicati: - driver: local-persist - driver_opts: - mountpoint: /data/config/duplicati - backups: - driver: local-persist - driver_opts: - mountpoint: /data/backups diff --git a/services/bazarr.yaml b/services/bazarr.yaml new file mode 100644 index 0000000..568ad3d --- /dev/null +++ b/services/bazarr.yaml @@ -0,0 +1,22 @@ +services: + bazarr: + image: ghcr.io/linuxserver/bazarr + container_name: bazarr + restart: always + volumes: + - torrents:/torrents + - configbazarr:/config + environment: + - PGID=${PGID} + - PUID=${PUID} + - TZ=${TZ} + labels: + - "traefik.enable=true" + - "traefik.http.routers.bazarr.rule=Host(`bazarr.${TRAEFIK_DOMAIN}`)" + - "traefik.http.routers.bazarr.middlewares=common-auth@file" + +volumes: + configbazarr: + driver: local-persist + driver_opts: + mountpoint: /data/config/bazarr \ No newline at end of file diff --git a/services/deluge.yaml b/services/deluge.yaml new file mode 100644 index 0000000..d304ae3 --- /dev/null +++ b/services/deluge.yaml @@ -0,0 +1,23 @@ +services: + deluge: + image: ghcr.io/linuxserver/deluge + container_name: deluge + restart: always + volumes: + - torrents:/torrents + - configdeluge:/config + - downloads:/downloads + environment: + - PGID=${PGID} + - PUID=${PUID} + - TZ=${TZ} + labels: + - "traefik.enable=true" + - "traefik.http.routers.deluge.rule=Host(`deluge.${TRAEFIK_DOMAIN}`)" + - "traefik.http.routers.deluge.middlewares=common-auth@file" + +volumes: + configdeluge: + driver: local-persist + driver_opts: + mountpoint: /data/config/deluge \ No newline at end of file diff --git a/services/duplicati.yaml b/services/duplicati.yaml new file mode 100644 index 0000000..ce6aef0 --- /dev/null +++ b/services/duplicati.yaml @@ -0,0 +1,31 @@ +services: + duplicati: + image: ghcr.io/linuxserver/duplicati + container_name: duplicati + restart: unless-stopped + environment: + - PUID=${PUID} + - PGID=${PGID} + - TZ=${TZ} + volumes: + - configduplicati:/config + - backups:/backups + - alldata:/source + labels: + - "traefik.enable=true" + - "traefik.http.routers.duplicati.rule=Host(`duplicati.${TRAEFIK_DOMAIN}`)" + - "traefik.http.routers.duplicati.middlewares=common-auth@file" + +volumes: + alldata: + driver: local-persist + driver_opts: + mountpoint: /data + configduplicati: + driver: local-persist + driver_opts: + mountpoint: /data/config/duplicati + backups: + driver: local-persist + driver_opts: + mountpoint: /data/backups \ No newline at end of file diff --git a/services/flaresolverr.yaml b/services/flaresolverr.yaml new file mode 100644 index 0000000..b47ddd6 --- /dev/null +++ b/services/flaresolverr.yaml @@ -0,0 +1,7 @@ +services: + flaresolverr: + image: ghcr.io/flaresolverr/flaresolverr + container_name: flaresolverr + restart: always + environment: + - CAPTCHA_SOLVER=hcaptcha-solver \ No newline at end of file diff --git a/services/jackett.yaml b/services/jackett.yaml new file mode 100644 index 0000000..ca3b1f8 --- /dev/null +++ b/services/jackett.yaml @@ -0,0 +1,18 @@ +services: + jackett: + image: ghcr.io/linuxserver/jackett + container_name: jackett + restart: always + volumes: + - config:/config + - torrents:/downloads + - /etc/localtime:/etc/localtime:ro + environment: + - PGID=${PGID} + - PUID=${PUID} + - TZ=${TZ} + - RUN_OPTS='-FlareSolverrURL="http://flaresolverr:8191"' + labels: + - "traefik.enable=true" + - "traefik.http.routers.jackett.rule=Host(`jackett.${TRAEFIK_DOMAIN}`)" + - "traefik.http.routers.jackett.middlewares=common-auth@file" diff --git a/services/jdownloader.yaml b/services/jdownloader.yaml new file mode 100644 index 0000000..c00eaa8 --- /dev/null +++ b/services/jdownloader.yaml @@ -0,0 +1,23 @@ +services: + jdownloader: + image: jlesage/jdownloader-2 + container_name: jdownloader + restart: unless-stopped + volumes: + - configjdownloader:/config + - downloads:/output + environment: + - USER_ID=${PUID} + - GROUP_ID=${PGID} + - TZ=${TZ} + labels: + - "traefik.enable=true" + - "traefik.http.services.jdownloader-seedbox.loadbalancer.server.port=5800" + - "traefik.http.routers.jdownloader.rule=Host(`jdownloader.${TRAEFIK_DOMAIN}`)" + - "traefik.http.routers.jdownloader.middlewares=common-auth@file" + +volumes: + configjdownloader: + driver: local-persist + driver_opts: + mountpoint: /data/config/jdownloader \ No newline at end of file diff --git a/services/lidarr.yaml b/services/lidarr.yaml new file mode 100644 index 0000000..dcd4612 --- /dev/null +++ b/services/lidarr.yaml @@ -0,0 +1,22 @@ +services: + lidarr: + image: ghcr.io/linuxserver/lidarr:preview + container_name: lidarr + restart: always + volumes: + - configlidarr:/config + - torrents:/torrents + environment: + - PGID=${PGID} + - PUID=${PUID} + - TZ=${TZ} + labels: + - "traefik.enable=true" + - "traefik.http.routers.lidarr.rule=Host(`lidarr.${TRAEFIK_DOMAIN}`)" + - "traefik.http.routers.lidarr.middlewares=common-auth@file" + +volumes: + configlidarr: + driver: local-persist + driver_opts: + mountpoint: /data/config/lidarr \ No newline at end of file diff --git a/services/netdata.yaml b/services/netdata.yaml new file mode 100644 index 0000000..5d5a0c9 --- /dev/null +++ b/services/netdata.yaml @@ -0,0 +1,23 @@ +services: + netdata: + image: netdata/netdata + restart: always + container_name: netdata + hostname: netdata.${TRAEFIK_DOMAIN} + environment: + PGID: 999 + cap_add: + - SYS_PTRACE + security_opt: + - apparmor:unconfined + volumes: + - /proc:/host/proc:ro + - /sys:/host/sys:ro + - /etc/passwd:/host/etc/passwd:ro + - /etc/group:/host/etc/group:ro + - /etc/os-release:/host/etc/os-release:ro + - /var/run/docker.sock:/var/run/docker.sock:rw + labels: + - "traefik.enable=true" + - "traefik.http.routers.netdata.rule=Host(`netdata.${TRAEFIK_DOMAIN}`)" + - "traefik.http.routers.netdata.middlewares=common-auth@file" \ No newline at end of file diff --git a/services/nextcloud.yaml b/services/nextcloud.yaml new file mode 100644 index 0000000..8d2c5e3 --- /dev/null +++ b/services/nextcloud.yaml @@ -0,0 +1,52 @@ +services: + nextcloud-db: + image: mariadb:10 + container_name: nextcloud-db + command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW + restart: always + environment: + - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} + - MYSQL_DATABASE=${MYSQL_DATABASE} + - MYSQL_USER=${MYSQL_USER} + - MYSQL_PASSWORD=${MYSQL_PASSWORD} + - TZ=${TZ} + volumes: + - nextclouddb:/var/lib/mysql + labels: + - "traefik.enable=false" + + # See tools/init-setup-nextcloud.sh for first install + nextcloud: + depends_on: + - nextcloud-db + image: linuxserver/nextcloud + container_name: nextcloud + restart: always + environment: + - PGID=${PGID} + - PUID=${PUID} + - TZ=${TZ} + volumes: + - confignextcloud:/config + - nextclouddata:/data + - torrents:/torrents + - config:/seedbox-config + labels: + - "traefik.enable=true" + - "traefik.http.routers.nextcloud.rule=Host(`nextcloud.${TRAEFIK_DOMAIN}`)" + - "traefik.http.services.nextcloud-seedbox.loadbalancer.server.scheme=https" + - "traefik.http.services.nextcloud-seedbox.loadbalancer.server.port=443" + +volumes: + nextclouddb: + driver: local-persist + driver_opts: + mountpoint: /data/nextcloud-db + confignextcloud: + driver: local-persist + driver_opts: + mountpoint: /data/config/nextcloud + nextclouddata: + driver: local-persist + driver_opts: + mountpoint: /data/config/nextcloud-data \ No newline at end of file diff --git a/services/plex.yaml b/services/plex.yaml new file mode 100644 index 0000000..33d1b5c --- /dev/null +++ b/services/plex.yaml @@ -0,0 +1,30 @@ +services: + plex: + image: ghcr.io/linuxserver/plex + container_name: plex + restart: always + ports: + - "32400:32400" + - "32400:32400/udp" + - "32469:32469" + - "32469:32469/udp" + - "5353:5353/udp" + - "1900:1900/udp" + volumes: + - configplex:/config + - torrents:/torrents + environment: + - PGID=${PGID} + - PUID=${PUID} + - TZ=${TZ} + - VERSION=latest + labels: + - "traefik.enable=true" + - "traefik.http.services.plex-seedbox.loadbalancer.server.port=32400" + - "traefik.http.routers.plex.rule=Host(`plex.${TRAEFIK_DOMAIN}`)" + +volumes: + configplex: + driver: local-persist + driver_opts: + mountpoint: /data/config/Plex \ No newline at end of file diff --git a/services/portainer.yaml b/services/portainer.yaml new file mode 100644 index 0000000..a9da06f --- /dev/null +++ b/services/portainer.yaml @@ -0,0 +1,12 @@ +services: + portainer: + image: portainer/portainer-ce + container_name: portainer + restart: always + volumes: + - /var/run/docker.sock:/var/run/docker.sock + command: --admin-password ${PORTAINER_ADMIN_PASSWORD} --host=unix:///var/run/docker.sock + labels: + - "traefik.enable=true" + - "traefik.http.routers.portainer.rule=Host(`portainer.${TRAEFIK_DOMAIN}`)" + - "traefik.http.services.portainer-seedbox.loadbalancer.server.port=9000" \ No newline at end of file diff --git a/services/radarr.yaml b/services/radarr.yaml new file mode 100644 index 0000000..65fc73d --- /dev/null +++ b/services/radarr.yaml @@ -0,0 +1,23 @@ +services: + radarr: + image: ghcr.io/linuxserver/radarr:develop + container_name: radarr + restart: always + volumes: + - configradarr:/config + - torrents:/torrents + - /etc/localtime:/etc/localtime:ro + environment: + - PGID=${PGID} + - PUID=${PUID} + - TZ=${TZ} + labels: + - "traefik.enable=true" + - "traefik.http.routers.radarr.rule=Host(`radarr.${TRAEFIK_DOMAIN}`)" + - "traefik.http.routers.radarr.middlewares=common-auth@file" + +volumes: + configradarr: + driver: local-persist + driver_opts: + mountpoint: /data/config/radarr \ No newline at end of file diff --git a/services/sonarr.yaml b/services/sonarr.yaml new file mode 100644 index 0000000..d29bfbe --- /dev/null +++ b/services/sonarr.yaml @@ -0,0 +1,23 @@ +services: + sonarr: + image: ghcr.io/linuxserver/sonarr:preview + container_name: sonarr + restart: always + volumes: + - configsonarr:/config + - torrents:/torrents + - /etc/localtime:/etc/localtime:ro + environment: + - PGID=${PGID} + - PUID=${PUID} + - TZ=${TZ} + labels: + - "traefik.enable=true" + - "traefik.http.routers.sonarr.rule=Host(`sonarr.${TRAEFIK_DOMAIN}`)" + - "traefik.http.routers.sonarr.middlewares=common-auth@file" + +volumes: + configsonarr: + driver: local-persist + driver_opts: + mountpoint: /data/config/sonarr \ No newline at end of file diff --git a/services/tautulli.yaml b/services/tautulli.yaml new file mode 100644 index 0000000..5470396 --- /dev/null +++ b/services/tautulli.yaml @@ -0,0 +1,21 @@ +services: + tautulli: + image: ghcr.io/linuxserver/tautulli + container_name: tautulli + restart: always + volumes: + - configtautulli:/config + - config:/logs:ro # Inside of tautulli, bind to logs via "/logs/Plex Media Server/Logs" + environment: + - PGID=${PGID} + - PUID=${PUID} + - TZ=${TZ} + labels: + - "traefik.enable=true" + - "traefik.http.routers.tautulli.rule=Host(`tautulli.${TRAEFIK_DOMAIN}`)" + +volumes: + configtautulli: + driver: local-persist + driver_opts: + mountpoint: /data/config/tautulli \ No newline at end of file diff --git a/services/tdarr.yaml b/services/tdarr.yaml new file mode 100644 index 0000000..231f21a --- /dev/null +++ b/services/tdarr.yaml @@ -0,0 +1,28 @@ +services: + tdarr: + image: haveagitgat/tdarr:1.3003 + container_name: tdarr + restart: always + environment: + - PUID=${PUID} + - PGID=${PGID} + - TZ=${TZ} + volumes: + - torrents:/home/Tdarr/Media + - configtdarr:/home/Tdarr/Documents/Tdarr + - tdarrdb:/var/lib/mongodb + labels: + - "traefik.enable=true" + - "traefik.http.services.tdarr-seedbox.loadbalancer.server.port=8265" + - "traefik.http.routers.tdarr.rule=Host(`tdarr.${TRAEFIK_DOMAIN}`)" + - "traefik.http.routers.tdarr.middlewares=common-auth@file" + +volumes: + configtdarr: + driver: local-persist + driver_opts: + mountpoint: /data/config/tdarr + tdarrdb: + driver: local-persist + driver_opts: + mountpoint: /data/config/tdarr-db \ No newline at end of file diff --git a/services/traefik.yaml b/services/traefik.yaml new file mode 100644 index 0000000..d216921 --- /dev/null +++ b/services/traefik.yaml @@ -0,0 +1,30 @@ +services: + traefik: + image: traefik + container_name: traefik + restart: always + command: + - --certificatesresolvers.le.acme.email=${ACME_MAIL} + - --pilot.token=${PILOT_TOKEN} + ports: + - "80:80" + - "443:443" + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - ./traefik:/etc/traefik:ro + - configtraefik:/config + environment: + - TRAEFIK_DOMAIN=${TRAEFIK_DOMAIN} + - TZ=${TZ} + labels: + - "traefik.enable=true" + # Docker labels for enabling Traefik dashboard + - "traefik.http.routers.traefik.rule=Host(`traefik.${TRAEFIK_DOMAIN}`)" + - "traefik.http.routers.traefik.service=api@internal" + - "traefik.http.routers.traefik.middlewares=common-auth@file" + +volumes: + configtraefik: + driver: local-persist + driver_opts: + mountpoint: /data/config/traefik \ No newline at end of file diff --git a/update-all.sh b/update-all.sh index 17d6098..b32a158 100755 --- a/update-all.sh +++ b/update-all.sh @@ -4,10 +4,14 @@ source .env echo "${HTTP_USER}:${HTTP_PASSWORD}" > traefik/http_auth +# Fetch all YAML files +SERVICES=$(find services2 -name "*.yaml" -mindepth 1 -maxdepth 1 | sed -e 's/^/-f /') +ALL_SERVICES="-f docker-compose.yaml $SERVICES" + echo "[$0] ***** Pulling all images... *****" -docker-compose pull +docker-compose ${ALL_SERVICES} pull echo "[$0] ***** Recreating containers if required... *****" -docker-compose up -d --remove-orphans +docker-compose ${ALL_SERVICES} up -d --remove-orphans echo "[$0] ***** Done updating containers *****" echo "[$0] ***** Clean unused images... *****" docker image prune -af