هل هناك طريقة لتحديد DISCOURSE_PORT بجانب DISCOURSE_HOSTNAME؟

عنوان URL المستهدف هو https://discourse.example.com:9443.
نستخدم وكيل عكسي (nginx) على خادم آخر مع هذا التكوين:

تفاصيل مخفية
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;
	}
}

وهذا ملف 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 # <- هذا لا يعمل

  #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           # (اختياري، الافتراضي 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 "Beginning of custom commands"
  - exec: echo "End of custom commands"

أقوم بتشغيل ./launcher rebuild app.
ثم نحصل على عنوان URL يعمل https://discourse.example.com:9443.

لكن:

  1. لم أستطع إنشاء مستخدم مسؤول، لأن Discourse أعادتني إلى عنوان URL بدون منفذ 9443.
    اضطررت إلى إنشاء المسؤول عبر وحدة التحكم (./launcher enter app ثم rake admin:create).

  2. لم أستطع تسجيل أي مستخدم آخر لنفس السبب.

  3. لم أستطع الاتصال عبر Gitea OAuth، لأن Discourse تولد عنوان URL للتفويض بـ redirect_uri خاطئ (ينقصه منفذ 9443 في العنوان).

هل هناك طريقة لتحديد DISCOURSE_PORT بجانب DISCOURSE_HOSTNAME؟

لا يمكنك الوصول إلى Discourse عبر متصفح ويب على منفذ غير قياسي. راجع كيفية إعداد Discourse على خادم يحتوي على مواقع Apache موجودة. هناك أيضًا موضوع مشابه لـ nginx، لكنك تحتاج فقط إلى جزء Discourse، لذا يجب أن يكون هذا كافيًا لك.

كما يجب عليك إزالة قوالب SSL وLet’s Encrypt. أيضًا، لا داعي لكشف المنفذ 443.