# Upgrading old version 2.8.5 issues

**URL:** https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201
**Category:** Self-hosting
**Created:** [November 20, 2025, 12:23pm UTC](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201 "2025-11-20T12:23:21Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![nahimov](https://avatars.discourse-cdn.com/v4/letter/n/aca169/32.png) [@nahimov](https://meta.discourse.org/u/nahimov)
#### Post date: [November 20, 2025, 12:23pm UTC](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201/1 "2025-11-20T12:23:21Z")

</div>

It just so happens that we haven’t updated Discourse in a very long time. We’re currently at v2.8.5. I recently discovered that Discourse is well beyond version 3.  
I’d like to update to the current version, but for now, I’d like to at least update to the latest version 2.8.x - 2.8.14.  
And here’s a huge problem. When I rebuild, Discourse updates the base image, and I get this error:

```plaintext
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.

```

The plugins are all clear - they need to be commented out in app.yaml. But that doesn’t help - the plugin errors disappear, and the error:

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

remains.

And I can’t do anything about it. Is there any way to update my forum to version 2.8.14?

If not, and for the future, how can I upgrade from version 2.8.5 to version 3.x.x? The situation is complicated by the fact that I use an external database, PosgreSQL. As I understand it, due to the AI ​​features in the new Discourse, it requires a vector database, PgVector. Do I need to migrate somehow? Is there a guide on how to do this correctly and painlessly?

I’d really appreciate your help!

---

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [November 20, 2025, 12:50pm UTC](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201/2 "2025-11-20T12:50:01Z")

</div>

Try updating Docker, does that help?

---

<div class="post-metadata">

### Author: ![nahimov](https://avatars.discourse-cdn.com/v4/letter/n/aca169/32.png) [@nahimov](https://meta.discourse.org/u/nahimov)
#### Post date: [November 20, 2025, 12:51pm UTC](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201/3 "2025-11-20T12:51:22Z")

</div>

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

Server: Docker Engine - Community
 Engine:
  Version: 28.1.1
  API version: 1.49 (minimum version 1.24)
  Go version: go1.23.8
  Git commit: 01f442b
  Built: Fri Apr 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

```

```plaintext
└─# lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.6 LTS
Release:	20.04
Codename:	focal

```

---

<div class="post-metadata">

### Author: ![nahimov](https://avatars.discourse-cdn.com/v4/letter/n/aca169/32.png) [@nahimov](https://meta.discourse.org/u/nahimov)
#### Post date: [November 20, 2025, 12:59pm UTC](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201/4 "2025-11-20T12:59:36Z")

</div>

I removed all plugins from app.yaml. This didn’t help:

```plaintext
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.

```

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [November 20, 2025, 1:04pm UTC](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201/5 "2025-11-20T13:04:00Z")

</div>

Please share your app.yml file, sans passwords.

---

<div class="post-metadata">

### Author: ![pangbo](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pangbo/32/538562_2.png) [@pangbo](https://meta.discourse.org/u/pangbo)
#### Post date: [November 20, 2025, 1:21pm UTC](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201/6 "2025-11-20T13:21:00Z")

</div>

> [@nahimov](#):
>
> ```plaintext
> 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
> 
> ```

It appears plugins are not the cause of the rebuild failure, the issue lies here.

Could you please provide the preceding context from the logs? Perhaps the actual error occurred there.

---

<div class="post-metadata">

### Author: ![nahimov](https://avatars.discourse-cdn.com/v4/letter/n/aca169/32.png) [@nahimov](https://meta.discourse.org/u/nahimov)
#### Post date: [November 20, 2025, 1:46pm UTC](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201/7 "2025-11-20T13:46:49Z")

</div>

This is full log:

```plaintext
└─# ./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

```

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [November 20, 2025, 2:59pm UTC](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201/8 "2025-11-20T14:59:17Z")

</div>

> [@nahimov](#):
>
> `This version of discourse_docker is not compatible with the chosen Discourse version.' `

It’s a good bet that your OS it out of date too. The easiest and safest thing to do is move to a new vm with an up-to-date OS and docker.

---

<div class="post-metadata">

### Author: ![nahimov](https://avatars.discourse-cdn.com/v4/letter/n/aca169/32.png) [@nahimov](https://meta.discourse.org/u/nahimov)
#### Post date: [November 20, 2025, 3:24pm UTC](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201/9 "2025-11-20T15:24:25Z")

</div>

> [@Falco](#):
>
> Please share your app.yml file, sans passwords.

Here’s the original app.yml. I obfuscated it a bit. It has all the plugins. For testing, I removed them all, but rebuilding still produces an error.

[app.yml](https://meta.discourse.org/uploads/short-url/mKK3mKNyLQDgmWR3oVq8evAAMkZ.yml) (4.9 KB)

---

<div class="post-metadata">

### Author: ![nahimov](https://avatars.discourse-cdn.com/v4/letter/n/aca169/32.png) [@nahimov](https://meta.discourse.org/u/nahimov)
#### Post date: [November 20, 2025, 3:27pm UTC](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201/10 "2025-11-20T15:27:12Z")

</div>

> [@pfaffman](#):
>
> It’s a good bet that your OS it out of date too. The easiest and safest thing to do is move to a new vm with an up-to-date OS and docker.

Ubuntu 20.04 is still fine, and has all the latest packages.  
Docker Engine 28.1.1 is also quite up-to-date.

And why migrate to another VM if I can update this one in-place?

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [November 20, 2025, 3:36pm UTC](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201/11 "2025-11-20T15:36:19Z")

</div>

> [@nahimov](#):
>
> Ubuntu 20.04 is still fine, and has all the latest packages.

[https://ubuntu.com/blog/ubuntu-20-04-lts-end-of-life-standard-support-is-coming-to-an-end-heres-how-to-prepare](https://ubuntu.com/blog/ubuntu-20-04-lts-end-of-life-standard-support-is-coming-to-an-end-heres-how-to-prepare)

> [@nahimov](#):
>
> Docker Engine 28.1.1 is also quite up-to-date.

See my above quote from the logs.

> [@nahimov](#):
>
> And why migrate to another VM if I can update this one in-place?

Because the postgres upgrade can be problematic and installing on a new VM assures that you can’t end up with a broken forum.

But wait. Do you have this line in your app.yml?

` version: v2.8.10 ## CHANGED FROM stable (v2.8.5) TO v2.8.10 FOR UPDATE`

That’s not going to work because the current docker container won’t work with that old of a Discourse. You need to upgrade to the latest version, or at least the latest supported version. It’s possible if you switch to a more recent version you won’t get that Docker error.

Also, Discourse no longer works without https, so you need to un-comment the ssl and letsencrypt templates. And some other stuff has changed too. I’d recommend that you do a full reinstall with `discourse-setup` to get an up-to-date `app.yml` as well.

---

<div class="post-metadata">

### Author: ![nahimov](https://avatars.discourse-cdn.com/v4/letter/n/aca169/32.png) [@nahimov](https://meta.discourse.org/u/nahimov)
#### Post date: [November 20, 2025, 6:49pm UTC](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201/12 "2025-11-20T18:49:47Z")

</div>

> [@pfaffman](#):
>
> Because the postgres upgrade can be problematic and installing on a new VM assures that you can’t end up with a broken forum.

PostgreSQL is installed separately in Docker, and updating it is no problem.

> [@pfaffman](#):
>
> That’s not going to work because the current docker container won’t work with that old of a Discourse. You need to upgrade to the latest version, or at least the latest supported version. It’s possible if you switch to a more recent version you won’t get that Docker error.

Is this absolutely necessary? I don’t want to upgrade to version 3.x.x yet—all the AI ​​features in it require migrating from PostgreSQL to PgVector. We don’t really need AI on the forum, and I’m not familiar with PgVector at all, so I don’t know how to migrate like that. So, for now, I’d prefer to stay on the most recent version 2.8.x—2.8.14, if possible.  
If that’s not possible, then of course I’ll have to migrate. In my first message, I asked if there was a guide for such a migration?

> [@pfaffman](#):
>
> Also, Discourse no longer works without https, so you need to un-comment the ssl and letsencrypt templates. And some other stuff has changed too. I’d recommend that you do a full reinstall with `discourse-setup` to get an up-to-date `app.yml` as well.

But I don’t want to use Discourse’s HTTPS and letsencrypt. My forum is behind Nginx, which is configured according to our perimeter rules. I’d like to keep this setup.

Thank you so much for your help! I look forward to your comments.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [November 20, 2025, 7:00pm UTC](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201/13 "2025-11-20T19:00:54Z")

</div>

> [@nahimov](#):
>
> I asked if there was a guide for such a migration?

I’ve pointed to several. I’m afraid none applies to your setup. You’ll have to upgrade postgres. You’ll have to install pgvector.

Then it’ll be a bit more complicated than I described since you’re pretty far from a [standard install](https://meta.discourse.org/t/142537?silent=true).

If you’ve got a budget you can ask in #Marketplace or contact me directly.

> [@nahimov](#):
>
> I’d prefer to stay on the most recent version 2.8.x—2.8.14, if possible.

The most recent version is `Discourse 3.6.0.beta3-latest`. While nothing is impossible, if you want to stay on 2.8.x then you may as well just do nothing. It’s not supported and has serious security issues.

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [November 21, 2025, 2:19am UTC](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201/14 "2025-11-21T02:19:03Z")

</div>

> [@nahimov](#):
>
> > [@Falco](#):
> >
> > Please share your app.yml file, sans passwords.
> 
> Here’s the original app.yml. I obfuscated it a bit. It has all the plugins. For testing, I removed them all, but rebuilding still produces an error.
> 
> [app.yml](https://meta.discourse.org/uploads/short-url/mKK3mKNyLQDgmWR3oVq8evAAMkZ.yml) (4.9 KB)

You are using an unsupported version, remove the version stanza on the app.yml file to update to the current version.

---

<div class="post-metadata">

### Author: ![tobiaseigen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tobiaseigen/32/539204_2.png) [@tobiaseigen](https://meta.discourse.org/u/tobiaseigen)
#### Post date: [December 3, 2025, 3:00am UTC](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201/15 "2025-12-03T03:00:32Z")

</div>

@nahimov were you able to get your old, unsupported site updated? I’d suggest you follow this advice:

> [@pfaffman](#):
>
> It’s a good bet that your OS it out of date too. The easiest and safest thing to do is move to a new vm with an up-to-date OS and docker.

---

<div class="post-metadata">

### Author: ![nahimov](https://avatars.discourse-cdn.com/v4/letter/n/aca169/32.png) [@nahimov](https://meta.discourse.org/u/nahimov)
#### Post date: [December 15, 2025, 7:22pm UTC](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201/16 "2025-12-15T19:22:27Z")

</div>

@pfaffman @Falco @tobiaseigen Hi!

Okay, okay )) I upgraded from 2.8.5 to 3.5.2. I was even able to migrate to pg\_vector without any problems. ))

But I opened the updated forum and was confused. This is what the old forum looks like on 2.8.5 – there’s a top menu and Login / Logout buttons:

 ![SCR-20251215-tzns](https://global.discourse-cdn.com/meta/original/4X/1/5/a/15a10b96247854d5f85c06e83f38909295befaff.png)

And this is what the updated forum looks like – there’s only a side menu, without the Login / Logout buttons:

 ![SCR-20251215-ualv](https://global.discourse-cdn.com/meta/original/4X/d/f/f/dffcf443bf1ce85288b208bd4cc88569377a143b.png)

 ![SCR-20251215-uaou](https://global.discourse-cdn.com/meta/original/4X/c/8/0/c80b1a4245b8dc44fc69c7393a2ee391e1b4b713.png)

And while I was able to log in to the forum using the /login URL, I couldn’t log out…

Please tell me how to get the top menu and Login / Logout buttons back? I couldn’t find them in the settings.

---

<div class="post-metadata">

### Author: ![tobiaseigen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tobiaseigen/32/539204_2.png) [@tobiaseigen](https://meta.discourse.org/u/tobiaseigen)
#### Post date: [December 15, 2025, 7:27pm UTC](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201/17 "2025-12-15T19:27:04Z")

</div>

Glad you figured out how to update your site!

You can log out by selecting your avatar in the top right corner, then on the last item at the bottom of the right side menu. That change was introduced several years ago already!

Please don’t @ mention members by name when asking general questions like this. We are not the only ones who can answer these kinds of questions and it generates a lot of extra noise for those who you mention.

---

<div class="post-metadata">

### Author: ![nahimov](https://avatars.discourse-cdn.com/v4/letter/n/aca169/32.png) [@nahimov](https://meta.discourse.org/u/nahimov)
#### Post date: [December 15, 2025, 7:34pm UTC](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201/18 "2025-12-15T19:34:21Z")

</div>

> [@tobiaseigen](#):
>
> Please don’t @ mention members by name when asking general questions like this. We are not the only ones who can answer these kinds of questions and it generates a lot of extra noise for those who you mention.

I’m sorry, I won’t do it again.

> [@tobiaseigen](#):
>
> You can log out by selecting your avatar in the top right corner, then on the last item at the bottom of the right side menu. That change was introduced several years ago already!

Yes. But I don’t see the menu in the upper right corner. From my screenshots, it’s clear that it’s there on the old forum version, but not on the updated one. I didn’t capture the entire old forum version. Here’s the corrected screenshot.

Could it be that our custom banner, which worked perfectly on the old version, is blocking this menu on the new version? And how can this be fixed without removing the banner?

 ![SCR-20251215-ufvf](https://global.discourse-cdn.com/meta/original/4X/c/0/5/c05a2b58aad5a60d96c1e8141d9eb34a7f2a3d01.png)

---

<div class="post-metadata">

### Author: ![tobiaseigen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tobiaseigen/32/539204_2.png) [@tobiaseigen](https://meta.discourse.org/u/tobiaseigen)
#### Post date: [December 15, 2025, 7:35pm UTC](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201/19 "2025-12-15T19:35:30Z")

</div>

In that screenshot you are not logged into discourse.

---

<div class="post-metadata">

### Author: ![nahimov](https://avatars.discourse-cdn.com/v4/letter/n/aca169/32.png) [@nahimov](https://meta.discourse.org/u/nahimov)
#### Post date: [December 15, 2025, 7:38pm UTC](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201/20 "2025-12-15T19:38:58Z")

</div>

It’s old version - 2.8.5

I don’t see this menu in the new version. Can it be covered by our custom top banner?

[Next page](https://meta.discourse.org/t/upgrading-old-version-2-8-5-issues/389201.md?page=2)
