Erreur lors de la mise à jour de Discourse

Bonjour. J’ai rencontré cette erreur lors de la mise à niveau de Discourse. Savez-vous comment la résoudre ?

Voici ma version de Discourse :

<meta name="generator" content="Discourse 3.4.0.beta2-dev - https://github.com/discourse/discourse version 41c3c5745e0611828cb6ed84e5e625faf12df13a">

Informations sur le système d’exploitation :

NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

Version de Docker :

Docker version 26.1.0, build 9714adc

/var/discourse/containers/app.yml

## Ceci est le modèle de conteneur Docker Discourse tout-en-un, autonome
##
## Après avoir apporté des modifications à ce fichier, vous DEVEZ reconstruire
## /var/discourse/launcher rebuild app
##
## SOYEZ *TRÈS* PRUDENT EN ÉDITANT !
## LES FICHIERS YAML SONT EXTRÊMEMENT SENSIBLES AUX ERREURS D'ESPACE OU D'ALIGNEMENT !
## visitez http://www.yamllint.com/ pour valider ce fichier si nécessaire

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Décommentez ces deux lignes si vous souhaitez ajouter Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

## Quels ports TCP/IP ce conteneur doit-il exposer ?
## Si vous souhaitez que Discourse partage un port avec un autre serveur web comme Apache ou nginx,
## voir https://meta.discourse.org/t/17247 pour plus de détails
expose:
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Définir db_shared_buffers à un maximum de 25 % de la mémoire totale.
  ## sera défini automatiquement par bootstrap en fonction de la RAM détectée, ou vous pouvez le remplacer
  db_shared_buffers: "256MB"

  ## peut améliorer les performances de tri, mais augmente l'utilisation de la mémoire par connexion
  #db_work_mem: "40MB"

  ## Quelle révision Git ce conteneur doit-il utiliser ? (par défaut : tests-passed)
  #version: tests-passed

env:
  LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8
  LANGUAGE: en_US.UTF-8
  EMBER_CLI_PROD_ASSETS: 1
  # DISCOURSE_DEFAULT_LOCALE: en

  ## Combien de requêtes web simultanées sont prises en charge ? Dépend de la mémoire et des cœurs CPU.
  ## sera défini automatiquement par bootstrap en fonction des CPU détectés, ou vous pouvez le remplacer
  UNICORN_WORKERS: 4

  ## TODO : Le nom de domaine auquel cette instance Discourse répondra
  ## Requis. Discourse ne fonctionnera pas avec une adresse IP brute.
  DISCOURSE_HOSTNAME: discourse.abcdef.com

  ## Décommentez si vous souhaitez que le conteneur soit démarré avec le même
  ## nom d'hôte (option -h) que spécifié ci-dessus (par défaut "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO : Liste d'e-mails séparés par des virgules qui seront administrateurs et développeurs
  ## lors de l'inscription initiale, exemple 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'email@abcdef.com'

  ## TODO : Le serveur de messagerie SMTP utilisé pour valider les nouveaux comptes et envoyer des notifications
  # L'adresse SMTP, le nom d'utilisateur et le mot de passe sont requis
  # ATTENTION, le caractère '#' dans le mot de passe SMTP peut causer des problèmes !
  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: yummy@abcdef.com
  DISCOURSE_SMTP_PASSWORD: "aaaaaaaaaaaaaaaaaaaaaaaa-bbbbbbbb-ccccccccccc"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optionnel, par défaut true)
  DISCOURSE_SMTP_DOMAIN: abcdef.com
  DISCOURSE_NOTIFICATION_EMAIL: yummy@abcdef.com

  ## Si vous avez ajouté le modèle Lets Encrypt, décommentez ci-dessous pour obtenir un certificat SSL gratuit
  LETSENCRYPT_ACCOUNT_EMAIL: yummy@abcdef.com

  ## L'adresse CDN http ou https pour cette instance Discourse (configurée pour récupérer)
  ## voir https://meta.discourse.org/t/14857 pour plus de détails
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com
  
  ## La clé d'adresse IP Maxmind pour la recherche d'adresses IP
  ## voir https://meta.discourse.org/t/-/137387/23 pour plus de détails
  #DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456

## Le conteneur Docker est sans état ; toutes les données sont stockées dans /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Les plugins vont ici
## voir https://meta.discourse.org/t/19157 pour plus de détails
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-math.git
          - git clone https://github.com/discourse/discourse-chat-integration.git
          - git clone https://github.com/discourse/discourse-cakeday.git
          - git clone https://github.com/discourse/discourse-akismet.git
          - git clone https://github.com/discourse/discourse-github.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-translator.git
          - git clone https://github.com/discourse/discourse-code-review.git
          - git clone https://github.com/discourse/discourse-voting.git
          - git clone https://github.com/discourse/discourse-data-explorer.git
          - git clone https://github.com/discourse/discourse-reactions.git
          - git clone https://github.com/discourse/discourse-automation.git
          - git clone https://github.com/discourse/discourse-tooltips.git
          - git clone https://github.com/discourse/discourse-assign.git
          - git clone https://github.com/discourse/discourse-encrypt.git
          - git clone https://github.com/discourse/discourse-rss-polling.git
          - git clone https://github.com/discourse/discourse-user-card-badges.git
          - git clone https://github.com/discourse/discourse-teambuild.git
          - git clone https://github.com/discourse/discourse-prometheus.git
          - git clone https://github.com/discourse/discourse-calendar.git
          - git clone https://github.com/discourse/discourse-docs.git
          - git clone https://github.com/discourse/discourse-gamification.git
          - git clone https://github.com/discourse/discourse-bbcode-color.git
          - git clone https://github.com/discourse/discourse-follow.git
          - git clone https://github.com/discourse/discourse-templates.git
          - git clone https://github.com/discourse/discourse-shared-edits.git
          - git clone https://github.com/discourse/discourse-category-experts.git
          - git clone https://github.com/discourse/discourse-graphviz.git
          - git clone https://github.com/discourse/discourse-post-voting.git
          - git clone https://github.com/discourse/discourse-saved-searches.git
          - git clone https://github.com/discourse/discourse-staff-alias.git
          - git clone https://github.com/discourse/discourse-policy.git
          - git clone https://github.com/discourse/discourse-whos-online.git
          - git clone https://github.com/discourse/discourse-bcc.git
          - git clone https://github.com/discourse/discourse-ai.git
          - git clone https://github.com/discourse/discourse-algolia.git

## Toutes les commandes personnalisées à exécuter après la construction
run:
  - exec: echo "Début des commandes personnalisées"
  ## Si vous souhaitez définir l'adresse e-mail 'From' pour votre première inscription, décommentez et modifiez :
  ## Après avoir reçu le premier e-mail d'inscription, re-commentez la ligne. Elle ne doit être exécutée qu'une seule fois.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "Fin des commandes personnalisées"

Voici la commande que j’ai exécutée pour mettre à niveau Discourse.

cd /var/discourse
./launcher rebuild app

Erreur

I, [2025-04-10T15:51:32.679706 #1]  INFO -- : > cd /var/www/discourse && gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock)
I, [2025-04-10T15:51:33.940918 #1]  INFO -- : Successfully installed bundler-2.6.4
1 gem installed

I, [2025-04-10T15:51:33.941573 #1]  INFO -- : > cd /var/www/discourse && find /var/www/discourse ! -user discourse -exec chown discourse {} \+
I, [2025-04-10T15:51:39.190810 #1]  INFO -- : 
I, [2025-04-10T15:51:39.191737 #1]  INFO -- : > cd /var/www/discourse && if [ -f yarn.lock ]; then
  if [ -d node_modules/.pnpm ]; then
    echo "This version of Discourse uses yarn, but pnpm node_modules are preset. Cleaning up..."
    find ./node_modules ./app/assets/javascripts/*/node_modules -mindepth 1 -maxdepth 1 -exec rm -rf {} +
  fi
  su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
else
  su discourse -c 'CI=1 pnpm install --frozen-lockfile'
fi
I, [2025-04-10T15:51:44.558550 #1]  INFO -- : Detected yarn-managed node_modules. Performing one-time cleanup...
cleanup done
 ERR_PNPM_UNSUPPORTED_ENGINE  Unsupported environment (bad pnpm and/or Node.js version)

Your Node version is incompatible with "/var/www/discourse".

Expected version: >= 20
Got: v18.20.4

This is happening because the package's manifest has an engines.node field specified.
To fix this issue, install the required Node version.

I, [2025-04-10T15:51:44.559546 #1]  INFO -- : Terminating async processes
I, [2025-04-10T15:51:44.559682 #1]  INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 36
I, [2025-04-10T15:51:44.559994 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 104
104:signal-handler (1744300304) Received SIGTERM scheduling shutdown...
2025-04-10 15:51:44.560 UTC [36] LOG:  received fast shutdown request
2025-04-10 15:51:44.581 UTC [36] LOG:  aborting any active transactions
104:M 10 Apr 2025 15:51:44.585 # User requested shutdown...
104:M 10 Apr 2025 15:51:44.586 * Saving the final RDB snapshot before exiting.
2025-04-10 15:51:44.591 UTC [36] LOG:  background worker "logical replication launcher" (PID 51) exited with exit code 1
2025-04-10 15:51:44.598 UTC [46] LOG:  shutting down
2025-04-10 15:51:44.634 UTC [36] LOG:  database system is shut down
104:M 10 Apr 2025 15:51:44.947 * DB saved on disk
104:M 10 Apr 2025 15:51:44.948 # Redis is now ready to exit, bye bye...


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && if [ -f yarn.lock ]; then
  if [ -d node_modules/.pnpm ]; then
    echo "This version of Discourse uses yarn, but pnpm node_modules are preset. Cleaning up..."
    find ./node_modules ./app/assets/javascripts/*/node_modules -mindepth 1 -maxdepth 1 -exec rm -rf {} +
  fi
  su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
else
  su discourse -c 'CI=1 pnpm install --frozen-lockfile'
fi failed with return #<Process::Status: pid 649 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"yarn", "cmd"=>["if [ -f yarn.lock ]; then\n  if [ -d node_modules/.pnpm ]; then\n    echo \"This version of Discourse uses yarn, but pnpm node_modules are preset. Cleaning up...\"\n    find ./node_modules ./app/assets/javascripts/*/node_modules -mindepth 1 -maxdepth 1 -exec rm -rf {} +\n  fi\n  su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'\nelse\n  su discourse -c 'CI=1 pnpm install --frozen-lockfile'\nfi"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
e6f9cd9a001c3b9e1208284621b73506ba021b2350e0c9cca235941538863fd9

Version de node dans l’image Discourse actuelle

Quelle est la mémoire de votre serveur ?  Havez-vous un fichier d’échange configuré ?

Bonjour.

Voici les informations sur notre mémoire et notre espace de pagination (swap)

free -h
              total        used        free      shared  buff/cache   available
Mem:          3.8Gi       2.1Gi       274Mi       275Mi       1.5Gi       1.2Gi
Swap:         2.0Gi       117Mi       1.9Gi

Je ne peux que supposer que la cause de l’erreur est soit le grand saut de versions - environ 7 mois de mises à jour - soit le grand nombre de plugins.

La première chose que j’essaierais est de répéter la mise à jour en ligne de commande. Je pense que cela peut aider, et ce n’est pas juste de la superstition !

La deuxième chose que j’essaierais est de commenter tous vos plugins dans le fichier yml, essayez à nouveau la mise à jour. Si elle réussit, vous pourrez les réintroduire, peut-être tous en même temps ou peut-être plus prudemment.

Mais il est possible que quelqu’un d’autre ait des conseils plus éclairés.

(Dans mon forum, maintenant à la version 3.5.0.beta2-dev, j’ai la version node v22.14.0)

Pouvez-vous s’il vous plaît partager la sortie de docker images ? Il semble que vous soyez coincé dans une ancienne image de conteneur d’une manière ou d’une autre.

Bonjour. Je pense que voici ce que vous demandez

REPOSITORY                 TAG                 IMAGE ID       CREATED         SIZE
local_discourse/app        latest              dfd8027ee473   6 mois ago      4.75GB
discourse/base             2.0.20240825-0027   9dc96b6115cb   7 mois ago      3.38GB

Ça n’a pas fonctionné

Je ne l’ai pas encore fait. Je vais le tester dans un environnement de développement. merci

Oui, comme je le suspectais, il semble que vous soyez resté bloqué dans une ancienne image.

Quel est le résultat de

cd /var/discourse
git pull

?

Salut Falco. Voici le résultat

git pull origin main

From https://github.com/discourse/discourse_docker
 * branch            main       -> FETCH_HEAD
Suppression de launcher_go/v2/utils/utils_suite_test.go
Suppression de launcher_go/v2/utils/find_config_test.go
Suppression de launcher_go/v2/utils/find_config.go
Suppression de launcher_go/v2/utils/consts.go
Suppression de launcher_go/v2/utils/cmd_runner.go
Suppression de launcher_go/v2/test_utils/utils.go
Suppression de launcher_go/v2/test/containers/web.template.yml
Suppression de launcher_go/v2/test/containers/web_only.yml
Suppression de launcher_go/v2/test/containers/test3.not-a-yaml
Suppression de launcher_go/v2/test/containers/test2.yaml
Suppression de launcher_go/v2/test/containers/test.yml
Suppression de launcher_go/v2/test/containers/standalone.yml
Suppression de launcher_go/v2/main.go
Suppression de launcher_go/v2/go_suite_test.go
Suppression de launcher_go/v2/go.sum
Suppression de launcher_go/v2/go.mod
Suppression de launcher_go/v2/docker/docker_suite_test.go
Suppression de launcher_go/v2/docker/commands_test.go
Suppression de launcher_go/v2/docker/commands.go
Suppression de launcher_go/v2/config/config_test.go
Suppression de launcher_go/v2/config/config_suite_test.go
Suppression de launcher_go/v2/config/config.go
Suppression de launcher_go/v2/cli_runtime_test.go
Suppression de launcher_go/v2/cli_runtime.go
Suppression de launcher_go/v2/cli_build_test.go
Suppression de launcher_go/v2/cli_build.go
Suppression de launcher_go/v2/bin/.gitignore
Suppression de launcher_go/v2/Makefile
Suppression de launcher_go/README.md
Suppression de image/monitor/src/monitor.rb
Suppression de image/monitor/Dockerfile
Suppression de image/discourse_fast_switch/create_switch.rb
Suppression de image/discourse_fast_switch/Dockerfile
Suppression de image/discourse_bench/run_bench.sh
Suppression de image/discourse_bench/Dockerfile
Fusion automatique de .gitignore
Suppression de .github/workflows/launcher_go.yml
Fusion effectuée par la stratégie 'recursive'.
 .github/workflows/build.yml                     |  65 +++++++++++++++++++++--------
 .github/workflows/launcher_go.yml               |  45 --------------------
 .gitignore                                      |   1 +
 README.md                                       |   7 +++-
 discourse-setup                                 |   4 +-
 image/README.md                                 |  12 +-----
 image/auto_build.rb                             |  16 ++++++-
 image/base/Dockerfile                           | 160 ++++++++++++++++++++++++++++++++++++++++++-----------------------------
 image/base/install-imagemagick                  |  27 ++++++------
 image/base/install-jemalloc                     |   6 +--
 image/base/install-nginx                        |   4 +-
 image/base/install-oxipng                       |   8 +++-
 image/base/install-redis                        |   4 +-
 image/base/install-rust                         |   2 +-
 image/discourse_bench/Dockerfile                |  34 ---------------
 image/discourse_bench/run_bench.sh              |  19 ---------
 image/discourse_dev/postgres_dev.template.yml   |  10 ++---
 image/discourse_fast_switch/Dockerfile          |  23 -----------
 image/discourse_fast_switch/create_switch.rb    |  25 -----------
 image/discourse_test/Dockerfile                 |   7 +--
 image/monitor/Dockerfile                        |  13 ------
 image/monitor/src/monitor.rb                    |  98 -------------------------------------------
 launcher                                        |   4 +-
 launcher_go/README.md                           | 134 -----------------------------------------------------------
 launcher_go/v2/Makefile                         |  10 -----
 launcher_go/v2/bin/.gitignore                   |   1 -
 launcher_go/v2/cli_build.go                     | 180 -------------------------------------------------------------------------------
 launcher_go/v2/cli_build_test.go                | 254 ----------------------------------------------------------------------------------------------------------------
 launcher_go/v2/cli_runtime.go                   | 373 --------------------------------------------------------------------------------------------------------------------------------------------------------------------
 launcher_go/v2/cli_runtime_test.go              | 204 --------------------------------------------------------------------------
 launcher_go/v2/config/config.go                 | 231 ------------------------------------------------------------------------------------------------------
 launcher_go/v2/config/config_suite_test.go      |  13 ------
 launcher_go/v2/config/config_test.go            |  61 ---------------------------
 launcher_go/v2/docker/commands.go               | 324 ----------------------------------------------------------------------------------------------------------------------------------------------
 launcher_go/v2/docker/commands_test.go          |  43 -------------------
 launcher_go/v2/docker/docker_suite_test.go      |  13 ------
 launcher_go/v2/go.mod                           |  30 --------------
 launcher_go/v2/go.sum                           |  64 -----------------------------
 launcher_go/v2/go_suite_test.go                 |  18 --------
 launcher_go/v2/main.go                          |  92 -----------------------------------------
 launcher_go/v2/test/containers/standalone.yml   | 109 ------------------------------------------------
 launcher_go/v2/test/containers/test.yml         | 121 -----------------------------------------------------
 launcher_go/v2/test/containers/test2.yaml       |   0
 launcher_go/v2/test/containers/test3.not-a-yaml |   0
 launcher_go/v2/test/containers/web_only.yml     | 114 --------------------------------------------------
 launcher_go/v2/test/templates/web.template.yml  | 443 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 launcher_go/v2/test_utils/utils.go              |  42 -------------------
 launcher_go/v2/utils/cmd_runner.go              |  28 -------------
 launcher_go/v2/utils/consts.go                  |  50 ----------------------
 launcher_go/v2/utils/find_config.go             |  51 -----------------------
 launcher_go/v2/utils/find_config_test.go        |  39 ------------------
 launcher_go/v2/utils/utils_suite_test.go        |  13 ------
 templates/import/phpbb3.template.yml            |   5 ++-
 templates/postgres.10.template.yml              |   3 +-
 templates/postgres.12.template.yml              |   3 +-
 templates/postgres.13.template.yml              | 175 +++++++++++++++++++++++++++++------------------------------------------------
 templates/postgres.15.template.yml              |  53 +++++++++++-------------
 templates/postgres.9.5.template.yml             |   3 +-
 templates/postgres.template.yml                 |  96 +++++++++++++++++++++++++------------------
 templates/web.socketed.template.yml             |   4 +-
 templates/web.ssl.template.yml                  |  32 +++++++--------
 templates/web.template.yml                      |  12 ++----
 62 files changed, 382 insertions(+), 3653 deletions(-)
 delete mode 100644 .github/workflows/launcher_go.yml
 delete mode 100644 image/discourse_bench/Dockerfile
 delete mode 100644 image/discourse_bench/run_bench.sh
 delete mode 100644 image/discourse_fast_switch/Dockerfile
 delete mode 100644 image/discourse_fast_switch/create_switch.rb
 delete mode 100644 image/monitor/Dockerfile
 delete mode 100644 image/monitor/src/monitor.rb
 delete mode 100644 launcher_go/README.md
 delete mode 100644 launcher_go/v2/Makefile
 delete mode 100644 launcher_go/v2/bin/.gitignore
 delete mode 100644 launcher_go/v2/cli_build.go
 delete mode 100644 launcher_go/v2/cli_build_test.go
 delete mode 100644 launcher_go/v2/cli_runtime.go
 delete mode 100644 launcher_go/v2/cli_runtime_test.go
 delete mode 100644 launcher_go/v2/config/config.go
 delete mode 100644 launcher_go/v2/config/config_suite_test.go
 delete mode 100644 launcher_go/v2/config/config_test.go
 delete mode 100644 launcher_go/v2/docker/commands.go
 delete mode 100644 launcher_go/v2/docker/commands_test.go
 delete mode 100644 launcher_go/v2/docker/docker_suite_test.go
 delete mode 100644 launcher_go/v2/go.mod
 delete mode 100644 launcher_go/v2/go.sum
 delete mode 100644 launcher_go/v2/go_suite_test.go
 delete mode 100644 launcher_go/v2/main.go
 delete mode 100644 launcher_go/v2/test/containers/standalone.yml
 delete mode 100644 launcher_go/v2/test/containers/test.yml
 delete mode 100644 launcher_go/v2/test/containers/test2.yaml
 delete mode 100644 launcher_go/v2/test/containers/test3.not-a-yaml
 delete mode 100644 launcher_go/v2/test/containers/web_only.yml
 delete mode 100644 launcher_go/v2/test/templates/web.template.yml
 delete mode 100644 launcher_go/v2/test_utils/utils.go
 delete mode 100644 launcher_go/v2/utils/cmd_runner.go
 delete mode 100644 launcher_go/v2/utils/consts.go
 delete mode 100644 launcher_go/v2/utils/find_config.go
 delete mode 100644 launcher_go/v2/utils/find_config_test.go
 delete mode 100644 launcher_go/v2/utils/utils_suite_test.go

Re-téléchargez.

git pull origin main

From https://github.com/discourse/discourse_docker
 * branch            main       -> FETCH_HEAD
Already up to date.

Maintenant que vous êtes à jour, essayez une reconstruction.

Voici les étapes que j’ai suivies pour mettre à niveau Discourse. cela fonctionne

@Falco @Ed_S Merci pour votre aide

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

Cette solution (suivie d’une reconstruction) a également fonctionné pour moi. Merci !

Sheila Ruth