version: '3' services: reverse-proxy: image: traefik:2.7.3 command: --api=false --api.dashboard=false --providers.docker networks: - internal-nw - default ports: - 127.0.0.1:1314:80 restart: always volumes: # So that traefik can listen to the Docker events - /var/run/docker.sock:/var/run/docker.sock:ro homepage: build: context: . image: homepage networks: - internal-nw restart: always labels: - traefik.enable=true - traefik.http.services.homepage.loadbalancer.server.port=80 - traefik.http.routers.homepage.rule=Host(`localhost`) || Host(`127.0.0.1`) || Host(`homepage`) || Host(`6426tqrh4y5uobmo5y2csaip3m3avmjegd2kpa24sadekpxglbm34aqd.onion`) # ref: https://stackoverflow.com/a/61976953 # ref: https://github.com/traefik/traefik/issues/563 - "traefik.http.routers.homepage.middlewares=homepage-redirectregex, homepage-replacepathregex" - "traefik.http.middlewares.homepage-replacepathregex.replacepathregex.regex=^/tags/(.*)$$" - "traefik.http.middlewares.homepage-replacepathregex.replacepathregex.replacement=https://dotya.ml/tags/$$1/" - "traefik.http.middlewares.homepage-redirectregex.redirectregex.regex=^/tags$$" - "traefik.http.middlewares.homepage-redirectregex.redirectregex.replacement=https://dotya.ml/tags/" - "traefik.frontend.redirect.regex=^https://dotya.ml/tags/(.*)$$" - "traefik.frontend.redirect.replacement=https://dotya.ml/tags/$$1/" - "traefik.frontend.rule=PathPrefix:/tags;ReplacePathRegex: ^/tags/(.*) /tags/$$1/" logging: driver: json-file options: max-size: "5m" max-file: "5" networks: internal-nw: internal: true default: