Como Instalar Plugins do Discourse Hospedados em Repositórios Privados Usando Chave SSH?

Segui o guia oficial do Discourse para instalar plugins em um site auto-hospedado (tutorial oficial), mas ele é de 2014 e tenho certeza de que muitas informações estão desatualizadas.\n\nTambém tentei algumas das soluções mais recentes e recomendadas compartilhadas nas respostas da discussão, como montar chaves SSH via volumes e configurar o acesso SSH durante o processo de inicialização. Infelizmente, apesar desses esforços, ainda não consegui clonar e instalar plugins de meus repositórios Git privados usando SSH.\n\nSe alguém tiver um método atualizado e funcional ou uma prática recomendada para usar chaves SSH para instalar plugins do Discourse de repositórios privados, sua orientação seria muito apreciada.

Existe uma maneira de baixar os arquivos do plugin diretamente para o servidor com antecedência, para que durante a inicialização do Discourse ele não precise buscá-los novamente no GitHub?

Esta ainda é a abordagem válida

Eu a uso o tempo todo.

2 curtidas

Você provavelmente pode clonar os arquivos diretamente em /plugins e, em seguida, executar as migrações necessárias, mas pode não receber atualizações para os plugins.

Obrigado! Mas o motivo pelo qual prefiro usar SSH é porque os tokens OAuth não permitem separar permissões de leitura e gravação — eles sempre vêm com mais acesso do que o necessário.

Com SSH, posso gerar uma chave de implantação somente leitura, que é mais segura e se alinha melhor com o princípio do menor privilégio.

Obrigado pela sugestão!

Na verdade, tentei clonar o plugin diretamente em /var/www/discourse/plugins, mas não funcionou — mesmo montando a pasta do plugin do host nesse caminho dentro do contêiner.

Parece que, durante o bootstrap, o Discourse espera buscar plugins via Git, e colocar os arquivos do plugin manualmente não contorna essa etapa.

Se você obteve sucesso com este método, adoraria saber mais detalhes.

1 curtida

IIRC existem problemas se você clonar diretamente (acho que aqui), é por isso que usar os tokens para clonar é a maneira recomendada.

Mas acho que você pode querer tentar isso, se quiser usar chaves SSH:

Obrigado, mas eu já tentei o método descrito no guia oficial de 2014 que você linkou — e posso confirmar que ele não funciona mais para acessar repositórios privados via chaves SSH durante o bootstrap.

Eu também tentei a abordagem mais recente mencionada em uma das respostas (montar a chave SSH no contêiner e configurar core.sshCommand em after_code), mas infelizmente, isso também falhou no meu caso. O Discourse ainda gera um erro de permissão SSH ao tentar clonar o plugin privado.

Se houver uma maneira confiável e que funcione atualmente para usar um repositório privado com SSH em uma configuração de produção, eu realmente apreciaria um guia mais atualizado.

Você poderia simplesmente cloná-lo localmente e montá-lo no diretório de plugins ou copiá-lo de um ponto de montagem temporário para o diretório de plugins.

Você costumava poder obter uma URL do GitHub com credenciais incorporadas na URL. Eu já fiz isso antes.