Вход невозможен после восстановления резервной копии Discourse на новом сервере

Здравствуйте,

Я восстановил резервную копию Discourse на новой виртуальной машине.
Сам процесс восстановления, похоже, прошел успешно. Я вижу правильный стартовый графический интерфейс.

Однако при попытке войти в систему я получаю неизвестную ошибку:

Processing by UsersController#create as */*
  Parameters: {"name"=>"Istvan XXXXXXX", "email"=>"istvan.XXXXXXXX@mailbox.org", "password"=>"[FILTERED]", "username"
=>"Istvan", "password_confirmation"=>"[FILTERED]", "challenge"=>"6662a14f4549a786ed0f37XXXXXX", "timezone"=>"Eur
ope/Berlin"}
Filter chain halted as :respond_to_suspicious_request rendered or redirected
Completed 200 OK in 3ms (Views: 0.2ms | ActiveRecord: 0.0ms | Allocations: 1007)
Started POST "/login" for 172.17.0.1 at 2021-10-13 13:37:31 +0000
Processing by StaticController#enter as HTML
  Parameters: {"username"=>"Istvan", "password"=>"[FILTERED]", "redirect"=>"/u/account-created"}
Redirected to http://discourse.XXXXXXXXX/u/account-created
Completed 302 Found in 2ms (ActiveRecord: 0.0ms | Allocations: 512)
Started GET "/u/account-created" for 172.17.0.1 at 2021-10-13 13:37:31 +0000
Processing by UsersController#account_created as HTML
  Rendered default/empty.html.erb within layouts/application (Duration: 0.1ms | Allocations: 11)
  Rendered layout layouts/application.html.erb (Duration: 60.6ms | Allocations: 36879)
Completed 200 OK in 81ms (Views: 62.1ms | ActiveRecord: 0.0ms | Allocations: 39906)
Started GET "/session/csrf" for 172.17.0.1 at 2021-10-13 13:37:48 +0000
Processing by SessionController#csrf as JSON
Completed 200 OK in 4ms (Views: 2.0ms | Allocations: 602)
Started POST "/session" for 172.17.0.1 at 2021-10-13 13:37:48 +0000
Processing by SessionController#create as */*
  Parameters: {"login"=>"Istvan", "password"=>"[FILTERED]", "second_factor_method"=>"1", "timezone"=>"Europe/Berlin"
}
Can't verify CSRF token authenticity.
  Rendered text template (Duration: 0.0ms | Allocations: 1)
Filter chain halted as :verify_authenticity_token rendered or redirected
Completed 403 Forbidden in 5ms (Views: 0.7ms | Allocations: 897)

Не могли бы вы подсказать, как решить эту проблему?

С уважением,

И.

попробуйте сбросить пароль

Я пробовал, но это не работает…

Думаю, рассылка электронных писем была отключена в старой установке (я восстановил её резервную копию).

Я.

Попробуйте проверить, включена ли опция force_https, используя консоль

SiteSetting.force_https

Если она имеет значение false, установите её в true

SiteSetting.force_https = true

Вы имеете в виду внутри контейнера Docker или в bash виртуальной машины?

Внутри Docker. Выполните это в вашей виртуальной машине

cd /var/discourse/
./launcher enter app
rails c

Спасибо, однако это уже было «true»:

image

Возможно, нужно установить значение false (у меня нет сертификата) ИЛИ мы должны использовать правильный домен. (он ещё не «CNAMEd»)

HTTPS не активирован в YAML-файле.

Почему бы и нет? Let’s Encrypt выдаёт вам сертификат бесплатно.

Если вы пытаетесь использовать IP-адрес без имени хоста, то это и есть ваша проблема. Вы должны использовать имя хоста.

Если вы не используете https, то это действительно должно быть установлено в false.

Домен «продуктивной» системы — это «https://deinbalkonnetz.de» (размещена на @discourse.). Мы перенесли её на внутреннюю виртуальную машину, которая по-прежнему имеет домен «discourse.itas-karlsruhe.de». Этот домен (без поддержки HTTPS) всё ещё используется в файле app.yml.

Каков правильный порядок переноса Discourse?

#1 перенаправление продуктивного домена на виртуальную машину?
#2 изменение app.yml на финальный домен И одновременная активация Let’s Encrypt?

Пожалуйста, подтвердите!

Спасибо.

И.

Если вы переезжаете с хостинга discourse.org, сначала отмените подписку, чтобы загрузки были включены в вашу резервную копию. В противном случае ваша резервная копия будет просто указывать на загрузки на их S3/CDN.

Я рекомендую проводить тестирование на сервере с публичным IP-адресом или, как минимум, на сервере с действующим HTTPS-сертификатом (что сложнее настроить на приватном IP).

Когда вы будете готовы к переезду, вам нужно будет изменить DNS-записи для вашего сервера и выполнить пересборку для получения сертификата Let’s Encrypt, поэтому какое-то время вы будете находиться в подвешенном состоянии, пока DNS-записи обновятся.

Хорошо. Большое спасибо.

Если вы переезжаете с хостинга discourse.org, сначала отмените подписку, чтобы загрузки были включены в резервную копию. Иначе ваша резервная копия будет просто ссылаться на загрузки на их S3/CDN.

Я запросил новую резервную копию…

Рекомендую проводить тестирование на сервере с публичным IP-адресом или хотя бы с валидным HTTPS-сертификатом (что сложнее настроить на приватном IP).

Я отключу HTTPS в «rail c», чтобы просто войти в систему. После входа проверю, активирован ли плагин Let’s Encrypt (или это нужно сделать через app.yml)? Если он активирован, я включу HTTPS для временного домена. Если всё сработает, мы перенаправим финальный домен на виртуальную машину и пересоберём приложение с этим доменом.

Кажется, это правильный план… верно?

Здравствуйте,

после отключения HTTPS через SiteSetting.force_https = false сайт стал доступен, и я смог войти в систему как администратор сайта.

Я настроил Let’s Encrypt, следуя описанным шагам:
(Set up HTTPS support with Let's Encrypt)

После пересборки сайта ничего не заработало — сайт стал недоступен в браузере…

Есть ли способ проверить, что пошло не так?

С уважением,

И.