Este guia explica os vários modos de somente leitura disponíveis no Discourse, como habilitá-los e desabilitá-los, e os cenários em que você pode querer usar cada modo.
Nível de usuário necessário: Administrador
Gerenciar uma comunidade online vibrante no Discourse ocasionalmente exige que os administradores limitem temporariamente as atividades dos usuários. Essas situações podem variar desde a execução de manutenção no servidor, facilitando backups ou migrando servidores. Durante esses períodos, é crucial restringir as atividades do fórum sem desligar completamente o acesso dos usuários.
O Discourse oferece vários Modos de Somente Leitura que os administradores podem ativar para congelar temporariamente diferentes tipos de interações dentro de um site.
Este guia explora esses modos, focando especificamente em como habilitá-los e desabilitá-los, incluindo o tratamento de situações em que certos modos se sobrepõem.
Entendendo os Modos de Somente Leitura
O Discourse suporta dois níveis diferentes de modos de somente leitura, adaptados para atender a diversas necessidades administrativas. Eles são:
- Modo de Somente Leitura Total
- Restringe todas as operações de escrita no fórum, impedindo que qualquer usuário crie ou modifique conteúdo, como postar, comentar ou curtir.
- Permite que o fórum seja essencialmente “congelado” em seu estado atual, permitindo que os usuários ainda leiam e naveguem pelo conteúdo existente sem impactar o banco de dados.
- Desabilita a alteração de quaisquer configurações do site de administrador ou personalizações do site, para que o estado atual do banco de dados seja preservado.
- Desabilita novos logins no fórum para usuários comuns. Os administradores ainda podem fazer login usando o fluxo de login por e-mail de administrador (
/u/admin-login). - Chamadas de API podem ler (GET), mas não podem escrever (POST/PUT/DELETE).
- Webhooks de saída em fila serão entregues, mas nenhum novo webhook será acionado, pois as ações que os acionariam serão bloqueadas.
- Webhooks de entrada (bounce de e-mail) serão bloqueados com uma resposta 503. Os provedores de e-mail tentarão novamente de acordo com seus próprios cronogramas de backoff.
- Modo de Escrita Apenas para Equipe
- Restringe usuários padrão de operações de escrita no fórum, como postar, comentar ou curtir. Usuários não pertencentes à equipe são limitados a operações de somente leitura, mas ainda podem fazer login em suas contas.
- Permite que as atividades de Administrador e Moderador continuem normalmente. Os administradores podem alterar as configurações do site, e os usuários da equipe podem realizar operações de escrita, como postar, curtir ou modificar perfis.
- Chamadas de API podem ler (GET). Apenas chaves de API de equipe podem escrever (POST/PUT/DELETE).
- Webhooks de saída em fila serão entregues. Ações da equipe podem acionar novos webhooks de saída, que também serão bem-sucedidos, mas nenhuma ação de usuário não pertencente à equipe acionará webhooks.
- Webhooks de entrada (bounce de e-mail) serão bloqueados com uma resposta 503. Os provedores de e-mail tentarão novamente de acordo com seus próprios cronogramas de backoff.
Esses modos garantem flexibilidade na gestão da operabilidade do fórum durante períodos administrativos críticos.
Como Habilitar/Desabilitar Modos de Somente Leitura
Os administradores devem gerenciar cuidadosamente a transição entre diferentes modos de somente leitura. Antes de habilitar qualquer modo de somente leitura, certifique-se de que qualquer um ativado anteriormente foi desabilitado.
Modo de Somente Leitura Total
Via Rails Console
Se você tiver acesso à sua instalação do Discourse, use a interface de linha de comando do Discourse Rails para executar o seguinte comando após entrar no seu contêiner Docker com ./launcher enter app e, em seguida, o console Rails com rails c:
Discourse.enable_readonly_mode(Discourse::USER_READONLY_MODE_KEY)
Via Painel Administrativo
Se você tiver acesso administrativo através da interface web, pode navegar para Admin > Backups > Enable Read-Only Mode para habilitar o modo de somente leitura.
Para desabilitar o Modo de Somente Leitura, execute o seguinte comando do Rails:
Discourse.disable_readonly_mode(Discourse::USER_READONLY_MODE_KEY)
Ou, use o painel administrativo navegando para Admin > Backups > Disable Read-Only Mode.
Modo de Escrita Apenas para Equipe
O modo de Escrita Apenas para Equipe só pode ser habilitado/desabilitado a partir do console Rails do Discourse. Se seu site for hospedado pelo Discourse, entre em contato com team@discourse.org se desejar habilitar ou desabilitar qualquer um desses modos.
Para habilitar o Modo de Escrita Apenas para Equipe, use o seguinte comando do console Rails:
Discourse.enable_readonly_mode(Discourse::STAFF_WRITES_ONLY_MODE_KEY)
Para desabilitar:
Discourse.disable_readonly_mode(Discourse::STAFF_WRITES_ONLY_MODE_KEY)
Melhores Práticas
- Comunicação Pontual: Informe sua comunidade sobre períodos de somente leitura agendados com antecedência para definir expectativas adequadas.
- Testes: Antes de implementar esses modos durante operações críticas, realize testes em períodos de baixo tráfego para entender seu impacto.
- Documentação: Mantenha registros detalhados de quando e por que cada modo foi habilitado ou desabilitado para auxiliar no planejamento operacional futuro.
FAQs
-
Quanto tempo leva para habilitar/desabilitar o Modo de Somente Leitura?
- A mudança é imediata. No entanto, a experiência do usuário pode variar ligeiramente dependendo de suas ações durante o período de transição.
-
Ajuda! Estou bloqueado fora do meu site por causa do modo de somente leitura - o que posso fazer para acessar meu site novamente?
-
Notei que existem outros modos
READ-ONLYlistados em discourse/lib/discourse.rb, o que esses modos fazem?READONLY_MODE_KEYé usado principalmente para o processo de backup e restauração e é acionado pelo próprio aplicativo. Este modo também pode ser habilitado ou desabilitado a partir da interface de linha de comando do Discourse comdiscourse enable_readonlyediscourse disable_readonly. No entanto, essa chave não sobreviverá a uma reinicialização do contêiner.USER_READONLY_MODE_KEYé usado quando um administrador clica no botão de somente leitura na interface administrativa. O especial sobre essa chave é que não a definimos como uma chave expirável, pois o modo de somente leitura habilitado por um usuário precisa sobreviver a reinicializações do contêiner. Outras chaves são definidas com um TTL (60 segundos paraREADONLY_MODE_KEY, 300 segundos paraPG_READONLY_MODE_KEY) e temos uma thread para estender o vencimento a cada 30 segundos para garantir que um aplicativo nunca fique preso no modo de somente leitura.PG_READONLY_MODE_KEYePG_FORCE_READONLY_MODE_KEYsão usados para failover do PG. O primeiro é definido como uma chave expirável, enquanto o último é não expirável.

