Hi, I've scoured pretty much every traefik forum/stackoverflow/reddit post relating to bad gateway issues but still stumped. I'm trying to get seafile running in a docker container, I've got the traefik dashboard up and running but when I visit seafile.example.com I get a blank page with "Bad Gateway" in the corner.
From what I've read I think it is a network/port related issue with Traefik not being able to properly reach the service - but not quite sure how to diagnose this? This is probably down to me not understanding routers/services properly but any pointers would be much appreciated.
My docker-compose.yml is as follows:
version: '3.0'
networks:
web:
external: true
internal:
external: false
seafile-net:
services:
db:
image: mariadb:10.5
container_name: seafile-mysql
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_LOG_CONSOLE=true
volumes:
- /opt/seafile-mysql/db:/var/lib/mysql # Requested, specifies the path to MySQL data persistent store.
networks:
- seafile-net
- internal
labels:
- traefik.enable=false
memcached:
image: memcached:1.5.6
container_name: seafile-memcached
entrypoint: memcached -m 256
networks:
- seafile-net
- internal
labels:
- traefix.enable=false
seafile:
image: seafileltd/seafile-mc:latest
container_name: seafile
volumes:
- /opt/seafile-data:/shared
environment:
- DB_HOST=db
- DB_ROOT_PASSWD=password
- TIME_ZONE=Etc/UTC
- SEAFILE_ADMIN_EMAIL=email@example.com
- SEAFILE_ADMIN_PASSWORD=password
- SEAFILE_SERVER_LETSENCRYPT=false # Whether to use https or not.
- SEAFILE_SERVER_HOSTNAME=seafile.example.com
- SEAFILE_SERVER_URL=https://seafile.example.com
expose:
- 8000
- 8082
- 8080
labels:
- traefik.enable=true
# HTTP Router Seafile
- traefik.http.routers.seafile.rule=Host(`seafile.example.com`)
- traefik.http.routers.seafile.entrypoints=websecure
- traefik.http.routers.seafile.tls=true
- traefik.http.routers.seafile-http.middlewares=sec-headers
- traefik.http.routers.seafile.service=seafile
- traefik.http.services.seafile.loadbalancer.server.port=8000
# HTTP Router Seafdav
- traefik.http.routers.seafile-dav.rule=Host(`seafile.example.com`) && PathPrefix(`/seafdav`)
- traefik.http.routers.seafile-dav.entrypoints=websecure
- traefik.http.routers.seafile-dav.tls=true
- traefik.http.routers.seafile-dav.service=seafile-dav
- traefik.http.services.seafile-dav.loadbalancer.server.port=8080
# HTTP Router Seafhttp
- traefik.http.routers.seafile-http.rule=Host(`seafile.example.com`) && PathPrefix(`/seafhttp`)
- traefik.http.routers.seafile-http.entrypoints=websecure
- traefik.http.routers.seafile-http.tls=true
- traefik.http.routers.seafile-http.middlewares=seafile-strip
- traefik.http.routers.seafile-http.service=seafile-http
- traefik.http.services.seafile-http.loadbalancer.server.port=8082
# Middlewares
- traefik.http.middlewares.seafile-strip.stripprefix.prefixes=/seafhttp
- traefik.http.middlewares.sec-headers.headers.framedeny=true
- traefik.http.middlewares.sec-headers.headers.sslredirect=true
- traefik.http.middlewares.sec-headers.headers.browserXssFilter=true
- traefik.http.middlewares.sec-headers.headers.contentTypeNosniff=true
- traefik.http.middlewares.sec-headers.headers.forceSTSHeader=true
- traefik.http.middlewares.sec-headers.headers.stsIncludeSubdomains=true
- traefik.http.middlewares.sec-headers.headers.stsPreload=true
- traefik.http.middlewares.sec-headers.headers.referrerPolicy=same-origin
- traefik.docker.network=web
- traefik.http.routers.seafile.tls.certresolver=lets-encrypt
- traefik.http.middlewares.https-redirect.redirectscheme.scheme=https
- traefik.http.routers.https-redirect.entrypoints=web
- traefik.http.routers.https-redirect.middlewares=https-redirect
- traefik.http.routers.https-redirect.rule=Host(`seafile.example.com`)
depends_on:
- db
- memcached
networks:
- seafile-net
- web
- internal
My traefik.toml files:
[entryPoints]
[entryPoints.web]
address = ":80"
[entryPoints.web.http.redirections.entryPoint]
to = "websecure"
scheme = "https"
[entryPoints.websecure]
address = ":443"
[api]
dashboard = true
[certificatesResolvers.lets-encrypt.acme]
email = "email@example.com"
storage = "acme.json"
[certificatesResolvers.lets-encrypt.acme.tlsChallenge]
traefik_secure.toml:
[http.middlewares.simpleAuth.basicAuth]
users = [
# user info
]
[http.routers.api]
rule = "Host(`traefik.example.com`)"
entrypoints = ["websecure"]
middlewares = ["simpleAuth"]
service = "api@internal"
[http.routers.api.tls]
certResolver = "lets-encrypt"
I've checked traefik dashboard and all the container logs and can't see any issues being reported. The labels were pulled from here Help with traefik v2 labels? - Docker - Seafile Community Forum