122 lines
4.5 KiB
YAML
122 lines
4.5 KiB
YAML
---
|
|
version: '3.7'
|
|
|
|
services:
|
|
traefik:
|
|
image: traefik:2.5
|
|
networks:
|
|
- pubnet
|
|
command: --web --docker --docker.swarmmode --docker.watch --docker.domain="services.jowj.net" --providers.docker.network=pubnet --logLevel=DEBUG
|
|
ports:
|
|
- 80:80/tcp
|
|
- 443:443/tcp
|
|
- 8088:8088/tcp
|
|
volumes:
|
|
- /home/josiah/apps/traefik/acme.json:/acme.json
|
|
- traefik_logs:/var/log/access.log
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
- /home/josiah/apps/traefik/traefik.yml:/traefik.yml
|
|
deploy:
|
|
mode: global
|
|
placement:
|
|
constraints:
|
|
- node.role == manager
|
|
environment:
|
|
DO_AUTH_TOKEN: "{{ DO_AUTH_TOKEN }}"
|
|
labels:
|
|
# Dashboard shit I stole from Micah:
|
|
# WARNING: A TRAILING SLASH IS MANDATORY IN THE BROWSER
|
|
# e.g. https://example.com/dashboard/, not merely /dashboard
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.mediaserver-traefik-api.tls.certResolver=mediaserver-resolver"
|
|
- "traefik.http.routers.mediaserver-traefik-api.rule=Host(`lair.home.jowj.net`)&&(PathPrefix(`/api`)||PathPrefix(`/dashboard`)||PathPrefix(`/debug`))"
|
|
- "traefik.http.routers.mediaserver-traefik-api.service=api@internal"
|
|
- "traefik.http.services.mediaserver-traefik-api.loadbalancer.server.port=8088"
|
|
# - "traefik.http.routers.mediaserver-traefik-api.entrypoints=http"
|
|
- "traefik.http.routers.mediaserver-traefik-api.entrypoints=https"
|
|
# middleware redirect
|
|
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
|
|
# global redirect to https
|
|
- "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)"
|
|
- "traefik.http.routers.http-catchall.entrypoints=http"
|
|
- "traefik.http.routers.http-catchall.middlewares=redirect-to-https"
|
|
|
|
|
|
|
|
whoami:
|
|
image: containous/whoami:latest
|
|
networks:
|
|
- pubnet
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.mediaserver-whoami.rule=Host(`whoami.services.jowj.net`)"
|
|
- "traefik.http.routers.mediaserver-whoami.service=mediaserver-whoami"
|
|
- "traefik.http.services.mediaserver-whoami.loadbalancer.server.port=80"
|
|
- "traefik.http.routers.mediaserver-whoami.tls.certResolver=mediaserver-resolver"
|
|
- "traefik.http.routers.mediaserver-whoami.tls=true"
|
|
|
|
stash:
|
|
image: git.awful.club/packages/hoard:latest
|
|
## If you intend to use stash's DLNA functionality uncomment the below network mode and comment out the above ports section
|
|
# network_mode: host
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-file: "10"
|
|
max-size: "2m"
|
|
environment:
|
|
- STASH_STASH=/data/
|
|
- STASH_GENERATED=/generated/
|
|
- STASH_METADATA=/metadata/
|
|
- STASH_CACHE=/cache/
|
|
## Adjust below to change default port (9999)
|
|
# - STASH_PORT=9999
|
|
volumes:
|
|
- /etc/localtime:/etc/localtime:ro
|
|
- "{{ vault_stash_config }}:/root/.stash"
|
|
- "{{ vault_stash_data }}:/data"
|
|
- "{{ vault_stash_metadata }}:/metadata"
|
|
- "{{ vault_stash_cache }}:/cache"
|
|
- "{{ vault_stash_generated }}:/generated"
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.services.mediaserver-hoard.loadbalancer.server.port=9999"
|
|
- "traefik.http.routers.mediaserver-hoard.service=mediaserver-hoard"
|
|
- "traefik.http.routers.mediaserver-hoard.rule=Host(`hoard.services.jowj.net`)"
|
|
- "traefik.http.routers.mediaserver-hoard.tls.certResolver=mediaserver-resolver"
|
|
- "traefik.http.routers.mediaserver-hoard.tls=true"
|
|
networks:
|
|
- pubnet
|
|
|
|
calibre:
|
|
image: lscr.io/linuxserver/calibre:latest
|
|
environment:
|
|
- PUID=1000
|
|
- PGID=1000
|
|
- TZ=Etc/UTC
|
|
volumes:
|
|
- /home/josiah/apps/calibre/:/config # this is where the config / metadata db / cache live
|
|
- /media/usenet/book-library/readarr/:/books # this is the library
|
|
ports:
|
|
# don't use traefik for non 443 / 80 ports.
|
|
- 8080:8080
|
|
- 8181:8181
|
|
- 8081:8081
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.services.mediaserver-calibre.loadbalancer.server.port=8083"
|
|
- "traefik.http.routers.mediaserver-calibre.service=mediaserver-calibre"
|
|
- "traefik.http.routers.mediaserver-calibre.rule=Host(`calibre.services.jowj.net`)"
|
|
- "traefik.http.routers.mediaserver-calibre.tls.certResolver=mediaserver-resolver"
|
|
- "traefik.http.routers.mediaserver-calibre.tls=true"
|
|
networks:
|
|
- pubnet
|
|
|
|
volumes:
|
|
traefik_acme:
|
|
traefik_logs:
|
|
|
|
networks:
|
|
pubnet:
|
|
driver: overlay
|