Preservando sessões de usuário durante a migração entre hosts

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:

  1. No seu servidor existente, entre no console e encontre a chave secreta no Redis

    pry(main)> GlobalSetting.safe_secret_key_base
    => "5fb9dc98be368599e0a..."
    
  2. Adicione DISCOURSE_SECRET_KEY_BASE à seção env: 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 executando

    GlobalSetting.secret_key_base
    
  3. 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.