Problèmes de mise à jour/reconstruction vers Beta7

Bonjour,

J’essaie actuellement de mettre à jour notre instance DEV vers la dernière version Beta 7, en partant de la Beta 2.
Elle tourne sur la branche par défaut tests-passed.

Mon problème est que la reconstruction du conteneur aboutit à un problème de connectivité (je suppose) avec GitHub :

I, [2025-07-28T12:35:19.480463 #1]  INFO -- : Remplacement de # postgres par if [ -f /root/install_postgres ]; then
  /root/install_postgres
  rm /root/install_postgres
fi
sv start postgres || exit 1
 dans /etc/service/unicorn/run
I, [2025-07-28T12:35:19.480838 #1]  INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse git clean -f
I, [2025-07-28T12:35:19.511065 #1]  INFO -- : 
I, [2025-07-28T12:35:19.511112 #1]  INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse bash -c '
  set -o errexit
  if [ $(git rev-parse --is-shallow-repository) == "true" ]; then
      git remote set-branches --add origin main
      git remote set-branches origin tests-passed
      git fetch --depth 1 origin tests-passed
  else
      git fetch --tags --prune-tags --prune --force origin
  fi
'
error: RPC failed; curl 56 Recv failure: Connection reset by peer
error: 44 bytes of body are still expected
fatal: expected flush after ref listing
I, [2025-07-28T12:37:22.158398 #1]  INFO -- : 
I, [2025-07-28T12:37:22.158628 #1]  INFO -- : Terminaison des processus asynchrones

La connectivité générale sur l’hôte est par ailleurs fonctionnelle. Si je vide le cache de build Docker avant d’exécuter ./launcher rebuild app, je constate qu’il télécharge bien la version la plus récente, récupère toutes les images de conteneurs, etc., mais échoue ensuite :

Sortie standard longue
I, [2025-07-28T12:19:42.269421 #1]  INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse bash -c '
  set -o errexit
  if [ $(git rev-parse --is-shallow-repository) == "true" ]; then
      git remote set-branches --add origin main
      git remote set-branches origin tests-passed
      git fetch --depth 1 origin tests-passed
  else
      git fetch --tags --prune-tags --prune --force origin
  fi
'
Depuis https://github.com/discourse/discourse
 - [deleted]             (none)     -> origin/dependabot/bundler/nokogiri-1.18.9
 - [deleted]             (none)     -> origin/dependabot/bundler/playwright-ruby-client-1.54.0
 - [deleted]             (none)     -> origin/dependabot/bundler/propshaft-1.2.0
 - [deleted]             (none)     -> origin/dependabot/npm_and_yarn/babel-plugin-ember-template-compilation-3.0.0
 - [deleted]             (none)     -> origin/dependabot/npm_and_yarn/glob-11.0.3
 - [deleted]             (none)     -> origin/dependabot/npm_and_yarn/playwright-1.54.1
 - [deleted]             (none)     -> origin/dev/decorate-quote-collapsed-content-properly
 - [deleted]             (none)     -> origin/dev/extract-invite-guardian
 - [deleted]             (none)     -> origin/dev/mt/discourse-category-custom-fields
 - [deleted]             (none)     -> origin/dev/mt/discourse-group-users
 - [deleted]             (none)     -> origin/dev/mt/discourse-groups
 - [deleted]             (none)     -> origin/dev/mt/discourse-muted-users
 - [deleted]             (none)     -> origin/dev/mt/requires-set
 - [deleted]             (none)     -> origin/dev/no-more-widgets
 - [deleted]             (none)     -> origin/dev/use-themeable-site-settings-horizon
 - [deleted]             (none)     -> origin/enable-new-topic-btn-on-restricted-category
 - [deleted]             (none)     -> origin/feature-admin-filter-controls
 - [deleted]             (none)     -> origin/feature/enable-rich-editor-for-all
 - [deleted]             (none)     -> origin/filtermagic
 - [deleted]             (none)     -> origin/fix/mt/log-failed-downloads
 - [deleted]             (none)     -> origin/fix/translated-badge-title
 - [deleted]             (none)     -> origin/layout-container-dev
 - [deleted]             (none)     -> origin/loic-upgrade-rails-8.0
 - [deleted]             (none)     -> origin/media-convert-job
 - [deleted]             (none)     -> origin/merge-sso-destination-url-cookie-with-destination-url-cookie
 - [deleted]             (none)     -> origin/mt/set_store
 - [deleted]             (none)     -> origin/pento/dev-flag-reason-tests
 - [deleted]             (none)     -> origin/playwright-1.53
 - [deleted]             (none)     -> origin/refactor-color-palette
 - [deleted]             (none)     -> origin/remove-suspended-and-deleted-users-from-leaderboard
 - [deleted]             (none)     -> origin/rollup-theme-experiment
 - [deleted]             (none)     -> origin/ux-editor-toolbar-mobile-scroll
 - [deleted]             (none)     -> origin/ux/sidebar-show-messages-count
   43ddd4ef3..ea5b5b6c0  main                    -> origin/main
 * [new branch]          0-a-depr-html-safe      -> origin/0-a-depr-html-safe
 * [new branch]          0-a-tabs                -> origin/0-a-tabs
 * [new branch]          add-composer-mention-warnings -> origin/add-composer-mention-warnings
   187f13d67..8d4a86f25  add-plugin-outlet-wrapper-to-login-template -> origin/add-plugin-outlet-wrapper-to-login-template
 * [new branch]          ai_default_llm          -> origin/ai_default_llm
 * [new branch]          content-border-color    -> origin/content-border-color
 + 51077ac74...088f149a6 dependabot/bundler/excon-1.2.8 -> origin/dependabot/bundler/excon-1.2.8  (mise à jour forcée)
 + 36699b311...e3f5c2d0d dependabot/bundler/jwt-3.1.2 -> origin/dependabot/bundler/jwt-3.1.2  (mise à jour forcée)
 * [new branch]          dependabot/bundler/octokit-10.0.0 -> origin/dependabot/bundler/octokit-10.0.0
 * [new branch]          dependabot/bundler/stripe-15.3.0 -> origin/dependabot/bundler/stripe-15.3.0
 + def825f3f...b5a5f3924 dependabot/bundler/web-push-3.0.2 -> origin/dependabot/bundler/web-push-3.0.2  (mise à jour forcée)
 * [new branch]          dependabot/bundler/zendesk_api-3.1.1 -> origin/dependabot/bundler/zendesk_api-3.1.1
 + f4d832ec8...5aa0145f3 dependabot/npm_and_yarn/embroider-0ad991d471 -> origin/dependabot/npm_and_yarn/embroider-0ad991d471  (mise à jour forcée)
 * [new branch]          dependabot/npm_and_yarn/fortawesome/fontawesome-free-7.0.0 -> origin/dependabot/npm_and_yarn/fortawesome/fontawesome-free-7.0.0
 * [new branch]          dependabot/npm_and_yarn/jspreadsheet-ce-5.0.3 -> origin/dependabot/npm_and_yarn/jspreadsheet-ce-5.0.3
 * [new branch]          dependabot/npm_and_yarn/lint-fda1ac657e -> origin/dependabot/npm_and_yarn/lint-fda1ac657e
 + e46dc3798...d3420e3eb dependabot/npm_and_yarn/prosemirror-f8434604ae -> origin/dependabot/npm_and_yarn/prosemirror-f8434604ae  (mise à jour forcée)
 * [new branch]          dependabot/npm_and_yarn/puppeteer-core-24.15.0 -> origin/dependabot/npm_and_yarn/puppeteer-core-24.15.0
 + 4bcbc028d...03b9759db dev-floatkit-autocomplete-d-editor -> origin/dev-floatkit-autocomplete-d-editor  (mise à jour forcée)
 + ea5bba76a...03b9759db dev-floatkit-autocomplete-d-editor-qa -> origin/dev-floatkit-autocomplete-d-editor-qa  (mise à jour forcée)
 * [new branch]          dev/decorate-cooked-state -> origin/dev/decorate-cooked-state
   56e6c9ae1..11c480f88  dev/no-more-widgets-smoke-test -> origin/dev/no-more-widgets-smoke-test
 * [new branch]          dev/post-keep-detail-state -> origin/dev/post-keep-detail-state
 * [new branch]          dev/prevent-rerenderings -> origin/dev/prevent-rerenderings
 * [new branch]          dev/remove-redundant-staff-check-6 -> origin/dev/remove-redundant-staff-check-6
   1f3bbee91..00dfb95b1  dev/try-fix-flakys-tss  -> origin/dev/try-fix-flakys-tss
 * [new branch]          dual-mode-palettes-wip  -> origin/dual-mode-palettes-wip
 * [new branch]          feature/color-mode-preference -> origin/feature/color-mode-preference
 * [new branch]          feature/type-upload-in-type-objects -> origin/feature/type-upload-in-type-objects
 * [new branch]          feature/use-current-user-tz-instead-of-guess-local-dates -> origin/feature/use-current-user-tz-instead-of-guess-local-dates
 * [new branch]          filter-tips-dmenu-martinwip -> origin/filter-tips-dmenu-martinwip
 * [new branch]          filter-updates          -> origin/filter-updates
 * [new branch]          fix-color-palette-dark  -> origin/fix-color-palette-dark
 * [new branch]          fix/missing-user-custom-preferences-outlet-class-in-connector -> origin/fix/missing-user-custom-preferences-outlet-class-in-connector
 * [new branch]          improve_no_database_error_patch -> origin/improve_no_database_error_patch
 * [new branch]          improve_pg_adapter_new_client_error -> origin/improve_pg_adapter_new_client_error
 * [new branch]          loic-pitchfork          -> origin/loic-pitchfork
 * [new branch]          messages-dropdown-d-menu -> origin/messages-dropdown-d-menu
 * [new branch]          my-pref-lang            -> origin/my-pref-lang
 * [new branch]          notification-panel-refactor -> origin/notification-panel-refactor
 * [new branch]          pinned-dmenu            -> origin/pinned-dmenu
 * [new branch]          rollup-plugin-experiment -> origin/rollup-plugin-experiment
 * [new branch]          rollup-theme-experiment-cross-theme-import -> origin/rollup-theme-experiment-cross-theme-import
 * [new branch]          samsaffron/codex/convert-filter-tips-to-use-dmenu -> origin/samsaffron/codex/convert-filter-tips-to-use-dmenu
   8cb90072e..710d9fd41  sandbox/design-1        -> origin/sandbox/design-1
   1f97cf422..aa2fb29fa  sandbox/dev-xp-1        -> origin/sandbox/dev-xp-1
   817a743cb..3428acddc  sandbox/member-xp-1     -> origin/sandbox/member-xp-1
 + d182efe6f...a0aba00c7 sandbox/member-xp-2     -> origin/sandbox/member-xp-2  (mise à jour forcée)
 * [new branch]          source-identify-modulepreload -> origin/source-identify-modulepreload
 + 9aa6daa1f...c56258634 split-login-admin-settings -> origin/split-login-admin-settings  (mise à jour forcée)
   a83bd0f67..41e1152f6  stable                  -> origin/stable
 + 293de3a75...e31549885 temp-user-creation-debug-logging -> origin/temp-user-creation-debug-logging  (mise à jour forcée)
   43ddd4ef3..ea5b5b6c0  tests-passed            -> origin/tests-passed
 * [new branch]          theme-upload-cleanup    -> origin/theme-upload-cleanup
 * [new branch]          translations-from-crowdin-main -> origin/translations-from-crowdin-main
 + 9f8fd9214...c3562ed3a translations-from-crowdin-stable -> origin/translations-from-crowdin-stable  (mise à jour forcée)
 + 4ffab7134...e211b4a55 unicode-mentions-in-composer-rte -> origin/unicode-mentions-in-composer-rte  (mise à jour forcée)
 * [new branch]          ux-footer-button-squish -> origin/ux-footer-button-squish
 * [new branch]          ux-horizon-discotoc     -> origin/ux-horizon-discotoc
 * [new branch]          ux-unify-appearance-filters -> origin/ux-unify-appearance-filters
   b0c2d83ec..045aefecb  ux/horizon-mobile-composer -> origin/ux/horizon-mobile-composer
 * [new branch]          ux/sidebar-my-messages-enhancements -> origin/ux/sidebar-my-messages-enhancements
 + 28d11bbd0...6f7d9e816 variable-additions-2    -> origin/variable-additions-2  (mise à jour forcée)
   39d2564ba..57dcfda6a  vite-squashed-rebased   -> origin/vite-squashed-rebased
I, [2025-07-28T12:19:43.174876 #1]  INFO -- : 
I, [2025-07-28T12:19:43.174943 #1]  INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse bash -c '
  set -o errexit
  if [[ $(git symbolic-ref --short HEAD) == tests-passed ]] ; then
      git pull
  else
      git -c advice.detachedHead=false checkout tests-passed
  fi
'
error: RPC failed; curl 56 Recv failure: Connection reset by peer
error: 5470 bytes of body are still expected
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output
fatal: could not fetch bff89c0762e874ec88d553d89901dbda4fa89f20 from promisor remote
I, [2025-07-28T12:23:50.121438 #1]  INFO -- : 

Pendant qu’il tente de récupérer des données depuis GitHub, je n’observe aucune activité sur l’hôte dans htop.

Détails de l’hôte : VM Proxmox sous Debian 11, 4 cœurs, 12 Go de mémoire. Il reste beaucoup de mémoire libre pendant la reconstruction, donc cela ne devrait pas être un problème de mémoire.
Le serveur est hébergé en Allemagne, il ne devrait donc y avoir aucun blocage d’accès à GitHub.
J’ai constaté que les messages suivants :

fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output

indiquent un dépassement de délai (timeout), par exemple lorsque la connexion est trop lente. Un test de vitesse de connexion affiche environ 890 Mbit/s en montée et en descente. Le stockage est entièrement NVMe, je ne vois donc aucune raison d’un dépassement de délai à cette étape.

J’ai essayé de vider tout le cache de build Docker, de mettre à jour le système hôte vers les derniers paquets, de redémarrer, et même de déplacer la VM vers un autre nœud du cluster pour écarter un hôte défectueux comme cause du problème.

J’ai failli oublier d’ajouter : En accédant au panneau d’administration, je reçois l’information que je ne suis pas sur la dernière version, mais cliquer sur Cliquez ici pour mettre à jour entraîne une erreur :

Server-Error
while loading /admin/docker/repos
Errorcode: 502 error

Je vois également des erreurs de dépassement de délai ici :

activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool/queue.rb:128:in `block in wait_poll' 
<internal:kernel>:187:in `loop'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool/queue.rb:117:in `wait_poll' 
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool/queue.rb:78:in `internal_poll' 
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool/queue.rb:204:in `internal_poll' 
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool/queue.rb:73:in `block in poll' 
/usr/local/lib/ruby/3.3.0/monitor.rb:201:in `synchronize'
/usr/local/lib/ruby/3.3.0/monitor.rb:201:in `mon_synchronize'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool/queue.rb:82:in `synchronize' 
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool/queue.rb:73:in `poll' 
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:868:in `acquire_connection' 
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:564:in `checkout' 
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `with_connection' 
activerecord-7.2.2.1/lib/active_record/connection_handling.rb:296:in `with_connection' 
activerecord-7.2.2.1/lib/active_record/transactions.rb:410:in `with_transaction_returning_status' 
activerecord-7.2.2.1/lib/active_record/transactions.rb:366:in `save!' 
activerecord-7.2.2.1/lib/active_record/suppressor.rb:56:in `save!' 
activerecord-7.2.2.1/lib/active_record/persistence.rb:55:in `create!' 
mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:128:in `process_queue' 
mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:77:in `worker_loop' 
mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:63:in `block (2 levels) in ensure_worker_threads' 

et

excon-1.2.5/lib/excon/socket.rb:386:in `select_with_timeout' 
excon-1.2.5/lib/excon/socket.rb:258:in `rescue in read_nonblock' 
excon-1.2.5/lib/excon/socket.rb:228:in `read_nonblock' 
excon-1.2.5/lib/excon/socket.rb:89:in `block in readline' 
<internal:kernel>:187:in `loop'
excon-1.2.5/lib/excon/socket.rb:78:in `readline' 
excon-1.2.5/lib/excon/response.rb:73:in `block in parse' 
<internal:kernel>:187:in `loop'
excon-1.2.5/lib/excon/response.rb:72:in `parse' 
excon-1.2.5/lib/excon/middlewares/response_parser.rb:7:in `response_call' 
excon-1.2.5/lib/excon/connection.rb:472:in `response' 
excon-1.2.5/lib/excon/connection.rb:297:in `request' 
/var/www/discourse/lib/discourse_updates.rb:136:in `new_features_payload' 
/var/www/discourse/app/jobs/scheduled/check_new_features.rb:24:in `execute' 
/var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform' 
rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:303:in `block in perform' 
/var/www/discourse/app/jobs/base.rb:299:in `each' 
/var/www/discourse/app/jobs/base.rb:299:in `perform' 
/var/www/discourse/app/jobs/base.rb:379:in `perform' 
mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:137:in `process_queue' 
mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:77:in `worker_loop' 
mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:63:in `block (2 levels) in ensure_worker_threads' 

Je suis vraiment à court d’idées. J’ai essayé d’augmenter les ressources système, mais ajouter plus de cœurs ou de mémoire ne change rien, l’erreur persiste.

J’ai également essayé d’augmenter git http.postBuffer, maintenant cela reste bloqué un peu plus longtemps avant d’échouer.

J’espère que quelqu’un aura une idée, car je n’ai trouvé aucun autre fil de discussion ou post concernant ce type d’erreur.

Merci !

Avez-vous de nombreuses extensions dans votre fichier app.yml ? Il pourrait être utile de toutes les commenter et de voir si les choses fonctionnent, et si c’est le cas, vous pouvez commencer à les décommenter une par une.

Nous n’utilisons pas beaucoup de plugins. J’ai également déjà supprimé ceux qui ont été intégrés au noyau conformément aux journaux des modifications.

Seuls ceux-ci sont actuellement configurés :

          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-translator.git
          - git clone https://github.com/discourse/onebox.git

Je les ai mis en commentaire, mais cela reste bloqué au même point.

Il ne s’agit également que d’une instance de développement, donc pas d’inquiétude concernant les données. Si tout échoue, je pourrai simplement utiliser une sauvegarde du serveur de production pour la relancer. Mais notre système de production est sur la même version, donc je suppose que je rencontrerai les mêmes problèmes là-bas également.

Cela ressemble à un problème de fournisseur, ou peut-être à un problème de noyau. Mais je n’ai pas de familiarité avec une installation de développement.

Il est hébergé chez Hetzner en Allemagne, il n’y a rien de spécial dans le noyau non plus, juste Debian 11 par défaut au noyau 5.10.237-1.

DEV-Instance fait simplement référence au fait qu’il s’agit de notre instance de test pour essayer des choses comme les mises à jour/montées en version avant de les appliquer à notre configuration de production actuelle, afin de s’assurer qu’elles ne cassent pas la version en direct. C’est donc essentiellement une réplique de notre système en direct pour essayer des choses.

Ah, d’accord. Si c’est basé sur le conteneur habituel, et qu’il rencontre des problèmes de connectivité, je pense que ce n’est pas un problème de Discourse.

Votre noyau est très ancien. J’utilise Ubuntu 24.04 avec 6.8.0-53.

Le noyau a été compilé en mai 2025 et est l’actuel pour Debian 11, qui est toujours entièrement pris en charge. 2 mois, ce n’est pas vraiment « très vieux ».

Cependant, pour écarter cette piste, j’ai mis à niveau le système vers Debian 12 et le noyau principal le plus récent, le 6.10 (encore une fois, pas vieux, c’est le noyau Debian 12 le plus récent sans exécuter de builds de développement/nocturnes/prévisualisation) et le problème est exactement le même.

Tout fonctionne sur l’hôte, il n’y a aucun problème de connectivité avec GitHub ou d’autres sites, même une mise à niveau complète du système vient de se dérouler en 5 minutes sans problème. La seule chose qui ne fonctionne pas sur ce système est Discourse, alors que cela fonctionnait auparavant pendant plusieurs années.

Il est également étrange que la mise à jour via le panneau d’administration n’affiche qu’un 502, ce qui indique des problèmes internes à Discourse, alors qu’il s’agit d’une image standard largement non modifiée. Aucun plugin tiers n’est installé, aucune modification à l’exception d’un thème personnalisé.

C’est très étrange. Bien joué d’avoir vérifié le noyau - il y a eu des incompatibilités de version du noyau, mais ce n’est manifestement pas le cas.

Vous pouvez obtenir une ligne de commande à l’intérieur du conteneur et peut-être essayer quelques opérations réseau (wget ou curl), mais je ne suis pas sûr de ce que cela pourrait prouver.

Je n’ai pas d’autres idées pour le moment, désolé.

J’ai constaté que les erreurs indiquent des configurations Git qui pourraient devoir être modifiées, mais je ne suis pas sûr de l’endroit où je les modifierais, car tout se passe dans le conteneur pendant la reconstruction. Les modifier sur l’hôte lui-même n’a pas vraiment eu d’effet.

Ainsi, des modifications comme git config http.postBuffer 524288000 n’affecteront probablement pas la reconstruction si elles sont modifiées sur le système hôte.
Il en va de même pour les paramètres de compression ou les limites de mémoire Git.

Je vais voir si je peux mettre en place une nouvelle configuration sur un hôte similaire ou si cela échoue également avec la même version.

Peut-être pourriez-vous ajouter des spécifications de commande dans votre fichier app.yml - voir

J’ai essayé cela maintenant et malheureusement, aucun changement. Je ne suis pas sûr si la commande est exécutée avant d’essayer de récupérer/construire le conteneur réel.

Cela devrait s’exécuter dès le début de la (re)construction. Je m’attendrais à ce que ces hooks s’exécutent après avoir récupéré/construit le site dans /var/www/discourse, ce qui ne se termine pas pour moi.

Je suis vraiment à court d’idées à ce stade…

Edit : J’ai donc essayé de diagnostiquer le problème depuis l’intérieur du conteneur en cours d’exécution et il semble y avoir un problème également. Tenter de cloner le dépôt docker de discourse échoue également ici :

root@community-app:/tmp# git clone https://github.com/discourse/discourse_docker.git
Clonage dans 'discourse_docker'...
remote: Énumération des objets : 7235, fait.
remote: Comptage des objets : 100% (234/234), fait.
remote: Compression des objets : 100% (104/104), fait.
error: RPC échoué ; curl 56 Recv failure: Connection reset by peer
error: 1355 octets du corps sont encore attendus
fetch-pack: déconnexion inattendue lors de la lecture du paquet sideband
fatal: early EOF
fatal: fetch-pack: sortie index-pack invalide

Il doit donc y avoir quelque chose qui ne va pas dans docker ou… je ne sais pas.
Je peux cloner le même dépôt sans problème depuis le système hôte, mais pas à l’intérieur du conteneur. C’est le même point où la reconstruction échoue.

Je vais diagnostiquer un peu le réseau docker, peut-être que je trouverai quelque chose.

Ouf, j’ai finalement trouvé. Le problème venait bien de Docker et du réseau hôte, pas de Discourse.

Hetzner, si vous utilisez un vSwitch avec un sous-réseau public, exige que l’MTU soit réglé sur 1400 au lieu de 1500. J’avais changé cela à un moment donné, mais apparemment ce changement a été annulé à un moment donné. J’ai donc dû refaire cela et redémarrer Docker avec le bon MTU.

Maintenant, le site de mise à jour au sein de Discourse fonctionne également.

Drôle comme tout le reste fonctionnait tout le temps.