Olá,
Estou executando uma instalação padrão do Discourse auto-hospedado no Ubuntu usando a configuração oficial discourse_docker.
Ambiente
- Ubuntu Server
- Docker
discourse_dockeroficial- Instalação de único contêiner (
app.yml) - Reconstrução realizada usando:
cd /var/discourse
./launcher rebuild app
Problema
O processo de reconstrução falha durante a fase de inicialização (bootstrap) quando o Discourse tenta atualizar o código-fonte do aplicativo a partir do GitHub.
A falha ocorre em:
git fetch --tags --prune-tags --prune --force origin
e gera:
fatal: unable to access 'https://github.com/discourse/discourse.git/': SSL connection timeout
seguido por:
FAILED
bootstrap failed with exit code 128
Descobertas Importantes
O GitHub é acessível via HTTPS
No host:
curl -I https://github.com
funciona corretamente.
Também:
curl -I https://raw.githubusercontent.com
funciona corretamente.
Git sobre HTTPS é pouco confiável no meu ambiente
Dentro do ambiente do Discourse:
git ls-remote https://github.com/discourse/discourse.git
falha com:
SSL connection timeout
Pela minha investigação, isso parece ser causado por problemas na conectividade do meu provedor de internet com o GitHub via HTTPS. No momento, não estou tentando resolver esse problema de rede em si. Em vez disso, estou procurando uma maneira de realizar reconstruções do Discourse usando SSH, já que a conectividade SSH com o GitHub funciona corretamente no meu ambiente.
Autenticação SSH do GitHub funciona
Gerei uma nova chave SSH, adicionei-a ao GitHub e verifiquei a autenticação:
ssh -T git@github.com
retorna:
Olá <username>! Você autenticou com sucesso, mas o GitHub não fornece acesso ao shell.
Também:
git ls-remote git@github.com:discourse/discourse.git
funciona com sucesso a partir do host.
URLs do repositório
No host, alterei /var/discourse para usar SSH:
origin git@github.com:discourse/discourse_docker.git
e as operações do Git funcionam.
No entanto, dentro do contêiner do aplicativo Discourse:
cd /var/www/discourse
git remote -v
mostra:
origin https://github.com/discourse/discourse.git
Portanto, durante a inicialização, o Discourse ainda tenta usar HTTPS.
O Que Gostaria de Conquistar
Meu objetivo principal é fazer com que a reconstrução do Discourse seja confiável em um ambiente onde as conexões HTTPS com o GitHub são instáveis ou frequentemente dão timeout.
Gostaria de saber:
- Existe uma maneira oficialmente suportada de fazer com que a inicialização e a reconstrução do Discourse usem o GitHub via SSH em vez de HTTPS?
- Se não, qual é a abordagem recomendada para ambientes onde o Git HTTPS é pouco confiável, mas o SSH funciona corretamente?
- Existe um método suportado para injetar credenciais SSH na fase de inicialização/construção?
- Alguém configurou com sucesso o
discourse_dockerpara buscar atualizações do código-fonte do Discourse via SSH?
Prefiro uma solução que sobreviva a futuras atualizações, mas também estou interessado em entender se a busca baseada em SSH durante a inicialização é tecnicamente suportada.
Qualquer orientação seria muito apreciada.
Obrigado.