Actualizar manualmente Discourse y la imagen Docker a la última versión

:bookmark: This guide provides step-by-step instructions for manually updating Discourse, the Docker container, and the Ubuntu operating system on a self-hosted setup.

:person_raising_hand: Required user level: System Administrator

:warning: SSH access to the server.

If you self-host Discourse, you occasionally need to run a manual update via the command line to get the latest security releases newest libraries.

These updates are not picked up in admin/update, which is why you’ll occasionally need to do these additional steps:

Updating Discourse

  1. Discourse itself should be updated about twice a month, by clicking the “Update to Latest Version” button in your admin dashboard (admin/update).

  2. Every two months we recommend SSH’ing into your web server (using putty or your favorite SSH client) and running the following commands, especially if the upgrade page doesn’t show up or you have any issues when trying to upgrade.

cd /var/discourse
./launcher rebuild app

Updating the Docker image and Ubuntu OS

For Ubuntu updates, make sure you have automatic security updates enabled for your Ubuntu! The command is:

dpkg-reconfigure -plow unattended-upgrades

However, that just covers critical security updates. Every so often you should get all the OS updates like so:

apt-get update
apt-get dist-upgrade

Due to the way docker packaging has changed you may also have to update your docker from lxc-docker or docker-engine packages. One way to do that is via the Docker script here (it will warn about an existing install but should upgrade ok):

wget -qO- https://get.docker.com/ | sh

This will now use the docker-ce main versions.

To summarize:

  • update Discourse twice a month via web updater
  • update the container every two months
  • update the OS every six months

You could double these numbers and still be fairly safe, e.g. update Discourse once a month, container every 4 months, OS once every 12 months, and so on.

But you really, really want automatic security updates enabled in Ubuntu, as listed above.

FAQ

What is the right time to update?

It just depends on the time you have available and how close to bleeding edge you want to be. If you have non-official plugins, it is highly advisable to utilize a test/staging site. If you do not have any non-official plugins, you can likely upgrade immediately, but even then, some plugins may break for a couple of days as the team fixes them (there are a lot of them).

What is common practice when updating with many plugins installed?

If you have a lot of plugins, testing locally or on a test server is highly advised. Especially if you have non-official plugins, as something could have broken. If you find something does break, then it is a matter of, do you have time to fix it? Does the original plugin author have time to fix it? Either of those could take weeks. So at least this way, you simply have a broken test site and not a broken production site.

I’m running low on disk space

If you are running low on disk space (check with df) try clearing up old images using:

./launcher cleanup
apt-get autoclean
apt-get autoremove

Does updating the actual server version of Ubuntu matter since Discourse always operates in Docker?

It matters a lot less. But you should be on at least a currently supported LTS release of Ubuntu server. A 64-bit Linux OS with a modern kernel version is required.

Last edited by @SaraDev 2024-11-21T21:25:01Z

Check documentPerform check on document:
177 Me gusta

Las guías se revisan y actualizan con bastante frecuencia (esta parece haber tenido un pequeño ajuste en febrero). :+1:

La única que no conozco personalmente es la de Docker:

Pero puedo dar fe de la exactitud del resto. :slight_smile:

3 Me gusta

Ejecuté todos estos comandos en mi sitio de prueba, incluida la actualización de Docker, y funcionaron sin ningún problema.

5 Me gusta

He recibido un informe de que esto causa un problema cuando se ejecuta. No creo haberlo usado nunca en los dos años que tengo un sitio de prueba de DO.

¿Alguien tiene alguna experiencia reciente al respecto para decir si sigue siendo un consejo relevante o no?


Acabo de revisar las publicaciones eliminadas y encontré un par en las que se planteó esa parte de la guía anteriormente [1] y parece que @MarkDoerr la ejecutó sin problemas.

Aunque todavía no estoy seguro de cuándo/bajo qué circunstancias se requeriría ejecutarlo. ¿Tengo demasiada fe en Docker Manager?


  1. las he restaurado ↩︎

2 Me gusta

2 publicaciones se dividieron en un nuevo tema: ¿Cuándo actualizar el contenedor de datos de una configuración de dos contenedores?

Se dividió una publicación en un nuevo tema: Actualización del foro v2.2.0.beta4 con cambios locales desconocidos

He intentado ejecutar ese comando (wget -qO- https://get.docker.com/ | sh) ahora y reporta:

No se puede conectar al demonio de Docker en unix:///var/run/docker.sock. ¿Está en ejecución el demonio de docker?

Parece que esto no ha funcionado para actualizar docker.

También parece haber causado que todo el sitio se bloquee, y la aplicación no se puede reconstruir, reporta:

No se puede conectar al demonio de docker - verifica que esté en ejecución y que tengas acceso

Después de reiniciar el servidor, el sitio vuelve a estar en línea.

Así que tal vez sí hizo la actualización pero falló al reiniciar docker. Puedes comprobarlo con

docker --version

Resulta que mi portátil tenía un docker antiguo y ejecuté el comando recomendado y no tuve que reiniciar para que funcionara. Esto es lo que obtengo para la versión:

$ docker --version
Docker version 26.1.4, build 5650f9b
1 me gusta

Tener la misma versión de Docker:

Docker version 26.1.4, build 5650f9b
1 me gusta

¡Entonces estás al día y todo está bien!

3 Me gusta

Sabía que había visto este documento que cubre la cadencia de actualización de Discourse, pero tuve problemas para encontrarlo de nuevo porque está en Documentation bajo “Usando Docker” y titulado “Actualizar Docker manualmente”.

Dado que cubre las actualizaciones de Discourse y Ubuntu, ¿podría tener otro lugar o dos en el menú?

1 me gusta

Cuando Discourse te aconseja actualizar una imagen (por lo que no es posible actualizar desde la interfaz de usuario) te indica que hagas lo siguiente:

    cd /var/discourse
    git pull
    ./launcher rebuild app

¿Para qué sirve este git pull adicional y por qué no lo recomiendas en el manual?

3 Me gusta

Es una reliquia antigua y ya no es necesaria. Rebuild lo hace.

2 Me gusta

¿Hago un PR?

3 Me gusta
6 Me gusta

¡Fusionado, gracias @tvavrda!

6 Me gusta