I can't get Ghost working on docker with https, neither with subdomain or path prefix; I always get 404 by trying to get on blog.domain.dev
or domain.dev/blog
but I DO can reach the service on domain.dev:4080
so it isn't a container image issue.
On the other hand, I manage to get Portainer working but only in a subdomain portainer.domain.dev
and not with PathPrefix on domain.dev/portainer
even though I setup stripprefix
, same error, 404 page not found. This are all my configurations:
ghost_docker.yml:
version: '3.7'
services:
ghost:
image: ghost:alpine
container_name: "ghost"
restart: unless-stopped
ports:
- "4080:2368"
environment:
url: https://domain.dev
volumes:
- ./content:/var/lib/ghost/content
labels:
- "traefik.enable=true"
- "traefik.http.routers.blog.entrypoints=https"
- "traefik.http.routers.blog.rule=Host(`domain.dev`)" || Host(`domain.dev`)&&PathPrefix(`/blog`)"
- "traefik.http.routers.blog.tls=true"
- "traefik.http.routers.blog.certresolver=leresolver"
# setup middlewares
- "traefik.http.middlewares.blog_fixprefix.stripprefix.prefixes=/blog"
# register middlewares
- "traefik.http.routers.blog.middlewares=blog_fixprefix"
portainer_docker.yml:
version: "3.7"
services:
portainer:
image: portainer/portainer
container_name: portainer
command: --admin-password='<hashh>'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/data
labels:
- "traefik.enable=true"
- "traefik.http.routers.portainer.entrypoints=https"
- "traefik.http.routers.portainer.rule=Host(`portainer.domain.dev`) || Host(`domain.dev`)&&PathPrefix(`/portainer`)"
- "traefik.http.routers.portainer.tls=true"
- "traefik.http.routers.portainer.tls.certresolver=leresolver"
- "traefik.http.middlewares.portainer_fixprefix.stripprefix.prefixes=/portainer"
- "traefik.http.routers.blog.middlewares=portainer_fixprefix"
networks:
default:
external:
name: traefik
traefik_docker.yml:
version: '3.7'
services:
traefik:
image: traefik:latest
container_name: traefik
restart: always
networks:
- traefik
ports:
- 80:80
- 443:443
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik.yml:/traefik.yml:ro
- ./acme.json:/acme.json
labels:
- "traefik.enable=true"
# ping service
- "traefik.http.routers.ping.rule=Host(`domain.dev`)&&Path(`/ping`)"
- "traefik.http.routers.ping.service=ping@internal"
- "traefik.http.routers.ping.tls.certresolver=leresolver"
- "traefik.http.routers.ping.tls=true"
# middleware redirect
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
# global redirect to https
- "traefik.http.routers.redirs.rule=hostregexp(`{host:.+}`)"
- "traefik.http.routers.redirs.entrypoints=http"
- "traefik.http.routers.redirs.middlewares=redirect-to-https"
# traefik dashboard
- "traefik.http.routers.traefik.entrypoints=https"
- "traefik.http.routers.traefik.rule=Host(`domain.dev`)&&PathPrefix(`/traefik`)"
- "traefik.http.routers.traefik.tls=true"
- "traefik.http.routers.traefik.tls.certresolver=leresolver"
- "traefik.http.routers.traefik.service=api@internal"
# setup middlewares
- "traefik.http.middlewares.simpleauth.basicauth.users=admin:<hashh>"
- "traefik.http.middlewares.traefik_fixprefix.stripprefix.prefixes=/traefik"
# register middlewares
- "traefik.http.routers.traefik.middlewares=traefik_fixprefix,simpleauth"
networks:
traefik:
name: traefik
traefik.yml:
api:
dashboard: true
log:
level: DEBUG
entryPoints:
http:
address: ":80"
https:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
certificatesResolvers:
leresolver:
acme:
email: me@domain.dev
storage: acme.json
httpChallenge:
# used during the challenge
entryPoint: http
ping:
entryPoint: "https"
manualRouting: true
It's worth mentioning I managed to configure wordpress with both subdomain and pathprefix and everything was ok.
I would appreciate your help, I have tried for almost 2 days so far.