Tentei instalar um plugin, o site foi destruído e não consigo executar o rebuild

Tentei instalar o plugin de formatação, mas coloquei o código no lugar errado. Ao reconstruir e carregar o site, o plugin não estava sendo inicializado. Percebi o erro, removi-o… mas apareceu uma mensagem de erro em uma linha específica. Encontrei o erro nessa linha, executei o yamllint, tudo parecia correto, removi o plugin… mas agora a reconstrução não funciona mais. Continua exibindo um erro persistente e, embora eu consiga carregar a página inicial do site, não consigo acessar nenhum tópico ou qualquer outra coisa.

Abaixo está a saída da reconstrução e do discourse-doctor:

Resumo
FALHA
--------------------
NoMethodError: método `each` não definido para nil:NilClass
Local da falha: /pups/lib/pups/config.rb:99:in `run_commands'
dfd33a9a3be65ddb9a1fd19c19e5034a44c39f46e330ccdf0533f4f66d7d0005
** FALHA NA INICIALIZAÇÃO ** role para cima e procure por mensagens de erro anteriores; pode haver mais de uma.
O comando ./discourse-doctor pode ajudar a diagnosticar o problema.
root:/var/discourse# ./discourse-doctor
DISCOURSE DOCTOR Thu Jul 16 07:53:05 UTC 2020
SO: Linux itsbx 4.15.0-99-generic #100-Ubuntu SMP Wed Apr 22 20:32:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux



==================== PROBLEMA GRAVE!!!! ====================
aplicativo não está em execução!
Tentando reconstruir
==================== LOG DE RECONSTRUÇÃO ====================
Garantindo que o launcher esteja atualizado
Buscando origem
Launcher está atualizado
Parando o container antigo
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && /pups/bin/pups --stdin
Já está atualizado.
I, [2020-07-16T07:53:23.985444 #1]  INFO -- : Carregando --stdin


FALHA
--------------------
NoMethodError: método `each` não definido para nil:NilClass
Local da falha: /pups/lib/pups/config.rb:99:in `run_commands'
2386f66f76d9c9ffbbcd02bfad9e0530683714d433bff8d70976cae6c4b8fc86
** FALHA NA INICIALIZAÇÃO ** role para cima e procure por mensagens de erro anteriores; pode haver mais de uma.
O comando ./discourse-doctor pode ajudar a diagnosticar o problema.
==================== FIM DO LOG DE RECONSTRUÇÃO ====================
Falha ao reconstruir o aplicativo.

Verificando seu nome de domínio . . .

Conexão com yoursite bem-sucedida.
Você provavelmente deve remover qualquer plugin não padrão e reconstruir.
Tentando reiniciar o container existente . . .

Iniciando o container existente
+ /usr/bin/docker start app
Resposta de erro do daemon: falha ao programar conectividade externa no endpoint app (39c7d5a80e10058bc952825fccd073af0f2ff12857895aa1046a6615d879a5a0): Erro ao iniciar proxy de espaço de usuário: listen tcp 0.0.0.0:443: bind: endereço já em uso
Erro: falha ao iniciar containers: app
Falha ao reiniciar o container.


==================== PLUGINS ====================
          - git clone github.com/discourse/docker_manager.git

Nenhum plugin não oficial detectado.

Consulte thub.com/discourse/discourse/blob/master/lib/plugin/metadata.rb para a lista oficial.

========================================
**Versão do Discourse em myhost: NÃO ENCONTRADA**
**Versão do Discourse em localhost: NÃO ENCONTRADA**


==================== INFORMAÇÕES DE MEMÓRIA ====================
RAM (MB): 2041

              total        used        free      shared  buff/cache   available
Mem:           1993         144        1237           0         611        1677
Swap:          2047          76        1971

==================== VERIFICAÇÃO DE ESPAÇO EM DISCO ====================
---------- Espaço em disco do SO ----------
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        49G   11G   38G  22% /

==================== INFORMAÇÕES DE DISCO ====================
Disk /dev/vda: 50 GiB, 53687091200 bytes, 104857600 setores
Unidades: setores de 1 * 512 = 512 bytes
Tamanho do setor (lógico/físico): 512 bytes / 512 bytes
Tamanho de E/S (mínimo/ótimo): 512 bytes / 512 bytes
Tipo de tabela de disco: gpt
Identificador do disco: 3980448C-AF15-4833-A022-C759F0D2D80A

Dispositivo      Início       Fim   Setores  Tamanho Tipo
/dev/vda1  227328 104857566 104630239 49.9G Sistema de arquivos Linux
/dev/vda14   2048     10239      8192    4M Boot BIOS
/dev/vda15  10240    227327    217088  106M Dados básicos Microsoft

As entradas da tabela de partições não estão na ordem do disco.

==================== FIM DAS INFORMAÇÕES DE DISCO ====================

Não faço absolutamente ideia do que fazer, mas o site está completamente destruído no momento. Removi os links porque só posso usar 3 por postagem, mas eles estão lá. As reconstruções funcionavam bem ATÉ que removi o plugin que havia colocado no lugar completamente errado; depois disso, tudo parou. Houve alguns erros em algumas linhas, mas confirmei que foram corrigidos. Estou completamente perdido. Acabei de tentar executar novamente a configuração e confirmar todas as configurações; tudo correu bem, mas falhou novamente na reconstrução…

Certo, então depois de tentar rodar novamente e editar coisas por horas, finalmente tentei

./launcher start app e funcionou bem, e o plugin foi instalado (embora eu achasse que o tivesse removido?). Tudo bem. No entanto, agora estou com medo de tentar reconstruir ou instalar qualquer coisa mais, pois não sei exatamente o que causou isso, ou até mesmo o que foi corrigido. Então, qualquer insight ainda seria apreciado.

É impossível dizer, pela sua descrição, qual pode ter sido o problema, mas se a última recompilação funcionou, a próxima provavelmente funcionará também.

Ele acabou de iniciar uma imagem antiga com ./launcher start app, eu acho.

@Kartoon, você provavelmente pode tentar reconstruir. Se falhar, ainda será possível retomar a última imagem conhecida como boa através do mesmo comando.

Desculpe, tive uma pequena emergência e não pude verificar este tópico.

A reconstrução NÃO funcionou, e tentei novamente hoje e também não funcionou. O site está funcionando bem após o “./launcher start app”, mas sempre que tento reconstruir, falha, assim como os erros do discourse doctor. Posso postar o log que ele me fornece se isso ajudar, mas claramente algo ainda está errado e estou preocupado que isso possa levar a um problema mais adiante.

Parece que você tem um erro de formatação no seu arquivo yml.

Pode ser difícil encontrar e identificar tais erros. Existem ferramentas que farão a verificação.

O que eu costumo fazer ao adicionar um plugin é copiar/colar uma linha de um plugin existente e editar a URL do GitHub. Dessa forma, você minimiza a probabilidade de quebrar algo.

Foi isso que eu assumi e, inicialmente, estava errado, mas recorri ao http://www.yamllint.com/ para corrigir os erros que surgiram porque eu havia colocado o texto do plugin nos lugares errados. O site agora indica que está tudo correto. Verifiquei inúmeras vezes ao longo do processo (tanto partes específicas quanto o arquivo inteiro) e ele sempre confirmou que está certo. A menos que esse site esteja impreciso por algum motivo — o que, pelo que sei, é possível, já que não sou tão experiente nisso —, está tudo em ordem.

Isso é o que obtenho ao tentar reconstruir, e a seguir está o que acontece ao executar o discourse doctor (ambos há cinco minutos). Removi informações pessoais, mas no log real tudo está lá e correto.

rebuild app

Garantindo que o launcher está atualizado
Buscando origem
Launcher está atualizado
Parando o container antigo

  • /usr/bin/docker stop -t 60 app
    app
    cd /pups && git pull && /pups/bin/pups --stdin
    Já está atualizado.
    I, [2020-07-23T22:58:14.812604 #1] INFO – : Carregando --stdin

FALHA

NoMethodError: método não definido each' para nil:NilClass Local da falha: /pups/lib/pups/config.rb:99:in run_commands’
1a575aa2a169fcb4a9bbb0874c55d3fd01ee1e7368ff58e2099c9602f6c32109
** FALHA NO BOOTSTRAP ** por favor, role para cima e procure mensagens de erro anteriores; pode haver mais de uma.
./discourse-doctor pode ajudar a diagnosticar o problema.

discourse-doctor

DISCOURSE DOCTOR Qui Jul 23 22:59:22 UTC 2020
Sistema operacional: Linux itsbx 4.15.0-111-generic #112-Ubuntu SMP Qui Jul 9 20:32:34 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Encontrado containers/app.yml

==================== CONFIGURAÇÕES YML ====================
DISCOURSE_HOSTNAME=ok
SMTP_ADDRESS=ok
DEVELOPER_EMAILS=ok
SMTP_PASSWORD=ok
SMTP_PORT=587
SMTP_USER_NAME=ok
LETSENCRYPT_ACCOUNT_EMAIL=ok

==================== INFORMAÇÕES DO DOCKER ====================
VERSÃO DO DOCKER: Docker version 19.03.8, build afacb8b7f0

PROCESSOS DO DOCKER (docker ps -a)

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
343a1aa3c05c local_discourse/app “/sbin/boot” 7 dias atrás Saiu (5) há cerca de um minuto app

==================== PROBLEMA SÉRIO!!! ====================
app não está em execução!
Tentando reconstruir
==================== LOG DE RECONSTRUÇÃO ====================
Garantindo que o launcher está atualizado
Buscando origem
Launcher está atualizado
Parando o container antigo

  • /usr/bin/docker stop -t 60 app
    app
    cd /pups && git pull && /pups/bin/pups --stdin
    Já está atualizado.
    I, [2020-07-23T22:59:41.894064 #1] INFO – : Carregando --stdin

FALHA

NoMethodError: método não definido each' para nil:NilClass Local da falha: /pups/lib/pups/config.rb:99:in run_commands’
439734a2cd69755d8351bbdadd9756cb573577d7f1b306aedaafa1c7d4bc29cf
** FALHA NO BOOTSTRAP ** por favor, role para cima e procure mensagens de erro anteriores; pode haver mais de uma.
./discourse-doctor pode ajudar a diagnosticar o problema.
==================== FIM DO LOG DE RECONSTRUÇÃO ====================
Falha ao reconstruir o app.

Verificando seu nome de domínio . . .

Conexão com o site bem-sucedida.
Você provavelmente deve remover qualquer plugin não padrão e reconstruir.
Tentando reiniciar o container existente . . .

iniciando o container existente

  • /usr/bin/docker start app
    Erro de resposta do daemon: o driver falhou ao programar a conectividade externa no endpoint app (100c15324a128a2b007d8b89e29fe0f455585fd8c7d99855ef87bb4f17892b4b): Erro ao iniciar proxy de espaço de usuário: listen tcp 0.0.0.0:443: bind: endereço já em uso
    Erro: falha ao iniciar containers: app
    Falha ao reiniciar o container.

==================== PLUGINS ====================
- git clone GitHub - discourse/docker_manager: Plugin for use with discourse docker image · GitHub

Nenhum plugin não oficial detectado.

Veja discourse/lib/plugin/metadata.rb at main · discourse/discourse · GitHub para a lista oficial.

========================================
Versão do Discourse no site: NÃO ENCONTRADA
Versão do Discourse em localhost: NÃO ENCONTRADA

==================== INFORMAÇÕES DE MEMÓRIA ====================
RAM (MB): 2041

          total        used        free      shared  buff/cache   available

Mem: 1993 140 1310 0 542 1695
Swap: 2047 72 1975

==================== VERIFICAÇÃO DE ESPAÇO EM DISCO ====================
---------- Espaço em disco do SO ----------
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 49G 13G 37G 26% /

==================== INFORMAÇÕES DO DISCO ====================
Disk /dev/vda: 50 GiB, 53687091200 bytes, 104857600 sectors
Unidades: setores de 1 * 512 = 512 bytes
Tamanho do setor (lógico/físico): 512 bytes / 512 bytes
Tamanho de E/S (mínimo/ótimo): 512 bytes / 512 bytes
Tipo de rótulo de disco: gpt
Identificador do disco: 3980448C-AF15-4833-A022-C759F0D2D80A

Device Start End Sectors Size Type
/dev/vda1 227328 104857566 104630239 49.9G Linux filesystem
/dev/vda14 2048 10239 8192 4M BIOS boot
/dev/vda15 10240 227327 217088 106M Microsoft basic data

As entradas da tabela de partições não estão na ordem do disco.

==================== FIM DAS INFORMAÇÕES DO DISCO ====================

O que percebo imediatamente é que diz “problema sério, app não está em execução”. E “versão do Discourse no site e em localhost não encontrada”. Minha suposição (leiga) é que, seja o que isso significar, esse é o problema.

Também derrubou meu site agora quando executei a reconstrução, e fiz o “start app” para corrigir novamente.

Hmm. Bem, não parece ser um problema de formatação, mas não consigo dizer o que poderia ser.

Se o arquivo app.yml estiver causando preocupação, acho que o melhor é reiniciar com um arquivo app.yml limpo:

rm /var/discourse/containers/app.yml
cd /var/discourse
cp samples/standalone.yml containers/app.yml
nano containers/app.yml

Depois, você pode reconstruir quando tudo estiver verificado.

Isso funcionou perfeitamente. Claramente, quando o sistema informava que o arquivo YAML estava correto… ele não estava.

Depois, tive um problema temporário com o envio de e-mails, mas quando fui verificar novamente o novo YAML, percebi que cometi um erro no e-mail (eu sempre esqueço que configurei como @mg. no Mailgun…). Isso foi resolvido em cinco minutos.

Ufa, muito obrigado! Agora não tenho mais o medo de uma destruição iminente acontecer a qualquer momento.