Capacidade de instalar e desinstalar plugins diretamente da GUI de Admin

Seria ótimo ter isso…

Para fóruns grandes, que têm alto tráfego, não é bom que o fórum fique fora do ar, pois preciso executar

./launcher rebuild app

Toda vez que instalo ou desinstalo um plugin, isso faz com que o fórum fique indisponível por um tempo e os usuários fiquem frustrados.

Seria bom ter a possibilidade de instalar/desinstalar e reconstruir/reiniciar o Discourse diretamente pela interface gráfica de administração.

Acredito que isso não seja possível devido à forma como os plugins são integrados aos recursos do aplicativo, o que precisa ser feito no momento da compilação, especialmente porque alguns elementos dos plugins impactam o back-end.

Algumas mitigações:

  1. Personalize com Componentes de Tema o máximo possível. Eles podem ser substituídos e atualizados online.

  2. Defina um conjunto de plugins e mantenha-se fiel a essa lista. Por que você precisa alterar a configuração tão frequentemente?

  3. Se você apenas precisa atualizar um plugin, use a ferramenta de atualização online.

  4. Agende a adição de novos plugins para quando você for obrigado a fazer uma recompilação devido a outras alterações fundamentais no aplicativo principal.

11 curtidas

A única recomendação real que podemos dar aqui é planejar com antecedência. Simplesmente não há substituto para isso.

Use uma instância pequena para testar e aprovar quaisquer alterações de plugin que deseje fazer, e depois agende uma janela semanal ou mensal para aplicar todas essas alterações em seu site ao vivo.

Dessa forma, seus usuários não serão significativamente afetados por essas atividades, e você reduzirá consideravelmente o risco de tempo de inatividade adicional devido a problemas de compatibilidade.

4 curtidas

Com uma configuração que possui vários contêineres web, o tempo de inatividade durante uma reconstrução pode certamente ser evitado reconstruindo/implementando um contêiner web de cada vez.

5 curtidas

Sinto muito, @Faizan_Zahid, mas você poderia ter escolhido um título melhor. Talvez você quisesse dizer “plugins” e não “Discourse”. Eu estava esperando alguém pedindo uma funcionalidade para remover o Discourse de um servidor :wink:

Você quer poder instalar/desinstalar plugins sem precisar reconstruir. Parece que não é possível, infelizmente :confused:
Então, você gostaria de minimizar o tempo de inatividade ao precisar reconstruir. Isso já foi um tema ultimamente: Ajuda com configuração de “tempo de inatividade zero” (o que não evoluiu muito para onde provavelmente deveria ter ido).

O que talvez precisemos aqui é de um bom tutorial sobre como configurar uma instalação com 2 containers web e como usá-la. Essa parece ser a configuração mais eficiente (e também provavelmente a mais complicada). Não tenho conhecimento suficiente para fazer um tutorial assim, mas se tivesse, faria. Alguém se voluntaria?

3 curtidas

Tenho o plano de assumir a tarefa de criar guias fáceis para uma variedade de casos de uso avançados, incluindo os mencionados acima. Está na lista de pendências :slight_smile:

2 curtidas

Se o seu discourse estiver usando Docker, você pode usar o instalador do Procourse.

Isso também faz uma reconstrução.

2 curtidas

Embora ainda funcione hoje, AFAIK a Procourse parou de atender clientes. Eu hesitaria muito em recomendá-lo sem um roteiro de manutenção claro.

4 curtidas

Eu não estava ciente disso. Embora, desde que nada mude significativamente na estrutura do Discourse, deve continuar funcionando. Ênfase no deve. Me pergunto se o autor permitiria que outra pessoa assumisse o projeto caso ele tenha seguido em frente.

Com o tempo, todos os plugins precisam ser atualizados. Mesmo pequenas mudanças ocasionalmente causam problemas para plugins do Discourse em desenvolvimento ativo. Simplesmente não é possível prever e, definitivamente, não é algo em que qualquer um de nós possa confiar.

Um plugin que gerencia a instalação de outros plugins e que não está sendo mantido é uma proposta muito arriscada. Confiar no otimismo para continuar usando-o parece uma ideia muito ruim.

Trabalhei apenas com dois clientes que expressaram interesse em usá-lo. Assim que ficou claro que o Procourse não existia mais, ambos ficaram ansiosos para migrar.

1 curtida

Isso se resume ao fato de que os DeVs deveriam considerar incluir esse tipo de recurso nativamente no Discourse, mesmo que como uma opção ativável via linha de comando, caso a segurança possa ser uma preocupação.

AFAIK, os desafios são mais fundamentais do que isso. Como está, a abordagem não funciona de forma alguma com multisite.

Você também não pode desinstalar plugins diretamente se, por engano, instalar algo que se revele incompatível. É necessário acesso SSH.

Li a questão sobre multi-sites. Poderia simplesmente usar uma verificação e permitir apenas se não for um multi-site usando Docker.

Então, sim, pode exigir um pouco de ajuste para fazer isso. No entanto, é algo que eles deveriam investigar para instalações de site único.

Mesmo que seja adotado como um plugin oficial para containers de site único.

Se você ler mais adiante no tópico, poderá ver o quanto a solução básica de problemas de compatibilidade de plugins se torna mais difícil.

É apenas algo que precisa estar no roteiro. Não é muito diferente, às vezes, de usar uma interface gráfica no Linux para instalar versus a linha de comando; no entanto, há alguns casos em que isso funciona bem.

Sempre que você usa instalações não oficiais, há risco de quebras. Então, por exemplo, a capacidade de ativar ou desativar um plugin como um tema ou componente de tema seria ideal.

Recentemente, tive um problema em que parece que os ícones de categoria quebraram as coisas. Mesmo usando um tema básico sem outras modificações de CSS ou componentes. Demorou um pouco para identificar a causa.

O estranho é que funciona na nossa instalação de teste separada, que executa a versão beta mais recente do Discourse.