Como tornar um site importado inacessível para usuários existentes, mas apenas para a equipe e serviços como CDN que precisam ser configurados?

Contexto: Estou importando um fórum vBulletin para o Discourse.

Gostaria de configurar coisas como CDN, backups remotos, etc., antes de permitir que os usuários existentes acessem o conteúdo do fórum.
Prefiro não colocar o fórum em modo somente leitura, pois seria frustrante para os usuários, após alguns meses, finalmente verem o conteúdo novamente (e atualizado!), mas não poderem interagir. Nesse contexto, se o conteúdo estiver disponível, ele também deve ser interativo.

Então, basicamente, preciso que o Discourse esteja disponível para a equipe, mas exiba uma página de “manutenção” para outros usuários, mesmo que eles possam teoricamente fazer login, e ainda assim permitir que meu site se comunique com serviços como o CDN para que eu possa configurá-los adequadamente.

Qual é a maneira mais fácil de fazer isso?

AFAIK, a maneira mais simples é configurar o site como login obrigatório, ativar aprovar usuários e apontar o SMTP para algo como o MailHog. Não me lembro se o importador aprova os usuários automaticamente; se fizer isso, você pode executar algo como o seguinte no console do Rails:

approved_users = AdminUserIndexQuery.new(query: 'approved', stats: false).find_users_query

approved_users.each do |u|
  u.approved = false
  u.save!
end

Depois, desative a aprovação quando estiver pronto.

Dessa forma, nenhuma mensagem será enviada publicamente durante a migração, e você poderá visualizar todas as mensagens geradas pelo Discourse caso algo dê errado.

A menos que você opte por migrar as senhas, os usuários terão que redefinir suas credenciais de qualquer forma.

Obrigado pela resposta!

Depois de pensar um pouco, acho que vou simplesmente deixar esta página:

Mas ocultarei os botões de login temporariamente, além de substituir a frase por algo como “Em construção. Fique ligado!”

Os usuários que tentarem fazer login em /login não conseguirão de qualquer forma, já que a importação de senhas não funcionou e os e-mails para não membros da equipe estão desativados, então eles não poderão fazer login com e-mail nem redefinir sua senha.

Acho que essa solução pode atender ao que preciso, certo?

Eu recomendaria o Mailhog ou uma solução similar, apenas para garantir que o Discourse não esteja gerando pilhas de e-mails de notificação.

Sem visibilidade, você corre o risco de abrir as comportas ao reativar o e-mail.

Posso ver os e-mails pendentes em algum lugar?

Claro, é isso que o Mailhog faz. Ele aceita mensagens, exibe a fila e oferece a opção de liberar os e-mails para as caixas de entrada.