Os cookies de sessão são criptografados usando uma chave secreta gerada aleatoriamente, que, por padrão, é armazenada no Redis. Os dados do Redis não são incluídos em um backup, portanto, uma nova chave secreta é gerada quando você restaura o site em um novo servidor.
Você pode definir manualmente a chave secreta usando uma variável de ambiente DISCOURSE_SECRET_KEY_BASE no seu arquivo app.yml. Então, você pode tentar algo como isso para preservar as sessões:
-
No seu servidor existente, entre no console e encontre a chave secreta no Redis
pry(main)> GlobalSetting.safe_secret_key_base => "5fb9dc98be368599e0a..." -
Adicione
DISCOURSE_SECRET_KEY_BASEà seçãoenv:do seu app.yml no servidor antigo, usando o valor que você encontrou em (1), e reconstrua o app. Em teoria, se tudo der certo, o Discourse agora deve usar o valor do app.yml, e as sessões dos usuários serão mantidas. Você pode verificar se a variável de ambiente está sendo usada executandoGlobalSetting.secret_key_base -
Certifique-se de que o app.yml no novo servidor tenha o mesmo
SECRET_KEY_BASE. Quando você restaurar o backup, as sessões dos usuários devem ser mantidas
Eu não testei esse fluxo, então, se você planeja usá-lo em um fórum de produção, certifique-se de testá-lo primeiro!
Nota lateral: você absolutamente não deve compartilhar a chave secreta entre múltiplas instâncias do Discourse. A posse da chave secreta permitiria que alguém descriptografasse e modificasse seu cookie de sessão em um site, o que poderia ter consequências de segurança muito graves.