Files
docker/docker-compose.yml
2022-02-28 20:39:21 +02:00

155 lines
5.0 KiB
YAML

version: "3.3"
services:
traefik:
image: "traefik:v2.6"
container_name: "traefik"
command:
- "--log.level=DEBUG"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.pukekoresolver.acme.dnschallenge=true"
- "--certificatesresolvers.pukekoresolver.acme.dnschallenge.provider=cloudflare"
#- "--certificatesresolvers.pukekoresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
- "--certificatesresolvers.pukekoresolver.acme.email=matanhorovitz@protonmail.com"
- "--certificatesresolvers.pukekoresolver.acme.storage=/letsencrypt/acme.json"
- "--certificatesresolvers.pukekoresolver.acme.dnschallenge.resolvers=1.1.1.1:53"
ports:
- "80:80"
- "443:443"
- "8282:8080"
environment:
- CF_API_KEY=12fd3e74bd60d39d192ff0e51fa2f6af90402
- CF_API_EMAIL=matanhorovitz@protonmail.com
- CF_DNS_API_TOKEN=0dFNYA8qtzVhVtGi4nEb7_aclTOdGthYm5Q7N05n
volumes:
- "./letsencrypt:/letsencrypt"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
networks:
- traefik_network
- arr_network
- filebrowser_network
- gitea_network
- grocy_network
- vaultwarden_network
- vikunja_network
- freshrss_network
- jekyll_network
- jellyfin_network
- joplin_network
- photoprism_network
- podgrab_network
- portainer_network
- prometheus_network
- qbittorrent_network
- syncthing_network
- wikijs_network
- wireguard_network
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.homer.entrypoints=websecure"
- "traefik.http.routers.domain.rule=Host(`pukeko.xyz`)"
- "traefik.http.routers.domain.service=noop@internal"
- "traefik.http.routers.domain.middlewares=pukeko-redirect"
- 'traefik.http.middlewares.pukeko-redirect.redirectregex.regex=^http://pukeko.xyz/(.*)'
- 'traefik.http.middlewares.pukeko-redirect.redirectregex.replacement=http://dash.pukeko.xyz/$${1}'
- "traefik.http.middlewares.pukeko-redirect.redirectregex.permanent=true"
homer:
image: b4bz/homer
container_name: homer
volumes:
- /Red-Vol/Media/Containers/homer/assets/:/www/assets
ports:
- 4957:8080
environment:
- UID=1000
- GID=1000
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.homer.entrypoints=websecure"
- "traefik.http.routers.homer.rule=Host(`dash.pukeko.xyz`)"
- "traefik.http.routers.homer.service=homer-traefik@docker"
- "traefik.http.routers.homer.tls.certresolver=pukekoresolver"
- "traefik.http.routers.homer.middlewares=authelia@docker"
networks:
- traefik_network
authelia:
image: authelia/authelia:latest
container_name: authelia
environment:
- TZ=Asia/Jerusalem
- AUTHELIA_IDENTITY_PROVIDERS_OIDC_ISSUER_PRIVATE_KEY_FILE=/run/secrets/private_key
volumes:
- ./authelia:/config
restart: unless-stopped
secrets:
- hmac
- private_key
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.authelia.rule=Host(`auth.pukeko.xyz`)'
- 'traefik.http.routers.authelia.entrypoints=websecure'
- 'traefik.http.routers.authelia.tls=true'
- 'traefik.http.middlewares.authelia.forwardauth.address=http://authelia:9091/api/verify?rd=https://auth.pukeko.xyz/'
- 'traefik.http.middlewares.authelia.forwardauth.trustForwardHeader=true'
- 'traefik.http.middlewares.authelia.forwardauth.authResponseHeaders=Remote-User, Remote-Groups, Remote-Name, Remote-Email'
- 'traefik.http.middlewares.authelia-basic.forwardauth.address=http://authelia:9091/api/verify?auth=basic'
- 'traefik.http.middlewares.authelia-basic.forwardauth.trustForwardHeader=true'
- 'traefik.http.middlewares.authelia-basic.forwardauth.authResponseHeaders=Remote-User, Remote-Groups, Remote-Name, Remote-Email'
expose:
- 9091
networks:
- traefik_network
secrets:
hmac:
file: ./authelia/secrets/hmac
private_key:
file: ./authelia/secrets/issuer_private_key
networks:
traefik_network:
driver: bridge
traefik_internal:
driver: bridge
arr_network:
external: true
filebrowser_network:
external: true
freshrss_network:
external: true
gitea_network:
external: true
grocy_network:
external: true
jekyll_network:
external: true
jellyfin_network:
external: true
joplin_network:
external: true
photoprism_network:
external: true
podgrab_network:
external: true
portainer_network:
external: true
prometheus_network:
external: true
vaultwarden_network:
external: true
vikunja_network:
external: true
wikijs_network:
external: true
wireguard_network:
external: true
qbittorrent_network:
external: true
syncthing_network:
external: true