165 lines
5.5 KiB
YAML
165 lines
5.5 KiB
YAML
services:
|
|
traefik:
|
|
image: "traefik:v2.10.4"
|
|
container_name: "traefik"
|
|
privileged: true
|
|
command:
|
|
- "--log.level=DEBUG"
|
|
- "--api.insecure=true"
|
|
- "--providers.docker=true"
|
|
- "--providers.docker.exposedbydefault=false"
|
|
- "--entrypoints.web.address=:80"
|
|
- "--entrypoints.pukekos.address=:443"
|
|
- "--entrypoints.web.http.redirections.entrypoint.to=pukekos"
|
|
- "--certificatesresolvers.takaheresolver.acme.dnschallenge=true"
|
|
- "--certificatesresolvers.takaheresolver.acme.dnschallenge.provider=cloudflare"
|
|
# - "--certificatesresolvers.takaheresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
|
|
- "--certificatesresolvers.takaheresolver.acme.email=matanhorovitz@protonmail.com"
|
|
- "--certificatesresolvers.takaheresolver.acme.storage=/certs/acme.json"
|
|
- "--certificatesresolvers.takaheresolver.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:
|
|
- "./certs:/certs"
|
|
- "/var/run/docker.sock:/var/run/docker.sock"
|
|
networks:
|
|
- network
|
|
- internal
|
|
- arr_network
|
|
- filebrowser_network
|
|
- gitea_network
|
|
- vaultwarden_network
|
|
- vikunja_network
|
|
- jellyfin_network
|
|
- joplin_network
|
|
- photoprism_network
|
|
- portainer_network
|
|
- prometheus_network
|
|
- qbittorrent_network
|
|
- syncthing_network
|
|
- wikijs_network
|
|
- wikijs_study_instance_network
|
|
- wireguard_network
|
|
restart: unless-stopped
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.domain.entrypoints=pukekos"
|
|
- "traefik.http.routers.domain.rule=Host(`pukeko.xyz`)"
|
|
- "traefik.http.routers.domain.tls.certresolver=takaheresolver"
|
|
- "traefik.http.routers.domain.middlewares=domain"
|
|
- 'traefik.http.middlewares.domain.redirectregex.regex=^https://pukeko.xyz/(.*)'
|
|
- 'traefik.http.middlewares.domain.redirectregex.replacement=https://dash.pukeko.xyz/$${1}'
|
|
- "traefik.http.middlewares.domain.redirectregex.permanent=true"
|
|
- "traefik.tls.stores.default.defaultgeneratedcert.resolver=takaheresolver"
|
|
- "traefik.tls.stores.default.defaultgeneratedcert.domain.main=pukeko.xyz"
|
|
# user: 1001:1001
|
|
homer:
|
|
image: b4bz/homer
|
|
container_name: homer
|
|
volumes:
|
|
- ./homer/:/www/assets
|
|
ports:
|
|
- 4957:8080
|
|
environment:
|
|
- UID=1000
|
|
- GID=1000
|
|
restart: unless-stopped
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.homer.entrypoints=pukekos"
|
|
- "traefik.http.routers.homer.rule=Host(`dash.pukeko.xyz`)"
|
|
- "traefik.http.routers.homer.service=homer-traefik@docker"
|
|
- "traefik.http.routers.homer.tls.certresolver=takaheresolver"
|
|
- "traefik.http.routers.homer.middlewares=authelia@docker"
|
|
networks:
|
|
- internal
|
|
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=pukekos'
|
|
- "traefik.http.routers.authelia.service=authelia-traefik@docker"
|
|
- 'traefik.http.routers.authelia.tls=true'
|
|
- "traefik.http.routers.authelia.tls.certresolver=takaheresolver"
|
|
- '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'
|
|
networks:
|
|
- internal
|
|
expose:
|
|
- 9091
|
|
redis:
|
|
image: redis:alpine
|
|
container_name: authelia_redis
|
|
volumes:
|
|
- ./redis:/data
|
|
networks:
|
|
- internal
|
|
expose:
|
|
- 6379
|
|
restart: unless-stopped
|
|
secrets:
|
|
hmac:
|
|
file: ./authelia/secrets/hmac
|
|
private_key:
|
|
file: ./authelia/secrets/issuer_private_key
|
|
networks:
|
|
network:
|
|
driver: bridge
|
|
internal:
|
|
driver: bridge
|
|
arr_network:
|
|
external: true
|
|
filebrowser_network:
|
|
external: true
|
|
gitea_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
|
|
wikijs_study_instance_network:
|
|
external: true
|
|
wireguard_network:
|
|
external: true
|
|
qbittorrent_network:
|
|
external: true
|
|
syncthing_network:
|
|
external: true
|