Сброс пароля не работает для Discourse 2.6.0.beta2

Всем привет!

Я использую установку Discourse 2.6.0.beta2 через Docker за прокси Nginx. К сожалению, пользователи не могут сбросить свои пароли. Письмо со ссылкой приходит, но ссылка, кажется, нерабочая, независимо от того, как быстро вы попытаетесь её использовать. При нажатии на ссылку сброса пароли из письма появляется грустный смайлик :frowning: и сообщение «Что-то пошло не так».

В панели администратора (https://mysite/logs/) я не вижу никаких логов, связанных с этим событием. И что ещё странно, контейнер Docker тоже ничего не логирует:

Это вывод команды

docker logs app


run-parts: executing /etc/runit/1.d/00-ensure-links
run-parts: executing /etc/runit/1.d/00-fix-var-logs
run-parts: executing /etc/runit/1.d/anacron
run-parts: executing /etc/runit/1.d/cleanup-pids
Cleaning stale PID files
run-parts: executing /etc/runit/1.d/copy-env
Started runsvdir, PID is 39
chgrp: invalid group: ‘syslog’
ok: run: redis: (pid 52) 0s
ok: run: postgres: (pid 50) 0s
rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
rsyslogd: activation of module imklog failed [v8.1901.0 try https://www.rsyslog.com/e/2145 ]
supervisor pid: 55 unicorn pid: 78
(55) Reopening logs

мой файл app.yml



## это шаблон контейнера Docker Discourse «всё в одном», автономный
##
## После внесения изменений в этот файл вы ОБЯЗАНЫ выполнить пересборку
## /var/discourse/launcher rebuild app
##
## БУДЬТЕ *ОЧЕНЬ* ОСТОРОЖНЫ ПРИ РЕДАКТИРОВАНИИ!
## YAML-ФАЙЛЫ ЧРЕЗВЫЧАЙНО ЧУВСТВИТЕЛЬНЫ К ОШИБКАМ В ПРОБЕЛАХ И ВЫРАВНИВАНИИ!
## посетите http://www.yamllint.com/, чтобы при необходимости проверить этот файл

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Раскомментируйте эти две строки, если хотите добавить Lets Encrypt (https)
#  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"

## какие TCP/IP-порты должен открывать этот контейнер?
## Если вы хотите, чтобы Discourse использовал один порт с другим веб-сервером, например Apache или nginx,
## см. https://meta.discourse.org/t/17247 для деталей
expose:
#  - 3040
  - "127.0.0.1:3040:80"

params:
  db_default_text_search_config: "pg_catalog.english"
  upload_size: 20m

  ## Установите db_shared_buffers максимум на 25% от общего объёма памяти.
  ## будет установлено автоматически при загрузке на основе обнаруженной оперативной памяти, либо вы можете переопределить
  db_shared_buffers: "128MB"

  ## может улучшить производительность сортировки, но увеличивает использование памяти на подключение
  #db_work_mem: "40MB"

  ## Какую ревизию Git должен использовать этот контейнер? (по умолчанию: tests-passed)
  #version: tests-passed

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

  ## Сколько одновременных веб-запросов поддерживается? Зависит от памяти и ядер CPU.
  ## будет установлено автоматически при загрузке на основе обнаруженных процессоров, либо вы можете переопределить
  UNICORN_WORKERS: 2

  ## TODO: Доменное имя, на которое будет реагировать этот экземпляр Discourse
  ## Обязательно. Discourse не будет работать с чистым IP-адресом.
  VIRTUAL_HOST: $$$$$$$$$$$$$$$$$$$$$$
  VIRTUAL_PORT: 80
  LETSENCRYPT_HOST: $$$$$$$$$$$$$$$$$$$$$44
  LETSENCRYPT_EMAIL: $$$$$$$$$$$$$$$$$$$4
  DISCOURSE_HOSTNAME: $$$$$$$$$$$$$$$$$

  ## Раскомментируйте, если хотите, чтобы контейнер запускался с тем же
  ## именем хоста (опция -h), что указано выше (по умолчанию "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Список email-адресов через запятую, которые станут администраторами и разработчиками
  ## при первоначальной регистрации, например 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: '$$$$$$$$$$$'

  ## TODO: SMTP-сервер, используемый для проверки новых аккаунтов и отправки уведомлений
  ## SMTP-адрес, имя пользователя и пароль обязательны
  ## ВНИМАНИЕ: символ '#' в пароле SMTP может вызвать проблемы!
  DISCOURSE_SMTP_ADDRESS: $$$$$$$$$$$$$$$
  DISCOURSE_SMTP_PORT: $$$$$$$$$$$$
  DISCOURSE_SMTP_USER_NAME: $$$$$$$$$$$$$$$$$$$
  DISCOURSE_SMTP_PASSWORD: "$$$$$$$$$$$$$$$$"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (опционально, по умолчанию true)

  ## Если вы добавили шаблон Lets Encrypt, раскомментируйте ниже, чтобы получить бесплатный SSL-сертификат
 # LETSENCRYPT_ACCOUNT_EMAIL: $$$$$$$$$$$$$$$

  ## Адрес CDN http или https для этого экземпляра Discourse (настроен на извлечение)
  ## см. https://meta.discourse.org/t/14857 для деталей
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

## Контейнер Docker не сохраняет состояние; все данные хранятся в /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Плагины размещаются здесь
## см. https://meta.discourse.org/t/19157 для деталей
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
#          - git clone https://github.com/discourse/discourse-chat-integration.git

## Любые пользовательские команды для выполнения после сборки
run:
  - replace:
      filename: /etc/nginx/conf.d/discourse.conf
      from: "types {"
      to: |
        set_real_ip_from 172.18.0.0/24;
        real_ip_header X-Forwarded-For;
        real_ip_recursive on;
        types {

docker_args:
  - "--network=nginx-proxy"

Вы получили правильную ссылку? Она должна выглядеть примерно так: https://forum.example.com/u/password-reset/6a34c2454cf11a6707a23591e6c417ba

Привет, Герхард, спасибо за ваш ответ.

Ссылка, похоже, в порядке. В моей ссылке используется “users” вместо “u”.

https://forum.example.com/users/password-reset/23e410a2c11e576c38b1df68f112f88d

Привет,
Я протестировал на двух своих экземплярах. Та же ошибка.
Похоже, что сгенерированная ссылка неверна.
Если изменить:
users → u
то всё работает :slight_smile:

Я могу подтвердить, что предложенное @napcok обходное решение работает. Однако я бы не назвал это решением. Может быть, вы сможете подсказать, как решить эту проблему?

Похоже, это влияет только на польский и турецкий языки.

Я отправил pull request с исправлением для этого.

Я думаю, это должно быть сделано здесь:

и здесь:

Так как я не знаю турецкого, польского или Crowdin, я воздержусь от каких-либо попыток :sweat_smile:

Отредактировано в Crowdin.
Закрыл свой pull request на Github.

Спасибо! Я обновил переводы в репозитории Discourse. Они должны попасть в ветку tests-passed очень скоро.

Спасибо! Обновил оба форума, всё работает отлично :slight_smile: