Los archivos de la base de datos son incompatibles con el servidor (actualizando en Linode)

Tengo los síntomas descritos en Error Updating from 3.4.0.beta3-dev to 3.4.0.beta3
Solo que el error es diferente.

No puedo citar tu imagen.

Pero parece que necesitas eliminar tu antiguo directorio postgres_data_old. Si tienes espacio y eres paranoico, puedes renombrarlo.

No puedo averiguar cómo copiar la salida de la pantalla de weblish.

1 me gusta

Esta es la parte importante de mi mensaje.

Quizás primero verifica que sea antiguo
ls -l /var/discourse/shared/standalone/
y asegúrate de que ese directorio de copia de seguridad no tenga la fecha de hoy.

Si tienes mucho espacio en disco puedes hacer algo como

cd /var/discourse
cd shared/standalone
mv postgres_data_old postgres_data_delete_me

y luego inténtalo de nuevo

1 me gusta

Sin éxito.
Creo que estoy duplicando Upgrade failed spectacularily

¿Podrías compartir el contenido de tu archivo app.yml? Redacta cualquier información sensible antes de publicarla.

desde root@localhost: /var/discourse/containers

## esta es la plantilla de contenedor Docker de Discourse todo en uno y autónoma
##
## Después de realizar cambios en este archivo, DEBE reconstruir
## /var/discourse/launcher rebuild app
##
## ¡TENGA MUCHO CUIDADO AL EDITAR!
## ¡LOS ARCHIVOS YAML SON EXTREMADAMENTE SENSIBLES A ERRORES DE ESPACIO EN BLANCO O ALINEACIÓN!
## visite http://www.yamllint.com/ para validar este archivo según sea necesario

plantillas:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Descomente estas dos líneas si desea agregar Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

## ¿qué puertos TCP/IP debe exponer este contenedor?
## Si desea que Discourse comparta un puerto con otro servidor web como Apache o nginx,
## consulte https://meta.discourse.org/t/17247 para obtener detalles
exponer:
  - "80:80"   # http
  - "443:443" # https

parámetros:
  db_default_text_search_config: "pg_catalog.english"

  ## Establezca db_shared_buffers en un máximo del 25% de la memoria total.
  ## se establecerá automáticamente mediante bootstrap según la RAM detectada, o puede anularlo
  db_shared_buffers: "256MB"

  ## puede mejorar el rendimiento de la clasificación, pero aumenta el uso de memoria por conexión
  #db_work_mem: "40MB"

  ## ¿Qué revisión de Git debe usar este contenedor? (predeterminado: tests-passed)
  #version: tests-passed

variables de entorno:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## ¿Cuántas solicitudes web concurrentes se admiten? Depende de la memoria y los núcleos de CPU.
  ## se establecerá automáticamente mediante bootstrap según las CPU detectadas, o puede anularlo
  UNICORN_WORKERS: 4

  ## TODO: El nombre de dominio al que responderá esta instancia de Discourse
  DISCOURSE_HOSTNAME: <mydomain>

  ## Descomente si desea que el contenedor se inicie con el mismo
  ## nombre de host (-h opción) que se especificó anteriormente (predeterminado "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: Lista de correos electrónicos separados por comas que se convertirán en administradores y desarrolladores
  ## en el registro inicial, ejemplo 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: <myemail>

  ## TODO: El servidor de correo SMTP utilizado para validar nuevas cuentas y enviar notificaciones
  DISCOURSE_SMTP_ADDRESS: <mymailorg>
  DISCOURSE_SMTP_PORT: <myport>
  DISCOURSE_SMTP_USER_NAME: <mysmpremail>
  DISCOURSE_SMTP_PASSWORD: <mypassword>
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (opcional, predeterminado true)

  ## Si agregó la plantilla Lets Encrypt, descomente a continuación para obtener un certificado SSL gratuito
  LETSENCRYPT_ACCOUNT_EMAIL: <myemail>

  ## La dirección CDN para esta instancia de Discourse (configurada para extraer)
  ## consulte https://meta.discourse.org/t/14857 para obtener detalles
  #DISCOURSE_CDN_URL: //discourse-cdn.example.com

## El contenedor Docker no tiene estado; todos los datos se almacenan en /shared
volúmenes:
  - volumen:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volumen:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Los plugins van aquí
## consulte https://meta.discourse.org/t/19157 para obtener detalles
ganchos:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-math.git

## Cualquier comando personalizado para ejecutar después de la compilación
ejecutar:
  - exec: echo "Comienzo de comandos personalizados"
  ## Si desea establecer la dirección de correo electrónico 'De' para su primer registro, descomente y cambie:
  ## Después de recibir el primer correo electrónico de registro, vuelva a comentar la línea. Solo necesita ejecutarse una vez.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Fin de comandos personalizados"

¿Podrías confirmar tu versión de Docker? Si tienes una versión anterior a nuestra versión recomendada 24.0.7, te sugiero que actualices Docker y vuelvas a intentarlo.

Se informaron problemas similares en un tema separado y parece que actualizar Docker resolvió el problema allí.

Docker versión 20.10.7, build f0df350

cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.7 LTS (Xenial Xerus)"

Parece que puede estar experimentando un problema similar con Docker al que se informó en ese otro tema.

Sugiero que actualice tanto Ubuntu como Docker a versiones más recientes y luego intente reconstruir de nuevo.

Si su contenedor app antiguo todavía existe y no ha modificado los archivos de datos existentes en shared/standalone/postgres_data, puede intentar ejecutar ./launcher start app para iniciar el sitio en el contenedor antiguo mientras tanto.

2 Me gusta

Realicé los pasos para actualizar Ubuntu y finalmente presioné en esto.


Pero la pantalla se ha bloqueado en

Al volver a conectar, veo que tengo Ubuntu 18.0.4.6 LTS (Bionic Beaver).

Será mucho más fácil si creas una nueva VM con un sistema operativo actualizado. 18.04 está más allá de su vida útil y a 20.04 le queda hasta abril.

Si tienes una copia de seguridad actualizada, crea un nuevo servidor y restaura esa copia de seguridad, evitando por completo los problemas de actualización de postgres.

Discourse no necesita postgres instalado en el sistema operativo. Esta es otra razón para empezar con un sistema operativo nuevo.

1 me gusta

Gracias Jay
He podido restaurar una copia de seguridad de linode a otro linode (linode2)
Ahora necesito abrir Discourse en linode2 para que Discourse pueda enviarme una copia de seguridad por correo electrónico.
Hice una nueva configuración de DNS para linode2 pero obtengo 502 Bad Gateway cuando voy allí.
¿Quizás tengo que esperar un tiempo?
Curiosamente discbak.softwarebydesign.com.au (linode2) se está redirigiendo actualmente a discourse.softwarebydesign.com.au (en el linode original)

Puedes copiar la copia de seguridad con scp/rsync. Es más fácil y rápido (a menos que no sepas qué significa eso).

Realmente quieres crear una VM nueva con un SO nuevo (no una copia de seguridad de un servidor con un SO desactualizado) y moverte a ella como se describe en Mover un sitio de Discourse a otro VPS con rsync. El que acabo de copiar también tenía algunos problemas de propiedad. Probablemente tú también los tendrás.

Si discbak está ejecutando la misma imagen que el otro servidor, esperaría que te diera un error de certificado (a menos que visitaras http://) y luego redirigiera a lo que sea que esté en HOSTNAME.

Es justo decir que realmente no sé lo que estoy haciendo.
He creado un nuevo VPS con Ubunto 24.0.1 LTS y estoy hasta la instrucción de

rsync -rvz example.com:/var/discourse /var

Debido a mi actualización fallida, example.com devuelve 502 bad gateway.
Estoy en una curva de aprendizaje intentando averiguar cómo conceder acceso de todos modos.