Skip to content

Instantly share code, notes, and snippets.

@peavers
Created August 16, 2020 10:26
Show Gist options
  • Save peavers/6a364ddd64097f71f1e189529a6904f4 to your computer and use it in GitHub Desktop.
Save peavers/6a364ddd64097f71f1e189529a6904f4 to your computer and use it in GitHub Desktop.
docker-compose file for media server
version: "3"
services:
# https://hub.docker.com/_/traefik
traefik:
container_name: traefik
image: traefik:v2.2
restart: unless-stopped
command:
- --api
- --providers.docker
- --entrypoints.web.address=:80
- --entrypoints.web.http.redirections.entryPoint.to=websecure
- --entrypoints.web.http.redirections.entryPoint.scheme=https
- --entrypoints.web.http.redirections.entrypoint.permanent=true
- --entrypoints.websecure.address=:443
- --certificatesresolvers.leresolver.acme.caserver=https://acme-v02.api.letsencrypt.org/directory
- --certificatesresolvers.leresolver.acme.email=${EMAIL}
- --certificatesresolvers.leresolver.acme.storage=/acme.json
- --certificatesresolvers.leresolver.acme.tlschallenge=true
ports:
- 80:80
- 443:443
- 8080:8080
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${USERDIR}/traefik/acme.json:/acme.json
logging:
options:
max-size: "2m"
max-file: "5"
# https://hub.docker.com/r/linuxserver/bazarr/
bazarr:
container_name: bazarr
image: linuxserver/bazarr:latest
restart: unless-stopped
ports:
- 6767:6767
environment:
- TZ=${TZ}
- PGID=${PGID}
- PUID=${PUID}
volumes:
- ${USERDIR}/bazerr:/config
- ${MEDIA}/tv:/tv
- ${MEDIA}/movies:/movies
depends_on:
- traefik
- nzbget
- hydra
- jackett
logging:
options:
max-size: "2m"
max-file: "5"
labels:
- "traefik.http.routers.bazarr.rule=Host(`${DOMAIN}`) && PathPrefix(`/bazarr`)"
- "traefik.http.routers.bazarr.tls=true"
# https://hub.docker.com/r/linuxserver/sonarr/
sonarr:
container_name: sonarr
image: linuxserver/sonarr:preview
restart: unless-stopped
ports:
- 8989:8989
environment:
- TZ=${TZ}
- PGID=${PGID}
- PUID=${PUID}
volumes:
- ${USERDIR}/sonarr:/config
- ${DOWNLOADS}:/downloads
- ${MEDIA}:/tv
depends_on:
- traefik
- nzbget
- hydra
- jackett
logging:
options:
max-size: "2m"
max-file: "5"
labels:
- "traefik.http.routers.sonarr.rule=Host(`${DOMAIN}`) && PathPrefix(`/sonarr`)"
- "traefik.http.routers.sonarr.tls=true"
# https://hub.docker.com/r/linuxserver/radarr/
radarr:
container_name: radarr
image: linuxserver/radarr:preview
restart: unless-stopped
ports:
- 7878:7878
environment:
- TZ=${TZ}
- PGID=${PGID}
- PUID=${PUID}
volumes:
- ${USERDIR}/radarr:/config
- ${DOWNLOADS}:/downloads
- ${MEDIA}:/movies
depends_on:
- traefik
- nzbget
- hydra
- jackett
logging:
options:
max-size: "2m"
max-file: "5"
labels:
- "traefik.http.routers.radarr.rule=Host(`${DOMAIN}`) && PathPrefix(`/radarr`)"
- "traefik.http.routers.radarr.tls=true"
# https://hub.docker.com/r/linuxserver/lidarr/
lidarr:
container_name: lidarr
image: linuxserver/lidarr:latest
restart: unless-stopped
ports:
- 8686:8686
environment:
- TZ=${TZ}
- PGID=${PGID}
- PUID=${PUID}
volumes:
- ${USERDIR}/lidarr:/config
- ${DOWNLOADS}:/downloads
- ${MEDIA}/music:/music
depends_on:
- traefik
- nzbget
- hydra
- jackett
logging:
options:
max-size: "2m"
max-file: "5"
labels:
- "traefik.http.routers.lidarr.rule=Host(`${DOMAIN}`) && PathPrefix(`/lidarr`)"
- "traefik.http.routers.lidarr.tls=true"
# https://hub.docker.com/r/linuxserver/hydra2/
hydra:
container_name: hydra
image: linuxserver/nzbhydra2:latest
restart: unless-stopped
ports:
- 5076:5076
environment:
- TZ=${TZ}
- PGID=${PGID}
- PUID=${PUID}
volumes:
- ${USERDIR}/hydra:/config
- ${DOWNLOADS}:/downloads
depends_on:
- traefik
logging:
options:
max-size: "2m"
max-file: "5"
labels:
- "traefik.http.routers.hydra.rule=Host(`${DOMAIN}`) && PathPrefix(`/hydra`)"
- "traefik.http.routers.hydra.tls=true"
# https://hub.docker.com/r/linuxserver/hydra2/
jackett:
container_name: jackett
image: linuxserver/jackett:latest
restart: unless-stopped
ports:
- 9117:9117
environment:
- TZ=${TZ}
- PGID=${PGID}
- PUID=${PUID}
volumes:
- ${USERDIR}/jackett:/config
- ${DOWNLOADS}/jackett:/downloads
depends_on:
- traefik
logging:
options:
max-size: "2m"
max-file: "5"
labels:
- "traefik.http.routers.jackett.rule=Host(`${DOMAIN}`) && PathPrefix(`/jackett`)"
- "traefik.http.routers.jackett.tls=true"
# https://hub.docker.com/r/linuxserver/nzbget/
nzbget:
container_name: nzbget
image: linuxserver/nzbget:latest
restart: unless-stopped
ports:
- 6789:6789
environment:
- TZ=${TZ}
- PGID=${PGID}
- PUID=${PUID}
volumes:
- ${USERDIR}/nzbget:/config
- ${DOWNLOADS}:/downloads
depends_on:
- traefik
logging:
options:
max-size: "2m"
max-file: "5"
labels:
- "traefik.http.routers.nzbget.rule=Host(`${DOMAIN}`) && PathPrefix(`/nzbget`)"
- "traefik.http.routers.nzbget.tls=true"
# https://github.com/xataz/docker-rtorrent-rutorrent
rutorrent:
image: linuxserver/rutorrent:latest
container_name: rutorrent
restart: unless-stopped
ports:
- 8888:80
- 6881:6881
- 6881:6881/udp
- 127.0.0.1:5000:5000
- 51413:51413
environment:
- PGID=${PGID}
- PUID=${PUID}
- DHT_RTORRENT=on
- PORT_RTORRENT=6881
volumes:
- ${USERDIR}/rutorrent:/config
- ${DOWNLOADS}/rutorrent:/downloads
depends_on:
- traefik
logging:
options:
max-size: "2m"
max-file: "5"
labels:
- "traefik.http.routers.rutorrent.rule=Host(`${DOMAIN}`) && PathPrefix(`/rutorrent`)"
- "traefik.http.routers.rutorrent.tls=true"
# https://hub.docker.com/r/linuxserver/plex/
plex:
container_name: plex
image: linuxserver/plex:latest
restart: unless-stopped
network_mode: host
environment:
- TZ=${TZ}
- PGID=${PGID}
- PUID=${PUID}
- VERSION=latest
volumes:
- ${USERDIR}/plex:/config
- ${MEDIA}/tv:/data/tvshows
- ${MEDIA}/movies:/data/movies
logging:
options:
max-size: "2m"
max-file: "5"
labels:
- traefik.enable=false
# https://containrrr.github.io/watchtower/
watchtower:
container_name: watchtower
image: containrrr/watchtower:latest
restart: unless-stopped
command: --interval 30
volumes:
- /var/run/docker.sock:/var/run/docker.sock
logging:
options:
max-size: "2m"
max-file: "5"
labels:
- traefik.enable=false
# https://hub.docker.com/r/sjmayotte/route53-dynamic-dns/
amazon-dns-server:
container_name: amazon-dns-server
image: sjmayotte/route53-dynamic-dns:latest
restart: unless-stopped
environment:
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
- AWS_REGION=${AWS_REGION}
- ROUTE53_HOSTED_ZONE_ID=${ROUTE53_HOSTED_ZONE_ID}
- ROUTE53_DOMAIN=${DOMAIN}
- ROUTE53_TYPE=A
- ROUTE53_TTL=60
- SEND_EMAIL_SES=false
- UPDATE_FREQUENCY=60000
- IPCHECKER=ifconfig.co
logging:
options:
max-size: "2m"
max-file: "5"
labels:
- traefik.enable=false
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment