J’ai lu plusieurs articles sur l’exécution de Discourse derrière un proxy Traefik, mais malheureusement, il semble qu’il me manque encore quelque chose.
Depuis l’hôte, si j’utilise curl sur l’adresse IP interne du conteneur, je peux voir le HTML de l’assistant de configuration de Discourse renvoyé et Traefik signale que le service est disponible :
Cependant, lorsque j’essaie de me connecter au domaine qui passe par Traefik, je peux voir le certificat HTTPS attendu, mais j’obtiens ensuite une erreur 504 après plusieurs secondes.
Voici ma configuration Discourse :
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
expose:
#- "80:80" # http
#- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
DISCOURSE_HOSTNAME: 'redacted'
DISCOURSE_DEVELOPER_EMAILS: 'redacted'
DISCOURSE_SMTP_ADDRESS: smtp.postmarkapp.com
DISCOURSE_SMTP_USER_NAME: redacted
DISCOURSE_SMTP_PASSWORD: redacted
DISCOURSE_NOTIFICATION_EMAIL: noreply@redacted
## Le conteneur Docker est sans état ; toutes les données sont stockées dans /shared
volumes:
- volume:
host: /opt/discourse/shared/standalone
guest: /shared
- volume:
host: /opt/discourse/shared/standalone/log/var-log
guest: /var/log
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
docker_args:
- "-l traefik.enable=true"
- "-l traefik.http.routers.discourse.tls=true"
- "-l traefik.http.routers.discourse.rule=Host(`redacted`)"
- "-l traefik.http.routers.discourse.entrypoints=websecure"
- "-l traefik.http.routers.discourse.tls.certresolver=ledns"
- "-l traefik.http.services.discourse.loadbalancer.server.port=80"
- "-l traefik.http.services.discourse.loadbalancer.server.scheme=http"
run:
- exec: echo "Beginning of custom commands"
- exec: echo "End of custom commands"
J’ai de nombreux autres services dans la même instance Traefik configurés de manière similaire sur différents hôtes et ils fonctionnent tous.
Dans les journaux d’accès Nginx de Discourse, je peux voir la requête lorsque j’utilise curl sur l’adresse IP locale, mais pas lorsque j’utilise curl sur le domaine.
Des suggestions sur ce qui manque ? Il semble que quelque chose se perde entre Traefik et Nginx.
