From de2d013cd9051ac962e9def2794ca23e8c7ad69e Mon Sep 17 00:00:00 2001 From: zware Date: Tue, 23 Aug 2022 22:36:03 -0500 Subject: [PATCH] Improve docker-compose improve docker-compose point docker-compose task to dir instead of file --- docker-compose.yml | 174 +++++++++++++++++++++++++++++++++++++++++++++ media-buildout.yml | 11 ++- 2 files changed, 183 insertions(+), 2 deletions(-) create mode 100644 docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..1f17483 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,174 @@ +--- +version: '3.4' +x-function: &function + networks: + - traefik_proxy1 + labels: + - "traefik.enable=true" + - "traefik.docker.network=traefik_proxy1" + - "traefik.frontend.headers.SSLRedirect=true" + - "traefik.frontend.headers.STSSeconds=315360000" + - "traefik.frontend.headers.browserXSSFilter=true" + - "traefik.frontend.headers.contentTypeNosniff=true" + - "traefik.frontend.headers.forceSTSHeader=true" + - "traefik.frontend.headers.SSLHost=example.com" + - "traefik.frontend.headers.STSIncludeSubdomains=true" + - "traefik.frontend.headers.STSPreload=true" + - "traefik.frontend.headers.frameDeny=true" + restart: always + environment: + - PUID=${PUID} + - PGID=${PGID} + - TZ=${TZ} +# Media Server +services: +#Grabber, manage TV shows + + sonarr: + <<: *function + image: linuxserver/sonarr:latest + container_name: sonarr + volumes: + - /opt/appdata/sonarr:/config + - /mnt/storage/tv:/tv + - /downloads/:/downloads + - /downloads/complete/tv_import:/tv_import + ports: + - 27021:8989 + labels: + - "traefik.backend=sonarr" + - "traefik.port=8989" + - "traefik.frontend.rule=Host:sonarr.${DOMAINNAME}" + - "docker.group=external" + +#Indexer, Used by managers to query sites for content + jackett: + <<: *function + image: linuxserver/jackett:latest + container_name: jackett + volumes: + - /opt/appdata/jackett:/config + - /downloads:/downloads + ports: + - 9117:9117 + labels: + - "traefik.backend=jackett" + - "traefik.frontend.rule=Host:jackett.${DOMAINNAME}" + - "traefik.port=9117" + - "docker.group=internal" +#Reverse Proxy, Used to route applications to domain + traefik: + <<: *function + hostname: traefik + image: traefik:v1.7 + container_name: traefik + domainname: ${DOMAINNAME} + networks: + - default + - traefik_proxy1 + ports: + - "80:80" + - "443:443" + - "8080:8080" + labels: + - "traefik.enable=true" + - "traefik.backend=traefik" + - "traefik.frontend.rule=Host:traefik.${DOMAINNAME}" + - "traefik.port=80" + - "traefik.frontend.auth.basic.users=${HTTP_USERNAME}:${HTTP_PASSWORD}" + - "docker.group=internal" + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + - /home/dockeruser/traefik:/etc/traefik + - /opt/appdata/shared:/shared + - /opt/appdata/traefik:/var/log + - /opt/appdata/traefik/tmp:/tmp +#Downloader, pull in content from torrents & hide traffic behind VPN + arch-deluge: + <<: *function + image: binhex/arch-delugevpn:latest + container_name: arch-deluge + ports: + - 8112:8112 + - 8118:8118 + - 58846:58846 + - 58946:58946 + cap_add: + - NET_ADMIN + volumes: + - /opt/appdata/arch-deluge:/config + - /downloads:/downloads + - /mnt/storage:/mnt/storage + - /opt/appdata/shared:/shared + - /opt/appdata/arch-deluge/data:/data + environment: + - PUID=${PUID} + - PGID=${PGID} + - TZ=${TZ} + - VPN_ENABLED=yes + - VPN_USER=${VPN_USER} + - VPN_PASS=${VPN_PASS} + - VPN_PROV=custom + - STRICT_PORT_FORWARD=yes + - ENABLE_PRIVOXY=yes + - LAN_NETWORK=192.168.0.100/24 + - NAME_SERVERS=103.86.96.100, 103.86.99.100 + - DELUGE_DAEMON_LOG_LEVEL=error + - DELUGE_WEB_LOG_LEVEL=error + - DEBUG=true + - UMASK=000 + labels: + - "traefik.backend=arch-deluge" + - "traefik.frontend.rule=Host:deluge.${DOMAINNAME}" + - "traefik.port=8112" + - "docker.group=external" + privileged: true +#updated version of plex requests + ombi: + <<: *function + image: linuxserver/ombi + container_name: ombi + environment: + - PUID=${PUID} + - PGID=${PGID} + - TZ=${TZ} + - BASE_URL=/ombi #optional + volumes: + - /opt/appdata/ombi:/config + - /opt/appdata/shared:/shared + networks: + - traefik_proxy1 + labels: + - "traefik.backend=ombi" + - "traefik.frontend.rule=Host:requests.${DOMAINNAME}" # + - "traefik.port=3579" + - "traefik.docker.network=traefik_proxy1" + - "docker.group=external" + ports: + - 3579:3579 +#NZBGet - usenet downloader + nzbget: + <<: *function + image: linuxserver/nzbget:latest + container_name: nzbget + volumes: + - /opt/appdata/nzbget/config:/config + - /opt/appdata/nzbget/data:/data + - /downloads:/downloads + - /opt/appdata/shared:/shared + ports: + - 27020:6789 + networks: + - traefik_proxy1 + labels: + - "traefik.backend=nzbget" + - "traefik.frontend.rule=Host:nzbget.${DOMAINNAME}" # + - "traefik.port=6789" + - "docker.group=external" +#Networks, Needed for Traefik +networks: + traefik_proxy1: + # external: true + default: + driver: bridge + diff --git a/media-buildout.yml b/media-buildout.yml index 7866b90..aaf0f00 100644 --- a/media-buildout.yml +++ b/media-buildout.yml @@ -59,7 +59,14 @@ group: root mode: "0644" + - name: Copy env file + ansible.builtin.copy: + src: environment + dest: /etc/environment + owner: zware + group: zware + mode: "0600" + - name: Start containers community.docker.docker_compose: - project_src: docker-compose.yml - state: present + project_src: /opt/