--- 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 - 8080:8080/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=8080" # - "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-web: image: lscr.io/linuxserver/calibre-web:latest environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC - DOCKER_MODS=linuxserver/mods:universal-calibre #optional - OAUTHLIB_RELAX_TOKEN_SCOPE=1 #optional volumes: - /home/josiah/apps/calibre/:/config - /media/usenet/book-library/readarr/:/books 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