Estou instalando o Discourse em um ambiente de Intranet. Às vezes, encontro este erro durante o processo de reconstrução:
Pups::ExecError: cd /var/www/discourse & su discourse -c ‘bundle install --retry 3 --jobs 4’ falhou com retorno #<Process::Status: pid 645 exit 17>
Localização da falha: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn’
exec falhou com os parâmetros {“cd”=>“$home”, “hook”=>“bundle_exec”, “cmd”=>[“su discourse -c ‘bundle config --local deployment true’”, “su discourse -c ‘bundle config --local without \"development test\"’”, “su discourse -c ‘bundle install --retry 3 --jobs 4’”]}
bootstrap falhou com código de saída 17
** FALHA AO INICIAR ** por favor, role para cima e procure por mensagens de erro anteriores, pode haver mais de uma.
./discourse-doctor pode ajudar a diagnosticar o problema.
6ef3d42536c82021bdb1f24980cbd860572869f207e4eb2001e59e8923b182cf
root@wpyb3816:/var/discourse# cat /etc/docker/daemon.json
I, [2024-03-29T14:58:21.260866 #1] INFO – :
I, [2024-03-29T14:58:21.261079 #1] INFO – : > su postgres -c ‘createdb discourse’ || true
2024-03-29 14:58:21.298 UTC [55] postgres@postgres ERROR: database “discourse” already exists
2024-03-29 14:58:21.298 UTC [55] postgres@postgres STATEMENT: CREATE DATABASE discourse;
createdb: error: database creation failed: ERROR: database “discourse” already exists
I, [2024-03-29T14:58:21.299606 #1] INFO – :
I, [2024-03-29T14:58:21.299710 #1] INFO – : > su postgres -c ‘psql discourse -c “create user discourse;”’ || true
2024-03-29 14:58:21.334 UTC [59] postgres@discourse ERROR: role “discourse” already exists
2024-03-29 14:58:21.334 UTC [59] postgres@discourse STATEMENT: create user discourse;
ERROR: role “discourse” already exists
and then another error before the crash …
[2024-03-29T14:59:48.410149 #1] INFO – : > cd /var/www/discourse && su discourse -c ‘bundle install --retry 3 --jobs 4’
Retrying fetcher due to error (2/4): Bundler::Fetcher::CertificateFailureError Could not verify the SSL certificate for https://rubygems.org/.
There is a chance you are experiencing a man-in-the-middle attack, but most likely your system doesn’t have the CA certificates needed for verification. For information about OpenSSL certificates, see OpenSSL Errors and Rails – Certificate Verify Failed · RailsApps.
Retrying fetcher due to error (3/4): Bundler::Fetcher::CertificateFailureError Could not verify the SSL certificate for https://rubygems.org/.
There is a chance you are experiencing a man-in-the-middle attack, but most likely your system doesn’t have the CA certificates needed for verification. For information about OpenSSL certificates, see OpenSSL Errors and Rails – Certificate Verify Failed · RailsApps.
Retrying fetcher due to error (4/4): Bundler::Fetcher::CertificateFailureError Could not verify the SSL certificate for https://rubygems.org/.
There is a chance you are experiencing a man-in-the-middle attack, but most likely your system doesn’t have the CA certificates needed for verification. For information about OpenSSL certificates, see OpenSSL Errors and Rails – Certificate Verify Failed · RailsApps.
Could not verify the SSL certificate for https://rubygems.org/.
There is a chance you are experiencing a man-in-the-middle attack, but most
likely your system doesn’t have the CA certificates needed for verification. For
information about OpenSSL certificates, see OpenSSL Errors and Rails – Certificate Verify Failed · RailsApps.
I, [2024-03-29T14:59:49.328710 #1] INFO – : Fetching source index from https://rubygems.org/
Este é o problema. Parece que sua internet está bloqueando o acesso ao rubygems.
O Discourse requer https e a instalação padrão precisa ser acessível via IP público para obter um certificado. Você provavelmente terá problemas por causa disso também.
Se você não conseguir abrir o servidor para todos os sites, terá que ler as mensagens você mesmo e abrir cada site que for carregado, um por um. Com um prazo de 6 dias, eu esperaria que levasse um ou dois meses.
Fazer o Discourse funcionar em uma intranet privada que não pode acessar a internet não é realmente suportado. Você ainda pode conseguir construir uma imagem em outro lugar e, em seguida, tentar lançá-la em sua intranet. Você ainda terá que encontrar sua própria maneira de obter certificados https.
Fiz o pull da imagem na VM na Intranet e depois iniciei um contêiner ./launcher start app --run-image minha imagem
O contêiner está funcionando bem, mas parece que as portas 80/443 não estão acessíveis (verifiquei com nmap, elas estão abertas!). Não consigo acessar o aplicativo pelo navegador. Quando digito: curl -v localhost:80, recebo este erro.
* Usa a variável de ambiente proxy no_proxy == 'localhost,127.0.0.1,.laposte.fr'
* Tentando 127.0.0.1:80...
* Conectado ao localhost (127.0.0.1) na porta 80 (#0)
> GET / HTTP/1.1
> Host: localhost
> User-Agent: curl/7.81.0
> Accept: */*
>
* Falha ao receber: Conexão reiniciada pelo peer
* Fechando conexão 0
curl: (56) Falha ao receber: Conexão reiniciada pelo peer
Minha suposição é que você não tem certificados e o nginx está falhando. Você precisa remover os templates ssl e let’s encrypt e construir uma nova imagem. Então você precisará de um proxy reverso que tenha um certificado.
Você pode, em vez disso, usar um certificado que você mesmo gerou. Acho que ainda há um tópico sobre como fazer isso (de antes do let’s encrypt existir).
Você pode olhar os logs do nginx para ver os erros.
Eu não ativei o template letsencrypt no meu arquivo app.yml, então não devo me preocupar com esta solicitação de remoção, certo? Eu uso um VIP front-end com seu próprio certificado.