Skip to content

Instantly share code, notes, and snippets.

@doob187
Created March 6, 2021 21:32
Show Gist options
  • Save doob187/21805dc4150e7d4ee73f8beb180689f7 to your computer and use it in GitHub Desktop.
Save doob187/21805dc4150e7d4ee73f8beb180689f7 to your computer and use it in GitHub Desktop.
version: '3'
services:
plex:
hostname: 'plex'
container_name: 'plex'
environment:
- 'PGID=1000'
- 'PUID=1000'
- 'TZ=UTC'
- 'UMASK=022'
- 'PLEX_CLAIM=$PLEX_CLAIM_ID'
- 'VERSION=latest'
- 'ADVERTISE_IP=http://SERVERIP_ID:32400,http://plex.example.com:32400'
- 'NVIDIA_VISIBLE_DEVICES=all'
image: 'ghcr.io/linuxserver/plex'
restart: 'unless-stopped'
networks:
- proxy
devices:
- '/dev/dri:/dev/dri'
security_opt:
- 'no-new-privileges:true'
extra_hosts:
- 'analytics.plex.tv:127.0.0.1'
- 'metrics.plex.tv:127.0.0.1'
ports:
- target: 32400
published: 32400
protocol: tcp
mode: host
volumes:
- '/etc/localtime:/etc/localtime:ro'
- '/dev/shm:/ram_transcode:rw'
- '/opt/appdata/plex/database:/config:rw'
- source: unionfs
target: /mnt
type: volume
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.plex-rtr.entrypoints=https'
- 'traefik.http.routers.plex-rtr.rule=Host(`plex.example.com`)'
- 'traefik.http.routers.plex-rtr.tls=true'
- 'traefik.http.routers.plex-rtr.tls.certresolver=dns-cloudflare'
- 'traefik.http.routers.plex-rtr.middlewares=chain-authelia@file'
- 'traefik.http.routers.plex-rtr.service=uploader-svc'
- 'traefik.http.services.plex-svc.loadbalancer.server.port=32400'
sonarr:
hostname: 'sonarr'
container_name: 'sonarr'
environment:
- 'PGID=1000'
- 'PUID=1000'
- 'TZ=UTC'
- 'UMASK=022'
image: 'ghcr.io/linuxserver/sonarr:preview'
restart: 'unless-stopped'
ports:
- '127.0.0.1:8989:8989'
networks:
- proxy
security_opt:
- 'no-new-privileges:true'
volumes:
- '/opt/appdata/sonarr:/config:rw'
- source: unionfs
target: /mnt
type: volume
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.sonarr-rtr.entrypoints=https'
- 'traefik.http.routers.sonarr-rtr.rule=Host(`sonarr.example.com`)'
- 'traefik.http.routers.sonarr-rtr.tls=true'
- 'traefik.http.routers.sonarr-rtr.tls.certresolver=dns-cloudflare'
- 'traefik.http.routers.sonarr-rtr.middlewares=chain-authelia@file'
- 'traefik.http.routers.sonarr-rtr.service=sonarr-svc'
- 'traefik.http.services.sonarr-svc.loadbalancer.server.port=8989'
sonarr4k:
hostname: 'sonarr4k'
container_name: 'sonarr4k'
environment:
- 'PGID=1000'
- 'PUID=1000'
- 'TZ=UTC'
- 'UMASK=022'
image: 'ghcr.io/linuxserver/sonarr:preview'
restart: 'unless-stopped'
ports:
- '127.0.0.1:8984:8989'
networks:
- proxy
security_opt:
- 'no-new-privileges:true'
volumes:
- '/opt/appdata/sonarr4k:/config:rw'
- source: unionfs
target: /mnt
type: volume
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.sonarr4k-rtr.entrypoints=https'
- 'traefik.http.routers.sonarr4k-rtr.rule=Host(`sonarr4k.example.com`)'
- 'traefik.http.routers.sonarr4k-rtr.tls=true'
- 'traefik.http.routers.sonarr4k-rtr.tls.certresolver=dns-cloudflare'
- 'traefik.http.routers.sonarr4k-rtr.middlewares=chain-authelia@file'
- 'traefik.http.routers.sonarr4k-rtr.service=sonarr4k-svc'
- 'traefik.http.services.sonarr4k-svc.loadbalancer.server.port=8984'
radarr:
hostname: 'radarr'
container_name: 'radarr'
environment:
- 'PGID=1000'
- 'PUID=1000'
- 'TZ=UTC'
- 'UMASK=022'
image: 'ghcr.io/linuxserver/radarr:nightly'
restart: 'unless-stopped'
ports:
- '127.0.0.1:7878:7878'
networks:
- proxy
security_opt:
- 'no-new-privileges:true'
volumes:
- '/opt/appdata/radarr:/config:rw'
- source: unionfs
target: /mnt
type: volume
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.radarr-rtr.entrypoints=https'
- 'traefik.http.routers.radarr-rtr.rule=Host(`radarr.example.com`)'
- 'traefik.http.routers.radarr-rtr.tls=true'
- 'traefik.http.routers.radarr-rtr.tls.certresolver=dns-cloudflare'
- 'traefik.http.routers.radarr-rtr.middlewares=chain-authelia@file'
- 'traefik.http.routers.radarr-rtr.service=radarr-svc'
- 'traefik.http.services.radarr-svc.loadbalancer.server.port=7878'
radarr4k:
hostname: 'radarr4k'
container_name: 'radarr4k'
environment:
- 'PGID=1000'
- 'PUID=1000'
- 'TZ=UTC'
- 'UMASK=022'
image: 'ghcr.io/linuxserver/radarr:nightly'
restart: 'unless-stopped'
ports:
- '127.0.0.1:7874:7878'
networks:
- proxy
security_opt:
- 'no-new-privileges:true'
volumes:
- '/opt/appdata/radarr4k:/config:rw'
- source: unionfs
target: /mnt
type: volume
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.radarr4k-rtr.entrypoints=https'
- 'traefik.http.routers.radarr4k-rtr.rule=Host(`radarr4k.example.com`)'
- 'traefik.http.routers.radarr4k-rtr.tls=true'
- 'traefik.http.routers.radarr4k-rtr.tls.certresolver=dns-cloudflare'
- 'traefik.http.routers.radarr4k-rtr.middlewares=chain-authelia@file'
- 'traefik.http.routers.radarr4k-rtr.service=uploader-svc'
- 'traefik.http.services.radarr4k-svc.loadbalancer.server.port=7874'
traktarr:
hostname: 'traktarr'
container_name: 'traktarr'
environment:
- 'PGID=1000'
- 'PUID=1000'
- 'TZ=UTC'
- 'DELAY=2.5'
- 'SORT=rating'
- 'NOSEARCH=yes'
- 'NOTIFICATIONS=yes'
- 'BLACKLIST=yes'
- 'RUNNOW=yes'
- 'SKIPUPDATE=no'
- 'APP_BRANCH=master'
image: 'ghcr.io/doob187/docker-traktarr:latest'
restart: 'unless-stopped'
networks:
- proxy
security_opt:
- 'no-new-privileges:true'
volumes:
- '/opt/appdata/traktarr:/config:rw'
traktarr4k:
hostname: 'traktarr4k'
container_name: 'traktarr4k'
environment:
- 'PGID=1000'
- 'PUID=1000'
- 'TZ=UTC'
- 'DELAY=2.5'
- 'SORT=rating'
- 'NOSEARCH=yes'
- 'NOTIFICATIONS=yes'
- 'BLACKLIST=yes'
- 'RUNNOW=yes'
- 'SKIPUPDATE=no'
- 'APP_BRANCH=master'
image: 'ghcr.io/doob187/docker-traktarr:latest'
restart: 'unless-stopped'
networks:
- proxy
security_opt:
- 'no-new-privileges:true'
volumes:
- '/opt/appdata/traktarr4k:/config:rw'
overseerr:
hostname: 'overseerr'
container_name: 'overseerr'
environment:
- 'PGID=1000'
- 'PUID=1000'
- 'TZ=UTC'
- 'LOG_LEVEL=info'
image: 'sctx/overseerr:develop'
restart: 'unless-stopped'
ports:
- '127.0.0.1:5055:5055'
networks:
- proxy
security_opt:
- 'no-new-privileges:true'
volumes:
- '/opt/appdata/overseerr:/app/config:rw'
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.overseerr-rtr.entrypoints=https'
- 'traefik.http.routers.overseerr-rtr.rule=Host(`overseerr.example.com`)'
- 'traefik.http.routers.overseerr-rtr.tls=true'
- 'traefik.http.routers.overseerr-rtr.tls.certresolver=dns-cloudflare'
- 'traefik.http.routers.overseerr-rtr.middlewares=chain-authelia@file'
- 'traefik.http.routers.overseerr-rtr.service=overseerr-svc'
- 'traefik.http.services.overseerr-svc.loadbalancer.server.port=5055'
autoscan:
hostname: 'autoscan'
container_name: 'autoscan'
environment:
- 'PGID=1000'
- 'PUID=1000'
- 'TZ=UTC'
- 'AUTOSCAN_VERBOSITY=1'
image: 'cloudb0x/autoscan'
restart: 'unless-stopped'
ports:
- '127.0.0.1:3030:3030'
networks:
- proxy
volumes:
- '/opt/appdata/autoscan:/config:rw'
- '/opt/appdata/plex:/data/plex:ro'
- source: unionfs
target: /mnt
type: volume
- '/etc/locatime:/etc/localtime:ro'
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.autoscan-rtr.entrypoints=https'
- 'traefik.http.routers.autoscan-rtr.rule=Host(`autoscan.example.com`)'
- 'traefik.http.routers.autoscan-rtr.tls=true'
- 'traefik.http.routers.autoscan-rtr.tls.certresolver=dns-cloudflare'
- 'traefik.http.routers.autoscan-rtr.middlewares=chain-authelia@file'
- 'traefik.http.routers.autoscan-rtr.service=autoscan-svc'
- 'traefik.http.services.autoscan-svc.loadbalancer.server.port=3030'
vnstat:
hostname: 'vnstat'
container_name: 'vnstat'
environment:
- 'PGID=1000'
- 'PUID=1000'
- 'TZ=UTC'
- 'AUTOSCAN_VERBOSITY=1'
image: 'ghcr.io/doob187/vnstat:latest'
networks:
- proxy
restart: 'unless-stopped'
ports:
- '127.0.0.1:8090:80'
volumes:
- '/usr/bin/vnstat:/usr/bin/vnstat'
- '/var/lib/vnstat:/var/lib/vnstat'
- '/etc/localtime:/etc/localtime:ro'
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.vnstat-rtr.entrypoints=https'
- 'traefik.http.routers.vnstat-rtr.rule=Host(`vnstat.example.com`)'
- 'traefik.http.routers.vnstat-rtr.tls=true'
- 'traefik.http.routers.vnstat-rtr.tls.certresolver=dns-cloudflare'
- 'traefik.http.routers.vnstat-rtr.middlewares=chain-authelia@file'
- 'traefik.http.routers.vnstat-rtr.service=vnstat-svc'
- 'traefik.http.services.vnstat-svc.loadbalancer.server.port=8090'
sabnzbd:
hostname: 'sabnzbd'
container_name: 'sabnzbd'
environment:
- 'PGID=1000'
- 'PUID=1000'
- 'TZ=UTC'
- 'UMASK=022'
image: 'ghcr.io/linuxserver/sabnzbd'
restart: 'unless-stopped'
ports:
- '127.0.0.1:8010:8080'
networks:
- proxy
security_opt:
- 'no-new-privileges:true'
volumes:
- '/opt/appdata/sabnzbd:/config:rw'
- '/mnt/downloads/nzb:/mnt/downloads/nzb:rw'
- '/mnt/incomplete/nzb:/mnt/incomplete/nzb:rw'
- source: unionfs
target: /mnt
type: volume
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.sabnzbd-rtr.entrypoints=https'
- 'traefik.http.routers.sabnzbd-rtr.rule=Host(`sabnzbd.example.com`)'
- 'traefik.http.routers.sabnzbd-rtr.tls=true'
- 'traefik.http.routers.sabnzbd-rtr.tls.certresolver=dns-cloudflare'
- 'traefik.http.routers.sabnzbd-rtr.middlewares=chain-authelia@file'
- 'traefik.http.routers.sabnzbd-rtr.service=uploader-svc'
- 'traefik.http.services.sabnzbd-svc.loadbalancer.server.port=8080'
qbittorrent:
hostname: 'qbittorrent'
container_name: 'qbittorrent'
environment:
- 'PGID=1000'
- 'PUID=1000'
- 'TZ=UTC'
- 'UMASK=022'
image: 'ghcr.io/linuxserver/qbittorrent'
networks:
- proxy
restart: 'unless-stopped'
security_opt:
- 'no-new-privileges:true'
ports:
- '7889:7889'
- '127.0.0.1:8083:8083'
volumes:
- '/opt/appdata/qbittorrent:/config:rw'
- '/mnt/downloads/torrent:/mnt/downloads/torrent:rw'
- '/mnt/incomplete/torrent:/mnt/incomplete/torrent:rw'
- source: unionfs
target: /mnt
type: volume
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.qbittorrent-rtr.entrypoints=https'
- 'traefik.http.routers.qbittorrent-rtr.rule=Host(`qbittorrent.example.com`)'
- 'traefik.http.routers.qbittorrent-rtr.tls=true'
- 'traefik.http.routers.qbittorrent-rtr.tls.certresolver=dns-cloudflare'
- 'traefik.http.routers.qbittorrent-rtr.middlewares=chain-authelia@file'
- 'traefik.http.routers.qbittorrent-rtr.service=qbittorrent-svc'
- 'traefik.http.services.qbittorrent-svc.loadbalancer.server.port=8083'
backup:
hostname: 'backup'
container_name: 'backup'
environment:
- 'PGID=1000'
- 'PUID=1000'
- 'TZ=UTC'
- CRON_TIME=$CRON_TIME
- CONTAINER_TIMEZONE=$TZ
- 'BACKUP_HOLD=15'
- SERVER_ID=$SERVER_ID
- 'RSYNC_COMPRESS_LEVEL=2'
- 'SET_CONTAINER_TIMEZONE=true'
image: 'ghcr.io/doob187/docker-backup:latest'
restart: 'unless-stopped'
networks:
- proxy
volumes:
- '/opt/appdata/rsync-backup:/config:rw'
- '/opt/appdata/:/home'
- '/opt/backup:/backup'
- '/etc/locatime:/etc/localtime:ro'
uploader:
cap_add:
- 'SYS_ADMIN'
container_name: 'uploader'
devices:
- '/dev/fuse:/dev/fuse'
environment:
- 'PGID=1000'
- 'PUID=1000'
- 'TZ=UTC'
image: 'ghcr.io/doob187/uploader'
restart: 'unless-stopped'
ports:
- '127.0.0.1:7777:8080'
networks:
- proxy
security_opt:
- 'apparmor:unconfined'
networks:
- proxy
volumes:
- '/etc/localtime:/etc/localtime:ro'
- '/opt/appdata/uploader:/config:rw'
- source: unionfs
target: /mnt
type: volume
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.uploader-rtr.entrypoints=https'
- 'traefik.http.routers.uploader-rtr.rule=Host(`uploader.example.com`)'
- 'traefik.http.routers.uploader-rtr.tls=true'
- 'traefik.http.routers.uploader-rtr.tls.certresolver=dns-cloudflare'
- 'traefik.http.routers.uploader-rtr.middlewares=chain-authelia@file'
- 'traefik.http.routers.uploader-rtr.service=uploader-svc'
- 'traefik.http.services.uploader-svc.loadbalancer.server.port=7777'
mount:
cap_add:
- 'SYS_ADMIN'
container_name: 'mount'
devices:
- '/dev/fuse:/dev/fuse'
ports:
- target: 7755
published: 8080
protocol: tcp
mode: host
environment:
- 'PGID=1000'
- 'PUID=1000'
- 'TZ=UTC'
image: 'ghcr.io/doob187/mount'
restart: 'unless-stopped'
security_opt:
- 'apparmor=unconfined'
volumes:
- '/etc/localtime:/etc/localtime:ro'
- '/opt/appdata/mount:/config:rw'
- '/mnt:/mnt:shared'
networks:
proxy:
driver: bridge
external: true
volumes:
unionfs:
driver: local-persist
driver_opts:
mountpoint: /mnt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment