Ho letto diversi post sull’esecuzione di Discourse dietro un proxy Traefik, ma sfortunatamente sembra che mi manchi ancora qualcosa.
Dall’host, se faccio una curl all’IP interno del container, posso vedere l’HTML della procedura guidata di configurazione di Discourse restituito e Traefik segnala che il servizio è disponibile:
Tuttavia, quando tento di connettermi al dominio che passa attraverso Traefik, vedo il certificato https previsto ma poi ottengo un 504 dopo diversi secondi.
Ecco la mia configurazione di 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
## Il container Docker è stateless; tutti i dati sono memorizzati in /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"
Ho molti altri servizi nella stessa istanza Traefik configurati in modo simile su host diversi e funzionano tutti.
Nei log di accesso di Nginx di Discourse vedo la richiesta quando faccio una curl all’IP locale, ma non quando faccio una curl al dominio.
Qualsiasi suggerimento su cosa manca? Sembra che si perda da qualche parte tra Traefik e Nginx.
