Problemas ao atualizar a versão antiga 2.8.5

Acontece que não atualizamos o Discourse há muito tempo. Atualmente estamos na v2.8.5. Recentemente descobri que o Discourse está muito além da versão 3.
Eu gostaria de atualizar para a versão atual, mas por enquanto, gostaria de pelo menos atualizar para a versão mais recente 2.8.x - 2.8.14.
E aqui está um grande problema. Quando eu reconstruo, o Discourse atualiza a imagem base e recebo este erro:

FAILED
--------------------
Pups::ExecError: grep -q 'outlets/before-server' /etc/nginx/conf.d/discourse.conf || ( >&2 echo 'The "before-server" Nginx outlet is missing. This version of discourse_docker is not compatible with the chosen Discourse version.' ; exit 1 ) failed with return #<Process::Status: pid 300 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/exec_command.rb:131:in `spawn'
exec failed with the params {"cmd"=>["cp $home/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf", "rm /etc/nginx/sites-enabled/default", "mkdir -p /var/nginx/cache", "grep -q 'outlets/before-server' /etc/nginx/conf.d/discourse.conf || ( >&2 echo 'The \\"before-server\\" Nginx outlet is missing. This version of discourse_docker is not compatible with the chosen Discourse version.' ; exit 1 )", "grep -q 'outlets/server' /etc/nginx/conf.d/discourse.conf || ( >&2 echo 'The \\"server\\" Nginx outlet is missing. This version of discourse_docker is not compatible with the chosen Discourse version.' ; exit 1 )", "grep -q 'outlets/discourse' /etc/nginx/conf.d/discourse.conf || ( >&2 echo 'The \\"discourse\\" Nginx outlet is missing. This version of discourse_docker is not compatible with the chosen Discourse version.' ; exit 1 )", "mkdir -p /etc/nginx/conf.d/outlets/before-server", "touch /etc/nginx/conf.d/outlets/before-server/20-redirect-http-to-https.conf", "touch /etc/nginx/conf.d/outlets/before-server/30-ratelimited.conf", "mkdir -p /etc/nginx/conf.d/outlets/server", "touch /etc/nginx/conf.d/outlets/server/10-http.conf", "touch /etc/nginx/conf.d/outlets/server/20-https.conf", "touch /etc/nginx/conf.d/outlets/server/30-offline-page.conf", "mkdir -p /etc/nginx/conf.d/outlets/discourse", "touch /etc/nginx/conf.d/outlets/discourse/20-https.conf", "touch /etc/nginx/conf.d/outlets/discourse/30-ratelimited.conf"]}
bootstrap failed with exit code 1
---
HINT: The plugin 'discourse-openid-connect' is now bundled with Discourse and should not be included in your container configuration.
Remove the line 'git clone https://github.com/discourse/discourse-openid-connect' from your containers/app.yml file, then try again.
For more information, see https://meta.discourse.org/t/373574
---
---
HINT: The plugin 'discourse-data-explorer' is now bundled with Discourse and should not be included in your container configuration.
Remove the line 'git clone https://github.com/discourse/discourse-data-explorer' from your containers/app.yml file, then try again.
For more information, see https://meta.discourse.org/t/373574
---
---
HINT: The plugin 'discourse-staff-notes' is now bundled with Discourse and should not be included in your container configuration.
Remove the line 'git clone https://github.com/discourse/discourse-staff-notes' from your containers/app.yml file, then try again.
For more information, see https://meta.discourse.org/t/373574
---
---
HINT: The plugin 'discourse-assign' is now bundled with Discourse and should not be included in your container configuration.
Remove the line 'git clone https://github.com/discourse/discourse-assign' from your containers/app.yml file, then try again.
For more information, see https://meta.discourse.org/t/373574
---
---
HINT: The plugin 'discourse-solved' is now bundled with Discourse and should not be included in your container configuration.
Remove the line 'git clone https://github.com/discourse/discourse-solved' from your containers/app.yml file, then try again.
For more information, see https://meta.discourse.org/t/373574
---
---
HINT: The plugin 'discourse-cakeday' is now bundled with Discourse and should not be included in your container configuration.
Remove the line 'git clone https://github.com/discourse/discourse-cakeday' from your containers/app.yml file, then try again.
For more information, see https://meta.discourse.org/t/373574
---
** 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.

Os plugins estão todos claros - eles precisam ser comentados no app.yaml. Mas isso não ajuda - os erros de plugin desaparecem, e o erro:

The "discourse" Nginx outlet is missing. This version of discourse_docker is not compatible with the chosen Discourse version

permanece.

E eu não posso fazer nada a respeito. Existe alguma maneira de atualizar meu fórum para a versão 2.8.14?

Se não, e para o futuro, como posso atualizar da versão 2.8.5 para a versão 3.x.x? A situação é complicada pelo fato de eu usar um banco de dados externo, PosgreSQL. Pelo que entendi, devido aos recursos de IA no novo Discourse, ele requer um banco de dados vetorial, o PgVector. Preciso migrar de alguma forma? Existe um guia sobre como fazer isso de forma correta e indolor?

Eu realmente apreciaria sua ajuda!

Tente atualizar o Docker. Isso pode ajudar. Se não ajudar, talvez seja isto?

─# docker version
Client: Docker Engine - Community
 Version:           28.1.1
 API version:       1.49
 Go version:        go1.23.8
 Git commit:        4eba377
 Built:             Sex Abr 18 09:52:18 2025
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          28.1.1
  API version:      1.49 (versão mínima 1.24)
  Go version:       go1.23.8
  Git commit:       01f442b
  Built:            Sex Abr 18 09:52:18 2025
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.7.27
  GitCommit:        05044ec0a9a75232cad458027ca83437aae3f4da
 runc:
  Version:          1.2.5
  GitCommit:        v1.2.5-0-g59923ef
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
└─# lsb_release -a
Nenhum módulo LSB está disponível.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.6 LTS
Release:	20.04
Codename:	focal

Removi todos os plugins do app.yaml. Isso não ajudou:

FALHOU
--------------------
Pups::ExecError: grep -q 'outlets/before-server' /etc/nginx/conf.d/discourse.conf || ( >&2 echo 'O outlet Nginx \"before-server\" está faltando. Esta versão do discourse_docker não é compatível com a versão do Discourse escolhida.' ; exit 1 ) falhou com retorno #<Process::Status: pid 156 exit 1>
Local da falha: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/exec_command.rb:131:in `spawn'
exec falhou com os parâmetros {"cmd"=>["cp $home/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf", "rm /etc/nginx/sites-enabled/default", "mkdir -p /var/nginx/cache", "grep -q 'outlets/before-server' /etc/nginx/conf.d/discourse.conf || ( >&2 echo 'O outlet Nginx \\\"before-server\\\" está faltando. Esta versão do discourse_docker não é compatível com a versão do Discourse escolhida.' ; exit 1 )", "grep -q 'outlets/server' /etc/nginx/conf.d/discourse.conf || ( >&2 echo 'O outlet Nginx \\\"server\\\" está faltando. Esta versão do discourse_docker não é compatível com a versão do Discourse escolhida.' ; exit 1 )", "grep -q 'outlets/discourse' /etc/nginx/conf.d/discourse.conf || ( >&2 echo 'O outlet Nginx \\\"discourse\\\" está faltando. Esta versão do discourse_docker não é compatível com a versão do Discourse escolhida.' ; exit 1 )", "mkdir -p /etc/nginx/conf.d/outlets/before-server", "touch /etc/nginx/conf.d/outlets/before-server/20-redirect-http-to-https.conf", "touch /etc/nginx/conf.d/outlets/before-server/30-ratelimited.conf", "mkdir -p /etc/nginx/conf.d/outlets/server", "touch /etc/nginx/conf.d/outlets/server/10-http.conf", "touch /etc/nginx/conf.d/outlets/server/20-https.conf", "touch /etc/nginx/conf.d/outlets/server/30-offline-page.conf", "mkdir -p /etc/nginx/conf.d/outlets/discourse", "touch /etc/nginx/conf.d/outlets/discourse/20-https.conf", "touch /etc/nginx/conf.d/outlets/discourse/30-ratelimited.conf"]}
bootstrap falhou com código de saída 1
** FALHA AO INICIALIZAR ** role para cima e procure por mensagens de erro anteriores, pode haver mais de uma.
./discourse-doctor pode ajudar a diagnosticar o problema.

Por favor, compartilhe seu arquivo app.yml, sem senhas.

Parece que os plugins não são a causa da falha na reconstrução, o problema está aqui.

Você poderia fornecer o contexto anterior dos logs? Talvez o erro real tenha ocorrido lá.

This is full log:

└─# ./launcher rebuild app
x86_64 arch detected.
WARNING: containers/app.yml file is world-readable. You can secure this file by running: chmod o-rwx containers/app.yml
Ensuring launcher is up to date
Fetching origin
Launcher is up-to-date
Stopping old container
+ /usr/bin/docker stop -t 600 app
app
2.0.20251003-1437: Pulling from discourse/base
Digest: sha256:0db7c9b4598e2a1806658391669d791fd779aa4301fdfbed6a7f322bf64e66ab
Status: Image is up to date for discourse/base:2.0.20251003-1437
docker.io/discourse/base:2.0.20251003-1437
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2025-11-20T12:57:18.105575 #1]  INFO -- : Reading from stdin
I, [2025-11-20T12:57:18.116863 #1]  INFO -- : File > /etc/service/redis/run  chmod: +x  chown:
I, [2025-11-20T12:57:18.120584 #1]  INFO -- : File > /etc/service/redis/log/run  chmod: +x  chown:
I, [2025-11-20T12:57:18.124261 #1]  INFO -- : File > /etc/runit/3.d/10-redis  chmod: +x  chown:
I, [2025-11-20T12:57:18.124872 #1]  INFO -- : Replacing daemonize yes with  in /etc/redis/redis.conf
I, [2025-11-20T12:57:18.126958 #1]  INFO -- : Replacing (?-mix:^pidfile.*$) with  in /etc/redis/redis.conf
I, [2025-11-20T12:57:18.127984 #1]  INFO -- : > install -d -m 0755 -o redis -g redis /shared/redis_data
I, [2025-11-20T12:57:18.131369 #1]  INFO -- :
I, [2025-11-20T12:57:18.131807 #1]  INFO -- : Replacing (?-mix:^logfile.*$) with logfile "" in /etc/redis/redis.conf
I, [2025-11-20T12:57:18.132422 #1]  INFO -- : Replacing (?-mix:^bind .*$) with  in /etc/redis/redis.conf
I, [2025-11-20T12:57:18.134285 #1]  INFO -- : Replacing (?-mix:^dir .*$) with dir /shared/redis_data in /etc/redis/redis.conf
I, [2025-11-20T12:57:18.135071 #1]  INFO -- : Replacing (?-mix:^protected-mode yes) with protected-mode no in /etc/redis/redis.conf
I, [2025-11-20T12:57:18.135730 #1]  INFO -- : Replacing # io-threads 4 with io-threads $redis_io_threads in /etc/redis/redis.conf
I, [2025-11-20T12:57:18.136429 #1]  INFO -- : > echo redis installed
I, [2025-11-20T12:57:18.138350 #1]  INFO -- : redis installed

I, [2025-11-20T12:57:18.138598 #1]  INFO -- : > cat /etc/redis/redis.conf | grep logfile
I, [2025-11-20T12:57:18.142582 #1]  INFO -- : logfile ""

I, [2025-11-20T12:57:18.142916 #1]  INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf
I, [2025-11-20T12:57:18.144125 #1]  INFO -- : > sleep 10
18:C 20 Nov 2025 12:57:18.156 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
18:C 20 Nov 2025 12:57:18.156 # Redis version=7.0.15, bits=64, commit=00000000, modified=0, pid=18, just started
18:C 20 Nov 2025 12:57:18.156 # Configuration loaded
18:M 20 Nov 2025 12:57:18.157 * monotonic clock: POSIX clock_gettime
18:M 20 Nov 2025 12:57:18.158 * Running mode=standalone, port=6379.
18:M 20 Nov 2025 12:57:18.158 # Server initialized
18:M 20 Nov 2025 12:57:18.158 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
18:M 20 Nov 2025 12:57:18.158 * Loading RDB produced by version 7.0.15
18:M 20 Nov 2025 12:57:18.158 * RDB age 2960 seconds
18:M 20 Nov 2025 12:57:18.158 * RDB memory usage when created 6.02 Mb
18:M 20 Nov 2025 12:57:18.179 * Done loading RDB, keys loaded: 4596, keys expired: 9.
18:M 20 Nov 2025 12:57:18.179 * DB loaded from disk: 0.021 seconds
18:M 20 Nov 2025 12:57:18.179 * Ready to accept connections
I, [2025-11-20T12:57:28.146418 #1]  INFO -- :
I, [2025-11-20T12:57:28.147252 #1]  INFO -- : > thpoff echo "thpoff is installed!"
I, [2025-11-20T12:57:28.151019 #1]  INFO -- : thpoff is installed!

I, [2025-11-20T12:57:28.151452 #1]  INFO -- : > /usr/local/bin/ruby -e 'if ENV["DISCOURSE_SMTP_ADDRESS"] == "smtp.example.com"; puts "Aborting! Mail is not configured!"; exit 1; end'
I, [2025-11-20T12:57:28.258766 #1]  INFO -- :
I, [2025-11-20T12:57:28.258920 #1]  INFO -- : > /usr/local/bin/ruby -e 'if ENV["DISCOURSE_HOSTNAME"] == "discourse.example.com"; puts "Aborting! Domain is not configured!"; exit 1; end'
I, [2025-11-20T12:57:28.359414 #1]  INFO -- :
I, [2025-11-20T12:57:28.359546 #1]  INFO -- : > /usr/local/bin/ruby -e 'if (ENV["DISCOURSE_CDN_URL"] || "")[0..1] == "//"; puts "Aborting! CDN must have a protocol specified. Once fixed you should rebake your posts now to correct all posts."; exit 1; end'
I, [2025-11-20T12:57:28.465003 #1]  INFO -- :
I, [2025-11-20T12:57:28.465230 #1]  INFO -- : > rm -f /etc/cron.d/anacron
I, [2025-11-20T12:57:28.467452 #1]  INFO -- :
I, [2025-11-20T12:57:28.470130 #1]  INFO -- : File > /etc/cron.d/anacron  chmod:   chown:
I, [2025-11-20T12:57:28.474084 #1]  INFO -- : File > /etc/runit/1.d/copy-env  chmod: +x  chown:
I, [2025-11-20T12:57:28.478139 #1]  INFO -- : File > /etc/service/unicorn/run  chmod: +x  chown:
I, [2025-11-20T12:57:28.482090 #1]  INFO -- : File > /etc/service/nginx/run  chmod: +x  chown:
I, [2025-11-20T12:57:28.486062 #1]  INFO -- : File > /etc/runit/3.d/01-nginx  chmod: +x  chown:
I, [2025-11-20T12:57:28.489878 #1]  INFO -- : File > /etc/runit/3.d/02-unicorn  chmod: +x  chown:
I, [2025-11-20T12:57:28.497775 #1]  INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse git clean -f
I, [2025-11-20T12:57:28.718382 #1]  INFO -- :
I, [2025-11-20T12:57:28.718551 #1]  INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse bash -c '
  set -o errexit
  git fetch --tags --prune-tags --prune --force origin
  if [[ $(git symbolic-ref --short HEAD) == v2.8.5 ]] ; then
      git pull
  else
      git -c advice.detachedHead=false checkout v2.8.5
  fi
'
From https://github.com/discourse/discourse
 - [deleted]             (none)     -> origin/0-a-cakeday
 - [deleted]             (none)     -> origin/0-a-rubocop
 - [deleted]             (none)     -> origin/0-a-unused-services
 - [deleted]             (none)     -> origin/1-anon-nav
 - [deleted]             (none)     -> origin/add-auto-track-docs
 - [deleted]             (none)     -> origin/add-postoutletargs
 - [deleted]             (none)     -> origin/ai-summary-serializer
 - [deleted]             (none)     -> origin/ai-translation-configuration-update
 - [deleted]             (none)     -> origin/d-otp
 - [deleted]             (none)     -> origin/default-locale-temporarily-close-flag
 - [deleted]             (none)     -> origin/dependabot/bundler/rubocop-discourse-3.13.0
 - [deleted]             (none)     -> origin/dependabot/bundler/rubyzip-3.1.1
 - [deleted]             (none)     -> origin/dependabot/bundler/sass-a19c11c4e9
 - [deleted]             (none)     -> origin/dependabot/bundler/stripe-16.0.0
 - [deleted]             (none)     -> origin/dependabot/github_actions/actions/setup-node-5
 - [deleted]             (none)     -> origin/dependabot/npm_and_yarn/ember-cli-6.7.0
 - [deleted]             (none)     -> origin/dependabot/npm_and_yarn/embroider-f83e75fa89
 - [deleted]             (none)     -> origin/dependabot/npm_and_yarn/faker-js/faker-10.0.0
 - [deleted]             (none)     -> origin/dependabot/npm_and_yarn/glimmer/component-2.0.0
 - [deleted]             (none)     -> origin/dependabot/npm_and_yarn/lint-ed9b700cc1
 - [deleted]             (none)     -> origin/dependabot/npm_and_yarn/memfs-4.48.1
 - [deleted]             (none)     -> origin/dependabot/npm_and_yarn/webpack-5.102.0
 - [deleted]             (none)     -> origin/dev-merge-login-css
 - [deleted]             (none)     -> origin/dev/migrate-from-advanced-search-to-welcome-banner
 - [deleted]             (none)     -> origin/dev/no-more-array-clear
 - [deleted]             (none)     -> origin/dev/no-more-array-deprecations-post-stream
 - [deleted]             (none)     -> origin/dev/no-more-array-get-set
 - [deleted]             (none)     -> origin/dev/no-more-array-square-brackets-property
 - [deleted]             (none)     -> origin/exact-url-match-in-sidebar
 - [deleted]             (none)     -> origin/experimental-chat-search
 - [deleted]             (none)     -> origin/feat-add-ical-format-response-to-post-events-index
 - [deleted]             (none)     -> origin/feature/bump-wiki-docs-topics-op-edit
 - [deleted]             (none)     -> origin/feature/edit-theme-owned-palettes
 - [deleted]             (none)     -> origin/feature/split-categories-and-groups-for-moderators-setting
 - [deleted]             (none)     -> origin/feature/upcoming-changes-v1
 - [deleted]             (none)     -> origin/fix/deleted-user-email
 - [deleted]             (none)     -> origin/fix_debounce_in_d_multi_select
 - [deleted]             (none)     -> origin/fix_multiple_data_uploads
 - [deleted]             (none)     -> origin/headless-chrome
 - [deleted]             (none)     -> origin/issue/handle-worker-load-timeout-failure
 - [deleted]             (none)     -> origin/likes-dmenu
 - [deleted]             (none)     -> origin/llm-credit-allocation
 - [deleted]             (none)     -> origin/log_http_accept_language_header
 - [deleted]             (none)     -> origin/loic-pitchfork
 - [deleted]             (none)     -> origin/mt/only-skip-option
 - [deleted]             (none)     -> origin/mt/site_settings
 - [deleted]             (none)     -> origin/onebox-in-localized-posts
 - [deleted]             (none)     -> origin/pento/dev-calculate-flakyness
 - [deleted]             (none)     -> origin/photoswipe-lightbox
 - [deleted]             (none)     -> origin/remove-category-badge-recursive
 - [deleted]             (none)     -> origin/remove-footermessage-legacy-text
 - [deleted]             (none)     -> origin/simplify-add-remove-pm-user-group
 - [deleted]             (none)     -> origin/split-login-admin-settings
 - [deleted]             (none)     -> origin/system-email-fallback
 - [deleted]             (none)     -> origin/toggle_editor_when_unsupported
 - [deleted]             (none)     -> origin/topic-voting-ux
 - [deleted]             (none)     -> origin/type-package
 - [deleted]             (none)     -> origin/unicode-grant-admin
 - [deleted]             (none)     -> origin/update_pgvector_080
   5d239c560..51c218e3c  main                    -> origin/main
 * [new branch]          0-a-browser-testem      -> origin/0-a-browser-testem
 * [new branch]          0-a-card-border         -> origin/0-a-card-border
 * [new branch]          0-a-deps-categ          -> origin/0-a-deps-categ
 * [new branch]          0-a-floating-ui         -> origin/0-a-floating-ui
 * [new branch]          0-a-path                -> origin/0-a-path
   94faf7901..a58678538  a11y-post-heading-scrolling -> origin/a11y-post-heading-scrolling
 * [new branch]          adplugin-add-implement-impressions -> origin/adplugin-add-implement-impressions
 * [new branch]          ai-prototype/cascade-sheets -> origin/ai-prototype/cascade-sheets
 * [new branch]          ai-prototype/reaction-last -> origin/ai-prototype/reaction-last
 * [new branch]          anthropic-caching       -> origin/anthropic-caching
 + 5c183e735...ffaa66cd8 async_ember_helpers_patch -> origin/async_ember_helpers_patch  (forced update)
 * [new branch]          better-email-subject-lines -> origin/better-email-subject-lines
 * [new branch]          block-network-system    -> origin/block-network-system
 * [new branch]          blocks-system           -> origin/blocks-system
 * [new branch]          br/upload               -> origin/br/upload
 * [new branch]          browse-latest-topics-in-new-new-sub-tabs -> origin/browse-latest-topics-in-new-new-sub-tabs
 * [new branch]          btn-mixin-border-radius -> origin/btn-mixin-border-radius
 * [new branch]          cal-fix                 -> origin/cal-fix
 * [new branch]          calendar-fix            -> origin/calendar-fix
 * [new branch]          capybara_browser_checkts_control -> origin/capybara_browser_checkts_control
 * [new branch]          capybara_browser_checkts_experiment -> origin/capybara_browser_checkts_experiment
 * [new branch]          chat-banner-content     -> origin/chat-banner-content
 * [new branch]          composer-ios-hack       -> origin/composer-ios-hack
 * [new branch]          configure_pg_statement_timeout_for_unicorn_processes -> origin/configure_pg_statement_timeout_for_unicorn_processes
 * [new branch]          couple-sm-tweaks        -> origin/couple-sm-tweaks
 * [new branch]          custom_field            -> origin/custom_field
 * [new branch]          d-button-signature      -> origin/d-button-signature
 * [new branch]          d-menu-close-animation  -> origin/d-menu-close-animation
 * [new branch]          d-otp-followups         -> origin/d-otp-followups
 * [new branch]          dependabot/bundler/crack-1.0.1 -> origin/dependabot/bundler/crack-1.0.1
 * [new branch]          dependabot/bundler/excon-1.3.1 -> origin/dependabot/bundler/excon-1.3.1
 * [new branch]          dependabot/bundler/mail-2.9.0 -> origin/dependabot/bundler/mail-2.9.0
 * [new branch]          dependabot/bundler/rubyzip-3.2.2 -> origin/dependabot/bundler/rubyzip-3.2.2
 * [new branch]          dependabot/bundler/sass-95568ee139 -> origin/dependabot/bundler/sass-95568ee139
 * [new branch]          dependabot/bundler/stripe-18.0.0 -> origin/dependabot/bundler/stripe-18.0.0
 * [new branch]          dependabot/bundler/webmock-3.26.1 -> origin/dependabot/bundler/webmock-3.26.1
 * [new branch]          dependabot/bundler/zendesk_api-4.0.0.pre.1 -> origin/dependabot/bundler/zendesk_api-4.0.0.pre.1
 * [new branch]          dependabot/github_actions/actions/setup-node-6 -> origin/dependabot/github_actions/actions/setup-node-6
 * [new branch]          dependabot/npm_and_yarn/chart.js-4.5.1 -> origin/dependabot/npm_and_yarn/chart.js-4.5.1
 * [new branch]          dependabot/npm_and_yarn/embroider-b89ca3ee63 -> origin/dependabot/npm_and_yarn/embroider-b89ca3ee63
 * [new branch]          dependabot/npm_and_yarn/esbuild-0.27.0 -> origin/dependabot/npm_and_yarn/esbuild-0.27.0
 + c3027deb3...27fb7bbf0 dependabot/npm_and_yarn/fortawesome/fontawesome-free-7.1.0 -> origin/dependabot/npm_and_yarn/fortawesome/fontawesome-free-7.1.0  (forced update)
 * [new branch]          dependabot/npm_and_yarn/glob-13.0.0 -> origin/dependabot/npm_and_yarn/glob-13.0.0
 + 6b0686c06...c917fbfa3 dependabot/npm_and_yarn/jsuites-5.13.4 -> origin/dependabot/npm_and_yarn/jsuites-5.13.4  (forced update)
 * [new branch]          dependabot/npm_and_yarn/memfs-4.51.0 -> origin/dependabot/npm_and_yarn/memfs-4.51.0
 * [new branch]          dependabot/npm_and_yarn/morphlex-1.0.4 -> origin/dependabot/npm_and_yarn/morphlex-1.0.4
 * [new branch]          dependabot/npm_and_yarn/types-546d678181 -> origin/dependabot/npm_and_yarn/types-546d678181
 + 39ab10317...9a5504f09 dependabot/npm_and_yarn/uppy-573db43783 -> origin/dependabot/npm_and_yarn/uppy-573db43783  (forced update)
 * [new branch]          dev-add-autocomplete-results-signature-type -> origin/dev-add-autocomplete-results-signature-type
 * [new branch]          dev-allow-right-left-placements-for-autocomplete-menu -> origin/dev-allow-right-left-placements-for-autocomplete-menu
 * [new branch]          dev-azure-json-object   -> origin/dev-azure-json-object
 * [new branch]          dev-refactor-d-autocomplete -> origin/dev-refactor-d-autocomplete
 * [new branch]          dev-replace-hashtag-autocomplete-templates-with-components -> origin/dev-replace-hashtag-autocomplete-templates-with-components
   9d33c2629..6d7e3ce9f  dev/add-no-category-composer-site-setting -> origin/dev/add-no-category-composer-site-setting
 * [new branch]          dev/deprecate-nil-in-site-settings -> origin/dev/deprecate-nil-in-site-settings
 * [new branch]          dev/git-ignore-mise-local-conf -> origin/dev/git-ignore-mise-local-conf
 * [new branch]          dev/messagebus-response-headers -> origin/dev/messagebus-response-headers
 * [new branch]          dev/mt/discourse-category-moderation-groups -> origin/dev/mt/discourse-category-moderation-groups
 * [new branch]          dev/no-more-array-ember-methods -> origin/dev/no-more-array-ember-methods
 * [new branch]          dev/no-more-array-pushObject -> origin/dev/no-more-array-pushObject
 * [new branch]          dev/problem-check-cleanups-part-2 -> origin/dev/problem-check-cleanups-part-2
 + 6e00e4b6d...8898de768 dev/purge-widgets       -> origin/dev/purge-widgets  (forced update)
 * [new branch]          dev/remove-widgets-code -> origin/dev/remove-widgets-code
 + 50c30c39f...0d2c402dc dev/user-actions-reviewable-logging -> origin/dev/user-actions-reviewable-logging  (forced update)
 * [new branch]          disable-autofocus-otp-ios -> origin/disable-autofocus-otp-ios
 * [new branch]          discourse-id-error-logging -> origin/discourse-id-error-logging
 * [new branch]          discourse-id-update-support -> origin/discourse-id-update-support
 * [new branch]          dont_joins_categories_unnecessarily -> origin/dont_joins_categories_unnecessarily
 * [new branch]          dont_override_category_model -> origin/dont_override_category_model
 * [new branch]          easy-link-to-own-profile-from-user-card -> origin/easy-link-to-own-profile-from-user-card
 * [new branch]          ember_settled_check     -> origin/ember_settled_check
 + 64e725e17...030f51cfe ember_settled_experimental -> origin/ember_settled_experimental  (forced update)
 * [new branch]          feature/add-uploads-to-type-objects -> origin/feature/add-uploads-to-type-objects
 + c84648556...6fd7acf52 feature/assuming-iam-role-s3-pt2 -> origin/feature/assuming-iam-role-s3-pt2  (forced update)
   d3ae413fd..560d9e5f4  feature/chat-channel-sidebar-menu -> origin/feature/chat-channel-sidebar-menu
 * [new branch]          feature/copy-as-markdown -> origin/feature/copy-as-markdown
 * [new branch]          feature/github-mute-category-linkback -> origin/feature/github-mute-category-linkback
 * [new branch]          feature/requisite-site-settings -> origin/feature/requisite-site-settings
 * [new branch]          feature/upcoming-change-group-simplify -> origin/feature/upcoming-change-group-simplify
 * [new branch]          filter-uploads          -> origin/filter-uploads
 * [new branch]          fix-credit-allocation-resets -> origin/fix-credit-allocation-resets
 * [new branch]          fix-credit-error-popups -> origin/fix-credit-error-popups
 * [new branch]          fix-emoji-autocomplete-trigger-even-after-whitespace-in-term -> origin/fix-emoji-autocomplete-trigger-even-after-whitespace-in-term
 * [new branch]          fix-selector            -> origin/fix-selector
 * [new branch]          fix-translation-missing-in-email-templates -> origin/fix-translation-missing-in-email-templates
 * [new branch]          fix/ai-llm-status-check -> origin/fix/ai-llm-status-check
 * [new branch]          fix/calendar-missing-starts-at -> origin/fix/calendar-missing-starts-at
 * [new branch]          fix/deleted-posts-list-rendering -> origin/fix/deleted-posts-list-rendering
 * [new branch]          fix/notify-chat-user-non-channel-member -> origin/fix/notify-chat-user-non-channel-member
 + 9e18befeb...2f019fb59 form-kit-2-0            -> origin/form-kit-2-0  (forced update)
 + 01dabbed3...2d3a082cd horizon_as_default_for_new_sites -> origin/horizon_as_default_for_new_sites  (forced update)
 * [new branch]          image_grid_on_rte       -> origin/image_grid_on_rte
 * [new branch]          issue/draft-save-no-change -> origin/issue/draft-save-no-change
 * [new branch]          issue/fix-placeholder-rte-non-image-upload -> origin/issue/fix-placeholder-rte-non-image-upload
 * [new branch]          issue/quote-isolating   -> origin/issue/quote-isolating
 * [new branch]          jordan-feature          -> origin/jordan-feature
 + 40d18be01...99c6a3d14 keep-img-tag-implementation-for-excerpt-parser -> origin/keep-img-tag-implementation-for-excerpt-parser  (forced update)
   04ed87792..51c218e3c  latest                  -> origin/latest
 * [new branch]          likes-dmenu-mylikes     -> origin/likes-dmenu-mylikes
 * [new branch]          limit-post-voting       -> origin/limit-post-voting
 * [new branch]          linkbacks               -> origin/linkbacks
 * [new branch]          loc-title-edit          -> origin/loc-title-edit
 * [new branch]          localized-pg-headline   -> origin/localized-pg-headline
 * [new branch]          localized-search-data   -> origin/localized-search-data
 * [new branch]          log-max-sql-duration    -> origin/log-max-sql-duration
 + bd7c66753...b6a1847be loic-server-modifiers-types -> origin/loic-server-modifiers-types  (forced update)
 * [new branch]          loic/pagy               -> origin/loic/pagy
 * [new branch]          martin-brennan-patch-1  -> origin/martin-brennan-patch-1
 + e6bdecf7f...6f0670964 member-xp-1             -> origin/member-xp-1  (forced update)
 * [new branch]          modal-animation         -> origin/modal-animation
 + 483d30315...c1aa1fc97 mt/user_options         -> origin/mt/user_options  (forced update)
 * [new branch]          multipart-upload-fix    -> origin/multipart-upload-fix
   b38084846..3abbe3301  nat1-merge-branch       -> origin/nat1-merge-branch
 * [new branch]          no-silent-failure-invalid-regex-watched-words -> origin/no-silent-failure-invalid-regex-watched-words
 * [new branch]          one-step-wizard         -> origin/one-step-wizard
 * [new branch]          outlet-suspension-silenced -> origin/outlet-suspension-silenced
   3e69277e2..94af89fcf  peek-mode-v2            -> origin/peek-mode-v2
 * [new branch]          prevent-model-fails     -> origin/prevent-model-fails
 * [new branch]          problem-check-credit    -> origin/problem-check-credit
 * [new branch]          prototype-avatars       -> origin/prototype-avatars
 * [new branch]          qunit-binding           -> origin/qunit-binding
 * [new branch]          quote-button            -> origin/quote-button
 * [new branch]          quote-lightbox          -> origin/quote-lightbox
   99695c6c0..e9fb01e59  refactor-subgrid        -> origin/refactor-subgrid
 * [new branch]          release-infrastructure  -> origin/release-infrastructure
 * [new branch]          repo-refactor           -> origin/repo-refactor
 * [new branch]          revert                  -> origin/revert
 + 8a8148488...503758d99 rollup-plugin-experiment -> origin/rollup-plugin-experiment  (forced update)
 * [new branch]          rspec-color             -> origin/rspec-color
 + e8ccaeb1c...a3eccc73d sandbox/ai-team         -> origin/sandbox/ai-team  (forced update)
 + 1ef463255...007db3bd1 sandbox/dev-xp-1        -> origin/sandbox/dev-xp-1  (forced update)
   a925474ed..86f5bb772  sandbox/dev-xp-2        -> origin/sandbox/dev-xp-2
 + 3e69277e2...46a3d9ca5 sandbox/member-xp-1     -> origin/sandbox/member-xp-1  (forced update)
 + 1effbe0cc...915e24a0a sandbox/member-xp-2     -> origin/sandbox/member-xp-2  (forced update)
 + 170018e94...03b301782 sandbox/member-xp-3     -> origin/sandbox/member-xp-3  (forced update)
 + bfb813d85...883862176 sandbox/member-xp-4     -> origin/sandbox/member-xp-4  (forced update)
 + 4c42dfdae...ce93f2ec6 sandbox/staff-xp-1      -> origin/sandbox/staff-xp-1  (forced update)
 * [new branch]          screened-ip             -> origin/screened-ip
 * [new branch]          scripted_llm_tests      -> origin/scripted_llm_tests
 * [new branch]          search-localized        -> origin/search-localized
 * [new branch]          shared-edits            -> origin/shared-edits
 * [new branch]          show-topic-loading      -> origin/show-topic-loading
   beaacf9e0..47399adbd  stable                  -> origin/stable
 * [new branch]          test-runner-exp         -> origin/test-runner-exp
   04ed87792..51c218e3c  tests-passed            -> origin/tests-passed
 * [new branch]          tobiaseigen-patch-5     -> origin/tobiaseigen-patch-5
 * [new branch]          translation-retry-quota-rewrite -> origin/translation-retry-quota-rewrite
 * [new branch]          translations-from-crowdin-main -> origin/translations-from-crowdin-main
 * [new branch]          translations-from-crowdin-stable -> origin/translations-from-crowdin-stable
 * [new branch]          upgrade_rubocop_discourse -> origin/upgrade_rubocop_discourse
 * [new branch]          use-transcoded          -> origin/use-transcoded
 * [new branch]          use_pm_on_to_markdown   -> origin/use_pm_on_to_markdown
 * [new branch]          ux-ai-bot-sidebar-link  -> origin/ux-ai-bot-sidebar-link
 * [new branch]          ux-claimable-reivew-filter -> origin/ux-claimable-reivew-filter
 * [new branch]          ux-composer-mode-placeholder -> origin/ux-composer-mode-placeholder
 * [new branch]          ux-policy-button-width  -> origin/ux-policy-button-width
 * [new branch]          ux-sign-up-button-position -> origin/ux-sign-up-button-position
 * [new branch]          version-bump/main       -> origin/version-bump/main
 * [new branch]          version_bump/stable     -> origin/version_bump/stable
   c5bca775f..8d7db37c2  vite-squashed-rebased   -> origin/vite-squashed-rebased
 * [new branch]          white_space_paragraph_parsing -> origin/white_space_paragraph_parsing
 * [new branch]          x-amz-tagging           -> origin/x-amz-tagging
 t [tag update]          beta                    -> beta
 t [tag update]          latest-release          -> latest-release
 * [new tag]             v3.5.2                  -> v3.5.2
 * [new tag]             v3.6.0.beta2            -> v3.6.0.beta2
HEAD is now at 61cf79192 Version bump to v2.8.5 (#17187)
I, [2025-11-20T12:58:10.975801 #1]  INFO -- :
I, [2025-11-20T12:58:10.976348 #1]  INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse git config user.discourse-version v2.8.5
I, [2025-11-20T12:58:10.990092 #1]  INFO -- :
I, [2025-11-20T12:58:10.990310 #1]  INFO -- : > cd /var/www/discourse && mkdir -p tmp
I, [2025-11-20T12:58:10.993582 #1]  INFO -- :
I, [2025-11-20T12:58:10.993719 #1]  INFO -- : > cd /var/www/discourse && chown discourse:www-data tmp
I, [2025-11-20T12:58:10.996441 #1]  INFO -- :
I, [2025-11-20T12:58:10.996632 #1]  INFO -- : > cd /var/www/discourse && mkdir -p tmp/pids
I, [2025-11-20T12:58:10.999355 #1]  INFO -- :
I, [2025-11-20T12:58:10.999470 #1]  INFO -- : > cd /var/www/discourse && mkdir -p tmp/sockets
I, [2025-11-20T12:58:11.002136 #1]  INFO -- :
I, [2025-11-20T12:58:11.002293 #1]  INFO -- : > cd /var/www/discourse && touch tmp/.gitkeep
I, [2025-11-20T12:58:11.004947 #1]  INFO -- :
I, [2025-11-20T12:58:11.005072 #1]  INFO -- : > cd /var/www/discourse && mkdir -p                    /shared/log/rails
I, [2025-11-20T12:58:11.007844 #1]  INFO -- :
I, [2025-11-20T12:58:11.007985 #1]  INFO -- : > cd /var/www/discourse && bash -c "touch -a           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log"
I, [2025-11-20T12:58:11.012438 #1]  INFO -- :
I, [2025-11-20T12:58:11.012548 #1]  INFO -- : > cd /var/www/discourse && bash -c "ln    -s           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log /var/www/discourse/log"
I, [2025-11-20T12:58:11.016830 #1]  INFO -- :
I, [2025-11-20T12:58:11.016924 #1]  INFO -- : > cd /var/www/discourse && bash -c "mkdir -p           /shared/{uploads,backups}"
I, [2025-11-20T12:58:11.021076 #1]  INFO -- :
I, [2025-11-20T12:58:11.021204 #1]  INFO -- : > cd /var/www/discourse && bash -c "ln    -s           /shared/{uploads,backups} /var/www/discourse/public"
I, [2025-11-20T12:58:11.025467 #1]  INFO -- :
I, [2025-11-20T12:58:11.025569 #1]  INFO -- : > cd /var/www/discourse && bash -c "mkdir -p           /shared/tmp/{backups,restores}"
I, [2025-11-20T12:58:11.029778 #1]  INFO -- :
I, [2025-11-20T12:58:11.029884 #1]  INFO -- : > cd /var/www/discourse && bash -c "ln    -s           /shared/tmp/{backups,restores} /var/www/discourse/tmp"
I, [2025-11-20T12:58:11.034102 #1]  INFO -- :
I, [2025-11-20T12:58:11.034224 #1]  INFO -- : > cd /var/www/discourse && chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp
I, [2025-11-20T12:58:11.069336 #1]  INFO -- :
I, [2025-11-20T12:58:11.069510 #1]  INFO -- : > cd /var/www/discourse && [ ! -d public/plugins ] || find public/plugins/ -maxdepth 1 -xtype l -delete
I, [2025-11-20T12:58:11.071978 #1]  INFO -- :
I, [2025-11-20T12:58:11.072492 #1]  INFO -- : Replacing # redis with sv start redis || exit 1 in /etc/service/unicorn/run
I, [2025-11-20T12:58:11.073877 #1]  INFO -- : > cp /var/www/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf
I, [2025-11-20T12:58:11.076755 #1]  INFO -- :
I, [2025-11-20T12:58:11.077000 #1]  INFO -- : > rm /etc/nginx/sites-enabled/default
I, [2025-11-20T12:58:11.079147 #1]  INFO -- :
I, [2025-11-20T12:58:11.079295 #1]  INFO -- : > mkdir -p /var/nginx/cache
I, [2025-11-20T12:58:11.081261 #1]  INFO -- :
I, [2025-11-20T12:58:11.081491 #1]  INFO -- : > grep -q 'outlets/before-server' /etc/nginx/conf.d/discourse.conf || ( >&2 echo 'The "before-server" Nginx outlet is missing. This version of discourse_docker is not compatible with the chosen Discourse version.' ; exit 1 )
The "before-server" Nginx outlet is missing. This version of discourse_docker is not compatible with the chosen Discourse version.
I, [2025-11-20T12:58:11.085029 #1]  INFO -- :
I, [2025-11-20T12:58:11.086820 #1]  INFO -- : Terminating async processes
I, [2025-11-20T12:58:11.086912 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 18
18:signal-handler (1763643491) Received SIGTERM scheduling shutdown...
18:M 20 Nov 2025 12:58:11.133 # User requested shutdown...
18:M 20 Nov 2025 12:58:11.133 * Saving the final RDB snapshot before exiting.
18:M 20 Nov 2025 12:58:11.178 * DB saved on disk
18:M 20 Nov 2025 12:58:11.178 # Redis is now ready to exit, bye bye...


FAILED
--------------------
Pups::ExecError: grep -q 'outlets/before-server' /etc/nginx/conf.d/discourse.conf || ( >&2 echo 'The "before-server" Nginx outlet is missing. This version of discourse_docker is not compatible with the chosen Discourse version.' ; exit 1 ) failed with return #<Process::Status: pid 156 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/exec_command.rb:131:in `spawn'
exec failed with the params {"cmd"=>["cp $home/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf", "rm /etc/nginx/sites-enabled/default", "mkdir -p /var/nginx/cache", "grep -q 'outlets/before-server' /etc/nginx/conf.d/discourse.conf || ( >&2 echo 'The \"before-server\" Nginx outlet is missing. This version of discourse_docker is not compatible with the chosen Discourse version.' ; exit 1 )", "grep -q 'outlets/server' /etc/nginx/conf.d/discourse.conf || ( >&2 echo 'The \"server\" Nginx outlet is missing. This version of discourse_docker is not compatible with the chosen Discourse version.' ; exit 1 )", "grep -q 'outlets/discourse' /etc/nginx/conf.d/discourse.conf || ( >&2 echo 'The \"discourse\" Nginx outlet is missing. This version of discourse_docker is not compatible with the chosen Discourse version.' ; exit 1 )", "mkdir -p /etc/nginx/conf.d/outlets/before-server", "touch /etc/nginx/conf.d/outlets/before-server/20-redirect-http-to-https.conf", "touch /etc/nginx/conf.d/outlets/before-server/30-ratelimited.conf", "mkdir -p /etc/nginx/conf.d/outlets/server", "touch /etc/nginx/conf.d/outlets/server/10-http.conf", "touch /etc/nginx/conf.d/outlets/server/20-https.conf", "touch /etc/nginx/conf.d/outlets/server/30-offline-page.conf", "mkdir -p /etc/nginx/conf.d/outlets/discourse", "touch /etc/nginx/conf.d/outlets/discourse/20-https.conf", "touch /etc/nginx/conf.d/outlets/discourse/30-ratelimited.conf"]}
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.
66c43294171cf7dc0616baf53fdaf32130c9e09951dddbe01312c565deeb85db

É uma boa aposta que seu sistema operacional também está desatualizado. A coisa mais fácil e segura a fazer é migrar para uma nova VM com um sistema operacional e Docker atualizados.

Aqui está o app.yml original. Eu o ofusquei um pouco. Ele contém todos os plugins. Para testes, eu os removi todos, mas a reconstrução ainda gera um erro.

app.yml (4.9 KB)

O Ubuntu 20.04 ainda está bom e tem todos os pacotes mais recentes.
O Docker Engine 28.1.1 também está bem atualizado.

E por que migrar para outra VM se posso atualizar esta no local?

Veja minha citação acima dos logs.

Porque a atualização do postgres pode ser problemática e instalar em uma nova VM garante que você não acabe com um fórum quebrado.

Mas espere. Você tem esta linha no seu app.yml? Isso não vai funcionar porque o contêiner docker atual não funcionará com uma versão tão antiga do Discourse. Você precisa atualizar para a versão mais recente, ou pelo menos para a versão mais recente suportada.

version: v2.8.10 ## ALTERADO de stable (v2.8.5) PARA v2.8.10 PARA ATUALIZAÇÃO

Além disso, o Discourse não funciona mais sem https, então você precisa descomentar os templates ssl e letsencrypt. E algumas outras coisas também mudaram. Eu recomendaria que você fizesse uma reinstalação completa com discourse-setup para obter um app.yml atualizado também.

O PostgreSQL está instalado separadamente no Docker, e atualizá-lo não é problema.

Isso é absolutamente necessário? Eu não quero atualizar para a versão 3.x.x ainda — todos os recursos de IA nela exigem a migração do PostgreSQL para o PgVector. Nós realmente não precisamos de IA no fórum, e eu não estou familiarizado com o PgVector, então não sei como migrar assim. Portanto, por enquanto, eu preferiria ficar na versão 2.8.x mais recente — 2.8.14, se possível.
Se isso não for possível, então, é claro, terei que migrar. Na minha primeira mensagem, perguntei se havia um guia para tal migração?

Mas eu não quero usar o HTTPS e o letsencrypt do Discourse. Meu fórum está atrás do Nginx, que está configurado de acordo com nossas regras de perímetro. Eu gostaria de manter essa configuração.

Muito obrigado pela sua ajuda! Aguardo seus comentários.

Eu apontei para vários. Receio que nenhum se aplique à sua configuração. Você terá que atualizar o postgres. Você terá que instalar o pgvector.

Então será um pouco mais complicado do que eu descrevi, já que você está bem longe de uma instalação padrão.

Se você tiver um orçamento, pode perguntar em Marketplace ou entrar em contato comigo diretamente.

A versão mais recente é Discourse 3.6.0.beta3-latest. Embora nada seja impossível, se você quiser ficar na 2.8.x, é melhor não fazer nada. Ela não é suportada e tem sérios problemas de segurança.

2 curtidas