Y a-t-il un moyen de spécifier DISCOURSE_PORT à côté de DISCOURSE_HOSTNAME ?

L’URL cible est https://discourse.example.com:9443.
Nous utilisons un proxy inverse (nginx) sur un autre serveur avec cette configuration :

Спойлер
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;
	}
}

Et ce fichier containers/app.yml :

Спойлер
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 # <- cela ne fonctionne pas

  #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           # (optionnel, valeur par défaut 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 "Début des commandes personnalisées"
  - exec: echo "Fin des commandes personnalisées"

J’exécute ./launcher rebuild app.
Ensuite, l’URL https://discourse.example.com:9443 fonctionne.

Mais :

  1. Je n’ai pas pu créer un utilisateur administrateur, car Discourse me redirige vers une URL sans le port 9443.
    J’ai dû créer l’administrateur via la console (./launcher enter app puis rake admin:create).

  2. Je n’ai pas pu enregistrer d’autres utilisateurs pour la même raison.

  3. Je n’ai pas pu me connecter avec Gitea OAuth, car Discourse génère une URL d’autorisation avec un redirect_uri incorrect (le port 9443 manque dans l’URL).

Existe-t-il un moyen de spécifier DISCOURSE_PORT à côté de DISCOURSE_HOSTNAME ?

Vous ne pouvez pas accéder à Discourse via un navigateur web sur un port non standard. Consultez Comment configurer Discourse sur un serveur avec des sites Apache existants. Il existe également un sujet similaire pour nginx, mais vous n’avez besoin que de la partie Discourse, ce qui devrait suffire.

Vous devez également supprimer les modèles SSL et Let’s Encrypt. De plus, il n’est pas nécessaire d’exposer le port 443.