Intenté instalar un plugin que destruyó el sitio, no puedo ejecutar la reconstrucción

Estaba intentando instalar el plugin de formato, pero coloqué el código en el lugar incorrecto. Al reconstruir y cargar el sitio, el plugin no se inicializaba. Así que descubrí el error, lo eliminé… y apareció un mensaje de error en una línea. Encontré el error en esa línea, lo verifiqué con yamllint, todo coincidió, eliminé el plugin… pero ahora la reconstrucción falla. Sigue mostrando un error persistente; aunque puedo cargar la página principal del sitio, no puedo cargar ningún tema ni nada más.

Esto es lo que muestra la reconstrucción y el doctor:

Resumen
FALLÓ
--------------------
NoMethodError: método `each` no definido para nil:NilClass
Ubicación del fallo: /pups/lib/pups/config.rb:99:in `run_commands'
dfd33a9a3be65ddb9a1fd19c19e5034a44c39f46e330ccdf0533f4f66d7d0005
** NO SE LOGRÓ EL ARRANQUE ** Por favor, desplázate hacia arriba y busca mensajes de error anteriores; puede haber más de uno.
./discourse-doctor puede ayudar a diagnosticar el 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!!!! ====================
¡La aplicación no se está ejecutando!
Intentando reconstruir
==================== REGISTRO DE RECONSTRUCCIÓN ====================
Asegurando que el lanzador esté actualizado
Obteniendo origen
El lanzador está actualizado
Deteniendo el contenedor antiguo
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && /pups/bin/pups --stdin
Ya está actualizado.
I, [2020-07-16T07:53:23.985444 #1]  INFO -- : Cargando --stdin


FALLÓ
--------------------
NoMethodError: método `each` no definido para nil:NilClass
Ubicación del fallo: /pups/lib/pups/config.rb:99:in `run_commands'
2386f66f76d9c9ffbbcd02bfad9e0530683714d433bff8d70976cae6c4b8fc86
** NO SE LOGRÓ EL ARRANQUE ** Por favor, desplázate hacia arriba y busca mensajes de error anteriores; puede haber más de uno.
./discourse-doctor puede ayudar a diagnosticar el problema.
==================== FIN DEL REGISTRO DE RECONSTRUCCIÓN ====================
No se pudo reconstruir la aplicación.

Verificando tu nombre de dominio . . .

Conexión a tu sitio exitosa.
Probablemente debas eliminar cualquier plugin no estándar y reconstruir.
Intentando reiniciar el contenedor existente . . .

Iniciando el contenedor existente
+ /usr/bin/docker start app
Respuesta de error del demonio: el controlador falló al programar la conectividad externa en el endpoint app (39c7d5a80e10058bc952825fccd073af0f2ff12857895aa1046a6615d879a5a0): Error al iniciar el proxy de espacio de usuario: listen tcp 0.0.0.0:443: bind: la dirección ya está en uso
Error: no se pudieron iniciar los contenedores: app
No se pudo reiniciar el contenedor.


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

No se detectaron plugins no oficiales.

Consulta thub.com/discourse/discourse/blob/master/lib/plugin/metadata.rb para obtener la lista oficial.

========================================
**Versión de Discourse en myhost: NO ENCONTRADA**
**Versión de Discourse en localhost: NO ENCONTRADA**


==================== INFORMACIÓN DE MEMORIA ====================
RAM (MB): 2041

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

==================== VERIFICACIÓN DE ESPACIO EN DISCO ====================
---------- Espacio en disco del SO ----------
Sistema de archivos   Tamaño  Usado Disp Uso% Montado en
/dev/vda1             49G     11G   38G  22%  /

==================== INFORMACIÓN DEL DISCO ====================
Disco /dev/vda: 50 GiB, 53687091200 bytes, 104857600 sectores
Unidades: sectores de 1 * 512 = 512 bytes
Tamaño del sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes
Tipo de etiqueta de disco: gpt
Identificador del disco: 3980448C-AF15-4833-A022-C759F0D2D80A

Dispositivo      Inicio       Fin   Sectores  Tamaño Tipo
/dev/vda1  227328 104857566 104630239 49.9G Sistema de archivos Linux
/dev/vda14   2048     10239      8192    4M Arranque BIOS
/dev/vda15  10240    227327    217088  106M Datos básicos de Microsoft

Las entradas de la tabla de particiones no están en orden del disco.

==================== FIN DE LA INFORMACIÓN DEL DISCO ====================

No tengo la menor idea de qué hacer, pero el sitio está completamente destruido en este momento. Eliminé los enlaces porque solo puedo usar tres por publicación, pero están ahí. Las reconstrucciones funcionaban bien HASTA que eliminé el plugin que había colocado en el lugar completamente incorrecto; luego, todo dejó de funcionar. Había alterado un par de líneas, pero confirmé que estaban corregidas. Estoy completamente perdido. Acabo de intentar ejecutar setup nuevamente y confirmar todas las configuraciones; todo funcionó bien, pero volvió a fallar en la reconstrucción…

Bueno, después de intentar volver a ejecutar y editar cosas durante horas, finalmente probé

./launcher start app y funcionó sin problemas, y el plugin está instalado (aunque pensé que lo había editado para eliminarlo). Da igual. Sin embargo, ahora tengo miedo de intentar reconstruir o instalar algo más, ya que no sé exactamente qué causó esto, ni siquiera qué se solucionó. Así que cualquier aclaración seguiría siendo muy apreciada.

Es imposible saber por tu descripción cuál podría haber sido el problema, pero si la última reconstrucción funcionó, es muy probable que la siguiente también lo haga.

Creo que simplemente inició una imagen antigua con ./launcher start app.

@Kartoon, probablemente puedas intentar reconstruirla; si falla, aún podrás reanudar la última imagen conocida como válida mediante el mismo comando.

Lo siento, tuve una pequeña emergencia y no pude revisar este tema.

La reconstrucción NO funcionó, y lo intenté de nuevo hoy y tampoco lo hizo. El sitio funciona bien después de ejecutar “./launcher start app”, pero cada vez que intento reconstruirlo falla, además de los errores del discourse doctor. Puedo publicar el registro que me proporciona si eso ayuda, pero claramente algo sigue mal y me preocupa que eso pueda causar un problema más adelante.

Parece que tienes un error de formato en tu archivo yml.

Puede ser difícil encontrar y reconocer este tipo de errores. Hay herramientas que lo verificarán.

Lo que suelo hacer al agregar un plugin es copiar y pegar una línea de un plugin existente y editar la URL de GitHub. De esta manera, minimizas la probabilidad de que rompas algo.

Eso es lo que asumí y al principio estaba equivocado, pero consulté http://www.yamllint.com/ para corregir los errores que surgieron porque originalmente coloqué el texto del plugin en los lugares incorrectos. El sitio indica que todo está perfecto; lo he verificado numerosas veces durante el proceso (tanto partes específicas como el archivo completo) y siempre ha confirmado que es correcto. A menos que ese sitio sea inexacto por alguna razón, lo cual es posible ya que no soy un experto en el tema.

Esto es lo que obtengo al intentar reconstruir, y esto es lo que ocurre al ejecutar discourse doctor (ambos hace cinco minutos). Eliminé la información personal, pero en el registro real todo está ahí y es correcto.

reconstruir aplicación

Asegurando que el lanzador esté actualizado
Obteniendo origen
El lanzador está actualizado
Deteniendo el contenedor antiguo

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

FALLÓ

NoMethodError: método each no definido para nil:NilClass
Ubicación del fallo: /pups/lib/pups/config.rb:99:in `run_commands’
1a575aa2a169fcb4a9bbb0874c55d3fd01ee1e7368ff58e2099c9602f6c32109
** FALLO EN EL INICIO ** por favor, desplázate hacia arriba y busca mensajes de error anteriores; puede haber más de uno.
./discourse-doctor puede ayudar a diagnosticar el problema.

discourse-doctor

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

Encontrado containers/app.yml

==================== CONFIGURACIÓN YML ====================
DISCOURSE_HOSTNAME=bueno
SMTP_ADDRESS=bueno
DEVELOPER_EMAILS=bueno
SMTP_PASSWORD=bueno
SMTP_PORT=587
SMTP_USER_NAME=bueno
LETSENCRYPT_ACCOUNT_EMAIL=bueno

==================== INFORMACIÓN DE DOCKER ====================
VERSIÓN DE DOCKER: Docker version 19.03.8, build afacb8b7f0

PROCESOS DE DOCKER (docker ps -a)

ID DEL CONTENEDOR IMAGEN COMANDO CREADO ESTADO PUERTOS NOMBRES
343a1aa3c05c local_discourse/app “/sbin/boot” hace 7 días Salido (5) hace aproximadamente un minuto app

==================== PROBLEMA GRAVE!!! ====================
¡app no se está ejecutando!
Intentando reconstruir
==================== REGISTRO DE RECONSTRUCCIÓN ====================
Asegurando que el lanzador esté actualizado
Obteniendo origen
El lanzador está actualizado
Deteniendo el contenedor antiguo

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

FALLÓ

NoMethodError: método each no definido para nil:NilClass
Ubicación del fallo: /pups/lib/pups/config.rb:99:in `run_commands’
439734a2cd69755d8351bbdadd9756cb573577d7f1b306aedaafa1c7d4bc29cf
** FALLO EN EL INICIO ** por favor, desplázate hacia arriba y busca mensajes de error anteriores; puede haber más de uno.
./discourse-doctor puede ayudar a diagnosticar el problema.
==================== FIN DEL REGISTRO DE RECONSTRUCCIÓN ====================
No se pudo reconstruir la aplicación.

Verificando tu nombre de dominio . . .

Conexión al sitio web exitosa.
Probablemente deberías eliminar cualquier plugin no estándar y reconstruir.
Intentando reiniciar el contenedor existente . . .

iniciando el contenedor existente

  • /usr/bin/docker start app
    Error de respuesta del daemon: el controlador falló al programar la conectividad externa en el endpoint app (100c15324a128a2b007d8b89e29fe0f455585fd8c7d99855ef87bb4f17892b4b): Error al iniciar el proxy de usuario: listen tcp 0.0.0.0:443: bind: la dirección ya está en uso
    Error: falló al iniciar los contenedores: app
    No se pudo reiniciar el contenedor.

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

No se detectaron plugins no oficiales.

Consulta discourse/lib/plugin/metadata.rb at main · discourse/discourse · GitHub para ver la lista oficial.

========================================
Versión de Discourse en el sitio web: NO ENCONTRADA
Versión de Discourse en localhost: NO ENCONTRADA

==================== INFORMACIÓN DE MEMORIA ====================
RAM (MB): 2041

          total        usado       libre      compartido  caché/buffer   disponible

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

==================== VERIFICACIÓN DE ESPACIO EN DISCO ====================
---------- Espacio en disco del SO ----------
Sistema de archivos Tamaño Usado Disp Uso% Montado en
/dev/vda1 49G 13G 37G 26% /

==================== INFORMACIÓN DEL DISCO ====================
Disco /dev/vda: 50 GiB, 53687091200 bytes, 104857600 sectores
Unidades: sectores de 1 * 512 = 512 bytes
Tamaño de sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes
Tipo de etiqueta de disco: gpt
Identificador de disco: 3980448C-AF15-4833-A022-C759F0D2D80A

Dispositivo Inicio Fin Sectores Tamaño Tipo
/dev/vda1 227328 104857566 104630239 49.9G Sistema de archivos Linux
/dev/vda14 2048 10239 8192 4M Arranque BIOS
/dev/vda15 10240 227327 217088 106M Datos básicos de Microsoft

Las entradas de la tabla de particiones no están en orden del disco.

==================== FIN DE LA INFORMACIÓN DEL DISCO ====================

Lo que noto inmediatamente es que dice “problema grave, app no se está ejecutando” y “versión de Discourse en el sitio web y en localhost no encontrada”. Mi suposición (no informada) es que, cualquiera que sea lo que signifiquen estos mensajes, ese es el problema.

Además, mi sitio se cayó justo ahora cuando ejecuté la reconstrucción y tuve que hacer “start app” para arreglarlo de nuevo.

Hmm. Bueno, no parece ser un problema de formato, pero no puedo decir cuál podría ser.

Si el archivo app.yml te preocupa, creo que lo mejor es reiniciar con un archivo app.yml limpio

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

Luego puedes reconstruir cuando todo haya sido verificado

Esto funcionó perfectamente. Claramente, cuando indicaba que el YML era correcto… no lo era.

Luego tuve un problema temporal con el envío de correos, pero cuando fui a verificar de nuevo el nuevo YML, me di cuenta de que había cometido un error en el correo (siempre olvido que lo configuré como @mg. en Mailgun…), así que eso se solucionó en cinco minutos.

¡Ay, gracias muchísimo! Ahora no tengo el miedo de que ocurra una destrucción inminente en cualquier momento.