Impossible de se connecter après la récupération d'une sauvegarde Discourse sur un nouveau serveur

Bonjour,

J’ai restauré une sauvegarde Discourse sur une nouvelle machine virtuelle (VM).
La restauration elle-même semble fonctionner. Je vois l’interface graphique de démarrage correcte.

Cependant, lorsque j’essaie de me connecter, je reçois une erreur inconnue :

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)

Auriez-vous une idée de la manière de résoudre ce problème ?

Cordialement,

I.

essayez de réinitialiser votre mot de passe

J’ai essayé, mais cela ne fonctionne pas…

Je pense que les messages e-mail ont été désactivés dans l’ancienne installation (j’ai récupéré la sauvegarde).

I.

Essayez de vérifier si force_https est activé en utilisant la console

SiteSetting.force_https

Si la valeur est false, définissez-la sur true

SiteSetting.force_https = true

Vous voulez dire, dans le conteneur Docker ou dans le bash de la VM ?

Dans Docker. Faites ceci dans votre VM

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

Merci, c’était cependant déjà « true » :

image

Peut-être faut-il le définir sur false (je n’ai pas de certificat) ou alors utiliser le bon domaine. (il n’est pas encore « CNAMÉ »)

HTTPS n’est pas activé dans le fichier YAML.

Pourquoi pas ? Let’s Encrypt vous en fournit un gratuitement.

Si vous essayez d’utiliser une adresse IP sans nom d’hôte, c’est là que réside votre problème. Vous devez utiliser un nom d’hôte.

Si vous n’utilisez pas HTTPS, il doit en effet être défini à false.

Le domaine du système « productif » est « https://deinbalkonnetz.de » (hébergé sur Discourse). Nous l’avons déplacé vers une machine virtuelle interne, qui conserve toujours le domaine « discourse.itas-karlsruhe.de ». Ce domaine (sans support HTTPS) est toujours utilisé dans app.yml.

Quelle est la bonne séquence pour déplacer Discourse ?

#1 Rediriger le domaine productif vers la machine virtuelle ?
#2 Modifier app.yml pour utiliser le domaine final ET activer Let’s Encrypt en même temps ?

Merci de confirmer !

Merci.
I.

Si vous quittez l’hébergement de discourse.org, vous devez d’abord annuler votre abonnement afin que les fichiers uploadés soient inclus dans votre sauvegarde. Sinon, votre sauvegarde pointera simplement vers les fichiers hébergés sur leur S3/CDN.

Je vous recommande de réaliser vos tests sur un serveur disposant d’une adresse IP publique, ou à défaut d’un certificat HTTPS valide (ce qui est plus difficile à configurer sur une adresse IP privée).

Lorsque vous serez prêt à effectuer la migration, vous devrez modifier les enregistrements DNS de votre serveur et reconstruire l’instance pour obtenir un certificat Let’s Encrypt. Vous serez donc dans une période d’attente pendant la propagation des DNS.

D’accord. Merci beaucoup.

Si vous quittez l’hébergement de discourse.org, vous devez d’abord annuler votre abonnement afin que les pièces jointes soient incluses dans votre sauvegarde. Sinon, votre sauvegarde contiendra simplement des liens vers les pièces jointes sur leur S3/CDN.

J’ai demandé une nouvelle sauvegarde…

Je vous recommande de faire vos tests sur un serveur disposant d’une adresse IP publique, ou à tout le moins d’un certificat HTTPS valide (ce qui est plus difficile à configurer sur une adresse IP privée).

Je vais désactiver HTTPS sur « rail c » juste pour pouvoir me connecter. Après la connexion, je vérifierai si l’extension Let’s Encrypt est activée (ou doit-elle être configurée via app.yml) ? Si elle est activée, j’activerai HTTPS pour le domaine temporaire. Si tout fonctionne, nous redirigerons le domaine final vers la VM et nous reconstruirons l’application avec ce domaine.

Je pense que c’est une feuille de route appropriée… n’est-ce pas ?

Bonjour,

Après avoir désactivé HTTPS avec SiteSetting.force_https = false, le site est redevenu accessible et j’ai pu me connecter en tant qu’administrateur du site.

J’ai configuré Let’s Encrypt en suivant les étapes décrites ici :
(Set up HTTPS support with Let's Encrypt)

Après avoir reconstruit le site, rien ne fonctionne : aucune page n’est accessible dans le navigateur…

Y a-t-il un moyen de vérifier ce qui a mal tourné ?

Cordialement,

I.