È possibile specificare DISCOURSE_PORT accanto a DISCOURSE_HOSTNAME?

L’URL di destinazione è https://discourse.example.com:9443.
Utilizziamo un reverse proxy (nginx) su un altro server con questa configurazione:

Spoiler
server {
	listen 9443 ssl;
	listen [::]:9443 ssl;

	client_max_body_size 500m;

	server_name discourse.example.com;

	ssl_certificate /etc/ssl/certs/example.com.pem;
        ssl_certificate_key /etc/ssl/private/example.com.key;

	location / {
		proxy_pass http://10.250.26.133:3080/;
		proxy_set_header Host $host;
		proxy_set_header X-Real_IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Forwarded-Proto $scheme;
	}
}

E questo file containers/app.yml:

Spoiler
templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
#  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"

expose:
  - "3080:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"
  db_shared_buffers: "2048MB"

env:
  LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8
  LANGUAGE: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  UNICORN_WORKERS: 8

  DISCOURSE_HOSTNAME: discourse.example.com
  DISCOURSE_PORT: 9443 # <- questo non funziona

  #DOCKER_USE_HOSTNAME: true

  DISCOURSE_DEVELOPER_EMAILS: 'admin@example.com'

  DISCOURSE_SMTP_ADDRESS: smtp.example.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: example-username
  DISCOURSE_SMTP_PASSWORD: "p@ssw0rd"
  DISCOURSE_SMTP_AUTHENTICATION: login
  DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (opzionale, default true)
  DISCOURSE_SMTP_DOMAIN: example.com
  DISCOURSE_NOTIFICATION_EMAIL: discourse@example.com

  LETSENCRYPT_ACCOUNT_EMAIL: me@example.com

volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/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
          - git clone https://github.com/discourse/discourse-oauth2-basic.git
run:
  - exec: echo "Inizio dei comandi personalizzati"
  - exec: echo "Fine dei comandi personalizzati"

Ho eseguito ./launcher rebuild app.
Successivamente l’URL https://discourse.example.com:9443 funziona.

Tuttavia:

  1. Non sono riuscito a creare un utente amministratore perché Discourse mi reindirizza a un URL senza la porta 9443.
    Ho dovuto creare l’amministratore tramite console (./launcher enter app e poi rake admin:create).

  2. Non sono riuscito a registrare nessun altro utente per lo stesso motivo.

  3. Non sono riuscito a connettermi tramite Gitea OAuth perché Discourse genera l’URL di autorizzazione con un redirect_uri errato (mancanza della porta 9443 nell’URL).

Esiste un modo per specificare DISCOURSE_PORT accanto a DISCOURSE_HOSTNAME?

Non è possibile accedere a Discourse tramite un browser web su una porta non standard. Consulta Come configurare Discourse su un server con siti Apache esistenti. Esiste anche un argomento simile per nginx, ma hai bisogno solo della parte relativa a Discourse, quindi questa dovrebbe bastare.

È inoltre necessario rimuovere i template SSL e Let’s Encrypt. Inoltre, non è necessario esporre la porta 443.