# ./launcher rebuild app error: bootstrap failed with exit code 234

**URL:** https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999
**Category:** Support
**Created:** [February 23, 2025, 8:22pm UTC](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999 "2025-02-23T20:22:55Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![sjjh](https://avatars.discourse-cdn.com/v4/letter/s/d2c977/32.png) [@sjjh](https://meta.discourse.org/u/sjjh)
#### Post date: [February 23, 2025, 8:22pm UTC](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999/1 "2025-02-23T20:22:55Z")

</div>

The update of discourse via `./launcher rebuild app` fails with following output:

```plaintext
x86_64 arch detected.
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.20250129-0720: Pulling from discourse/base
Digest: sha256:01b8516e5504c0e9bc3707773015ff4407be03a89154194ff3b5b8699291bc26
Status: Image is up to date for discourse/base:2.0.20250129-0720
docker.io/discourse/base:2.0.20250129-0720
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2025-02-23T13:57:37.228548 #1] INFO -- : Reading from stdin
I, [2025-02-23T13:57:37.239599 #1] INFO -- : File > /etc/service/postgres/run chmod: +x cho
wn: 
I, [2025-02-23T13:57:37.243003 #1] INFO -- : File > /etc/service/postgres/log/run chmod: +x 
 chown: 
I, [2025-02-23T13:57:37.246170 #1] INFO -- : File > /etc/runit/3.d/99-postgres chmod: +x ch
own: 
I, [2025-02-23T13:57:37.249455 #1] INFO -- : File > /root/install_postgres chmod: +x chown:
 
I, [2025-02-23T13:57:37.252447 #1] INFO -- : File > /root/upgrade_postgres chmod: +x chown:
 
I, [2025-02-23T13:57:37.252768 #1] INFO -- : Replacing data_directory = '/var/lib/postgresql/
15/main' with data_directory = '/shared/postgres_data' in /etc/postgresql/15/main/postgresql.c
onf
I, [2025-02-23T13:57:37.440507 #1] INFO -- : Replacing (?-mix:#?listen_addresses *=.*) with l
isten_addresses = '*' in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T13:57:37.440880 #1] INFO -- : Replacing (?-mix:#?synchronous_commit *=.*) with
 synchronous_commit = $db_synchronous_commit in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T13:57:37.441239 #1] INFO -- : Replacing (?-mix:#?shared_buffers *=.*) with sha
red_buffers = $db_shared_buffers in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T13:57:37.441541 #1] INFO -- : Replacing (?-mix:#?work_mem *=.*) with work_mem 
= $db_work_mem in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T13:57:37.441851 #1] INFO -- : Replacing (?-mix:#?default_text_search_config *=
.*) with default_text_search_config = '$db_default_text_search_config' in /etc/postgresql/15/m
ain/postgresql.conf
I, [2025-02-23T13:57:37.442167 #1] INFO -- : Replacing (?-mix:#?checkpoint_segments *=.*) wit
h checkpoint_segments = $db_checkpoint_segments in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T13:57:37.445665 #1] INFO -- : Replacing (?-mix:#?logging_collector *=.*) with 
logging_collector = $db_logging_collector in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T13:57:37.446205 #1] INFO -- : Replacing (?-mix:#?log_min_duration_statement *=
.*) with log_min_duration_statement = $db_log_min_duration_statement in /etc/postgresql/15/mai
n/postgresql.conf
I, [2025-02-23T13:57:37.446558 #1] INFO -- : Replacing (?-mix:^#local +replication +postgres 
+peer$) with local replication postgres peer in /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-23T13:57:37.657721 #1] INFO -- : Replacing (?-mix:^host.*all.*all.*127.*$) with h
ost all all 0.0.0.0/0 md5 in /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-23T13:57:37.658015 #1] INFO -- : Replacing (?-mix:^host.*all.*all.*::1\/128.*$) w
ith host all all ::/0 md5 in /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-23T13:57:37.658265 #1] INFO -- : > if [-f /root/install_postgres]; then
  /root/install_postgres && rm -f /root/install_postgres
elif [-e /shared/postgres_run/.s.PGSQL.5432]; then
  socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres a
lready running stop container ; exit 1
fi

I, [2025-02-23T14:00:39.168878 #1] INFO -- : Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.

I, [2025-02-23T14:00:39.169118 #1] INFO -- : > HOME=/var/lib/postgresql USER=postgres exec ch
pst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/pos
tmaster -D /etc/postgresql/15/main
I, [2025-02-23T14:00:39.173972 #1] INFO -- : File > /usr/local/bin/create_db chmod: +x chow
n: 
I, [2025-02-23T14:00:39.178706 #1] INFO -- : File > /var/lib/postgresql/take-database-backup 
 chmod: +x chown: postgres:postgres
I, [2025-02-23T14:00:39.181157 #1] INFO -- : File > /var/spool/cron/crontabs/postgres chmod:
   chown: 
I, [2025-02-23T14:00:39.181339 #1] INFO -- : > sleep 5
2025-02-23 14:00:39.224 UTC [42] LOG: starting PostgreSQL 15.10 (Debian 15.10-1.pgdg120+1) on
 x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
2025-02-23 14:00:39.225 UTC [42] LOG: listening on IPv4 address "0.0.0.0", port 5432
2025-02-23 14:00:39.225 UTC [42] LOG: listening on IPv6 address "::", port 5432
2025-02-23 14:00:39.237 UTC [42] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.
5432"
2025-02-23 14:00:39.255 UTC [53] LOG: database system was shut down at 2025-02-23 13:50:51 UT
C
2025-02-23 14:00:39.265 UTC [42] LOG: database system is ready to accept connections
I, [2025-02-23T14:00:44.183099 #1] INFO -- : 
I, [2025-02-23T14:00:44.183251 #1] INFO -- : > /usr/local/bin/create_db
2025-02-23 14:00:44.245 UTC [60] postgres@postgres ERROR: database "discourse" already exists
2025-02-23 14:00:44.245 UTC [60] postgres@postgres STATEMENT: CREATE DATABASE discourse;
createdb: error: database creation failed: ERROR: database "discourse" already exists
2025-02-23 14:00:44.305 UTC [63] postgres@discourse ERROR: role "discourse" already exists
2025-02-23 14:00:44.305 UTC [63] postgres@discourse STATEMENT: create user discourse;
ERROR: role "discourse" already exists
NOTICE: extension "hstore" already exists, skipping
NOTICE: extension "pg_trgm" already exists, skipping
NOTICE: extension "vector" already exists, skipping
NOTICE: version "0.8.0" of extension "vector" is already installed
NOTICE: extension "hstore" already exists, skipping
NOTICE: extension "pg_trgm" already exists, skipping
NOTICE: extension "vector" already exists, skipping
NOTICE: version "0.8.0" of extension "vector" is already installed
I, [2025-02-23T14:00:44.919371 #1] INFO -- : GRANT
ALTER SCHEMA
CREATE EXTENSION
CREATE EXTENSION
CREATE EXTENSION
ALTER EXTENSION
CREATE EXTENSION
CREATE EXTENSION
CREATE EXTENSION
ALTER EXTENSION
UPDATE 0

I, [2025-02-23T14:00:44.919485 #1] INFO -- : > echo postgres installed!
I, [2025-02-23T14:00:44.921215 #1] INFO -- : postgres installed!

I, [2025-02-23T14:00:44.924527 #1] INFO -- : File > /etc/service/redis/run chmod: +x chown:
 
I, [2025-02-23T14:00:44.927857 #1] INFO -- : File > /etc/service/redis/log/run chmod: +x ch
own: 
I, [2025-02-23T14:00:44.931110 #1] INFO -- : File > /etc/runit/3.d/10-redis chmod: +x chown
: 
I, [2025-02-23T14:00:44.931473 #1] INFO -- : Replacing daemonize yes with in /etc/redis/redi
s.conf
I, [2025-02-23T14:00:45.155642 #1] INFO -- : Replacing (?-mix:^pidfile.*$) with in /etc/redi
s/redis.conf
I, [2025-02-23T14:00:45.156000 #1] INFO -- : > install -d -m 0755 -o redis -g redis /shared/r
edis_data
I, [2025-02-23T14:00:45.158306 #1] INFO -- : 
I, [2025-02-23T14:00:45.158630 #1] INFO -- : Replacing (?-mix:^logfile.*$) with logfile "" in
 /etc/redis/redis.conf
I, [2025-02-23T14:00:45.159059 #1] INFO -- : Replacing (?-mix:^bind .*$) with in /etc/redis/
redis.conf
I, [2025-02-23T14:00:45.159470 #1] INFO -- : Replacing (?-mix:^dir .*$) with dir /shared/redi
s_data in /etc/redis/redis.conf
I, [2025-02-23T14:00:45.159932 #1] INFO -- : Replacing (?-mix:^protected-mode yes) with prote
cted-mode no in /etc/redis/redis.conf
I, [2025-02-23T14:00:45.160305 #1] INFO -- : Replacing # io-threads 4 with io-threads $redis_
io_threads in /etc/redis/redis.conf
I, [2025-02-23T14:00:45.160642 #1] INFO -- : > echo redis installed
I, [2025-02-23T14:00:45.162058 #1] INFO -- : redis installed

I, [2025-02-23T14:00:45.162196 #1] INFO -- : > cat /etc/redis/redis.conf | grep logfile
I, [2025-02-23T14:00:45.164878 #1] INFO -- : logfile ""

I, [2025-02-23T14:00:45.165018 #1] INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-se
rver /etc/redis/redis.conf
I, [2025-02-23T14:00:45.166157 #1] INFO -- : > sleep 10
109:C 23 Feb 2025 14:00:45.173 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
109:C 23 Feb 2025 14:00:45.173 # Redis version=7.0.15, bits=64, commit=00000000, modified=0, p
id=109, just started
109:C 23 Feb 2025 14:00:45.173 # Configuration loaded
109:M 23 Feb 2025 14:00:45.174 * monotonic clock: POSIX clock_gettime
109:M 23 Feb 2025 14:00:45.174 * Running mode=standalone, port=6379.
109:M 23 Feb 2025 14:00:45.174 # Server initialized
109:M 23 Feb 2025 14:00:45.174 # WARNING Memory overcommit must be enabled! Without it, a back
ground save or replication may fail under low memory condition. Being disabled, it can can als
o 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.
109:M 23 Feb 2025 14:00:45.175 * Loading RDB produced by version 7.0.15
109:M 23 Feb 2025 14:00:45.175 * RDB age 594 seconds
109:M 23 Feb 2025 14:00:45.175 * RDB memory usage when created 1.93 Mb
109:M 23 Feb 2025 14:00:45.179 * Done loading RDB, keys loaded: 1587, keys expired: 0.
109:M 23 Feb 2025 14:00:45.179 * DB loaded from disk: 0.005 seconds
109:M 23 Feb 2025 14:00:45.179 * Ready to accept connections
I, [2025-02-23T14:00:55.167739 #1] INFO -- : 
I, [2025-02-23T14:00:55.167969 #1] INFO -- : > thpoff echo "thpoff is installed!"
I, [2025-02-23T14:00:55.170853 #1] INFO -- : thpoff is installed!

I, [2025-02-23T14:00:55.171140 #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-02-23T14:00:55.261142 #1] INFO -- : 
I, [2025-02-23T14:00:55.261282 #1] INFO -- : > /usr/local/bin/ruby -e 'if ENV["DISCOURSE_HOST
NAME"] == "discourse.example.com"; puts "Aborting! Domain is not configured!"; exit 1; end'
I, [2025-02-23T14:00:55.261142 #1] INFO -- : 
I, [2025-02-23T14:00:55.261282 #1] INFO -- : > /usr/local/bin/ruby -e 'if ENV["DISCOURSE_HOST
NAME"] == "discourse.example.com"; puts "Aborting! Domain is not configured!"; exit 1; end'
I, [2025-02-23T14:00:55.353653 #1] INFO -- : 
I, [2025-02-23T14:00:55.353790 #1] INFO -- : > /usr/local/bin/ruby -e 'if (ENV["DISCOURSE_CDN
_URL"] || "")[0..1] == "//"; puts "Aborting! CDN must have a protocol specified. Once fixed yo
u should rebake your posts now to correct all posts."; exit 1; end'
I, [2025-02-23T14:00:55.447241 #1] INFO -- : 
I, [2025-02-23T14:00:55.447431 #1] INFO -- : > rm -f /etc/cron.d/anacron
I, [2025-02-23T14:00:55.449559 #1] INFO -- : 
I, [2025-02-23T14:00:55.451483 #1] INFO -- : File > /etc/cron.d/anacron chmod: chown: 
I, [2025-02-23T14:00:55.454910 #1] INFO -- : File > /etc/runit/1.d/copy-env chmod: +x chown
: 
I, [2025-02-23T14:00:55.458351 #1] INFO -- : File > /etc/service/unicorn/run chmod: +x chow
n: 
I, [2025-02-23T14:00:55.461584 #1] INFO -- : File > /etc/service/nginx/run chmod: +x chown:
 
I, [2025-02-23T14:00:55.464693 #1] INFO -- : File > /etc/runit/3.d/01-nginx chmod: +x chown
: 
I, [2025-02-23T14:00:55.467810 #1] INFO -- : File > /etc/runit/3.d/02-unicorn chmod: +x cho
wn: 
I, [2025-02-23T14:00:55.467967 #1] INFO -- : Replacing # postgres with if [ -f /root/install_
postgres ]; then
  /root/install_postgres
  rm /root/install_postgres
fi
sv start postgres || exit 1
 in /etc/service/unicorn/run
I, [2025-02-23T14:00:55.469888 #1] INFO -- : > cd /var/www/discourse && sudo -H -E -u discour
se git clean -f
I, [2025-02-23T14:00:55.699669 #1] INFO -- : 
I, [2025-02-23T14:00:55.699811 #1] INFO -- : > cd /var/www/discourse && sudo -H -E -u discour
se bash -c '
  set -o errexit
  if [$(git rev-parse --is-shallow-repository) == "true"]; then
      git remote set-branches --add origin main
      git remote set-branches origin tests-passed
      git fetch --depth 1 origin tests-passed
  else
      git fetch --tags --prune-tags --prune --force origin
  fi
'
From https://github.com/discourse/discourse
 - [deleted] (none) -> origin/0-app-events-revolution
 - [deleted] (none) -> origin/0-ember-bump-fix-modal
 - [deleted] (none) -> origin/0-polls-still
 - [deleted] (none) -> origin/0-rename-details
 - [deleted] (none) -> origin/0-simpler-placeholder
 - [deleted] (none) -> origin/0-store-bump
 - [deleted] (none) -> origin/0-user-status
 - [deleted] (none) -> origin/add-formkit-instruction-text
 - [deleted] (none) -> origin/add-live-reload-disable-option
 - [deleted] (none) -> origin/add-message-builder-modifier-3
 - [deleted] (none) -> origin/add-shift-detect
 - [deleted] (none) -> origin/add-shortcuts
 - [deleted] (none) -> origin/add-signal-to-notifications-template
 - [deleted] (none) -> origin/after-post-outlet
 - [deleted] (none) -> origin/again-support-load-more-btn
 - [deleted] (none) -> origin/allow-overriding-sidebar-my-posts-icon
 - [deleted] (none) -> origin/array-custom-field-order
 - [deleted] (none) -> origin/async-category-link
 - [deleted] (none) -> origin/bump-eslint-config
 - [deleted] (none) -> origin/carsick-patch-1
 - [deleted] (none) -> origin/cat-mod-groups
 - [deleted] (none) -> origin/category-experts-approved-webhook-event-wip
 - [deleted] (none) -> origin/chat-github-onebox
 - [deleted] (none) -> origin/chat-uppy-upload
 - [deleted] (none) -> origin/composer-disable-submit
 - [deleted] (none) -> origin/conditional-summary-box
 - [deleted] (none) -> origin/custom-field-store-cleanup
 - [deleted] (none) -> origin/d-object
 - [deleted] (none) -> origin/defer-button-action
 - [deleted] (none) -> origin/demote-summarize-ai-button
 - [deleted] (none) -> origin/dependabot/npm_and_yarn/uppy-b578ad6dea
 - [deleted] (none) -> origin/dev-better-active-selection-detection
 - [deleted] (none) -> origin/dev-fail-tests-on-fa6-deprecated-icons-from-svg-
sprite-rb
 - [deleted] (none) -> origin/dev-faster-tests
 - [deleted] (none) -> origin/dev-migrate-user-passwords
 - [deleted] (none) -> origin/dev-refactor-username-validation-mixin
 - [deleted] (none) -> origin/dev/add-a-reference-column-to-notifications
 - [deleted] (none) -> origin/dev/advanced-search-custom-in-special
 - [deleted] (none) -> origin/dev/automation-scriptable-add-with-class
 - [deleted] (none) -> origin/dev/default-plugin-config-pages
 - [deleted] (none) -> origin/dev/drop-ignore-chat_channels_last_message_sent_
at
 - [deleted] (none) -> origin/dev/port-outlet-wrapper-to-stable
 - [deleted] (none) -> origin/dev/refactor-uploads-importer
 - [deleted] (none) -> origin/dev/remove-deprecated-respect-plugin-positional-
argument
 - [deleted] (none) -> origin/dev/sidebar-sections-collapse-expand-transformer
-events
 - [deleted] (none) -> origin/dev/sidebar-subsections
 - [deleted] (none) -> origin/dev/third-party-breadcrumbs
 - [deleted] (none) -> origin/dev_add_query_param
 - [deleted] (none) -> origin/dev_lazy_load_categories_tests
 - [deleted] (none) -> origin/dev_update_category_position
 - [deleted] (none) -> origin/docs-publishing-mvp
 - [deleted] (none) -> origin/drawer-composer-positioning
 - [deleted] (none) -> origin/ember-4
 - [deleted] (none) -> origin/expand-allowed-custom-emoji-images-types
 - [deleted] (none) -> origin/extra-js-revert
 - [deleted] (none) -> origin/feature/add-user-to-topic_tags_changed-event
 - [deleted] (none) -> origin/feature/custom-fields-for-existing-users
 - [deleted] (none) -> origin/feature/enable-chat-with-dms-only
 - [deleted] (none) -> origin/feature/light-dark-mode-switcher
 - [deleted] (none) -> origin/feature/paste-upload-on-first-upload-input-templ
ates
 - [deleted] (none) -> origin/feature/show-note-bookmark-notif
 - [deleted] (none) -> origin/feature/show-status-on-mentions-when-user-havent
-used-autocomplete
 - [deleted] (none) -> origin/feature_pm_editor
 - [deleted] (none) -> origin/feature_track_mentions
 - [deleted] (none) -> origin/fix-directory-search-limit
 - [deleted] (none) -> origin/fix-display-errors-for-history-modal-when-fetchi
ng-revisions
 - [deleted] (none) -> origin/fix-firefox-android-followup
 - [deleted] (none) -> origin/fix-password-reset-security-key
 - [deleted] (none) -> origin/fix-redirect-login
 - [deleted] (none) -> origin/fix-safari-below-18-detection
 - [deleted] (none) -> origin/fix-search-context-delete-key
 - [deleted] (none) -> origin/fix-unread-notifications-take-2
 - [deleted] (none) -> origin/fix/migrated-reactions-count-calculation
 - [deleted] (none) -> origin/fix/tag-rename-404
 - [deleted] (none) -> origin/full-page
 - [deleted] (none) -> origin/glimmer-header-dnd-live
 - [deleted] (none) -> origin/group_and_tag_group_permission_change_notification
 - [deleted] (none) -> origin/handle-non-ascii-charc
 - [deleted] (none) -> origin/hijacks
 - [deleted] (none) -> origin/history-store-methods
 - [deleted] (none) -> origin/i18n-helper-import
 - [deleted] (none) -> origin/image-assets
 - [deleted] (none) -> origin/implicit-injections-deprecations
 - [deleted] (none) -> origin/improve-claimed-reviewables-transactions
 - [deleted] (none) -> origin/improve-tablet-detection
 - [deleted] (none) -> origin/issue/do-not-enforce-2fa-on-social-logins
 - [deleted] (none) -> origin/issue/fix-user-field-enum-migrate
 - [deleted] (none) -> origin/issue/fixup-upload-ref-backfill-migration-dates
 - [deleted] (none) -> origin/jjaffeux-otp-validation
 - [deleted] (none) -> origin/list-wrapper
 - [deleted] (none) -> origin/live-cache
 - [deleted] (none) -> origin/lock-step
 - [deleted] (none) -> origin/loic-enable-rspec-rule
 - [deleted] (none) -> origin/loic-upgrade-miniracer
 - [deleted] (none) -> origin/more-topics-active
 - [deleted] (none) -> origin/nginx-conf
 - [deleted] (none) -> origin/oklab
 - [deleted] (none) -> origin/omniauth-2
 - [deleted] (none) -> origin/pento/feature-allow-admins-to-export-users
 - [deleted] (none) -> origin/plugin-outlet-no-subdir
 - [deleted] (none) -> origin/post-widget-outlet
 - [deleted] (none) -> origin/powered-by-reactivity
 - [deleted] (none) -> origin/promote-migration-tweak
 - [deleted] (none) -> origin/prune-old-transpilers
 - [deleted] (none) -> origin/refactor-mobile-coposer-position-replace-actions
 - [deleted] (none) -> origin/remap-assume-yes-option
 - [deleted] (none) -> origin/remove-bootbox
 - [deleted] (none) -> origin/remove-muted-from-hot-and-top-topic-lists
 - [deleted] (none) -> origin/remove-x-count
 - [deleted] (none) -> origin/render-glimmer-granular
- [deleted] (none) -> origin/revert-28587-revert-28321-dev/remove-create_post
_for_category_and_tag_changes-setting
 - [deleted] (none) -> origin/revert-location-change
 - [deleted] (none) -> origin/revert-thread-title-experiment
 - [deleted] (none) -> origin/safari-hacks-sayonara
 - [deleted] (none) -> origin/see_if_yarn_cache_is_working
 - [deleted] (none) -> origin/shared-draft-category
 - [deleted] (none) -> origin/skip-back-button-animation
 - [deleted] (none) -> origin/tag-span
 - [deleted] (none) -> origin/temp-pr-28024
 - [deleted] (none) -> origin/testing_debian_12
 - [deleted] (none) -> origin/tobiaseigen-patch-4
 - [deleted] (none) -> origin/topic-count-fix
 - [deleted] (none) -> origin/topic-list-item-style
 - [deleted] (none) -> origin/translations-from-crowdin-main
 - [deleted] (none) -> origin/translations-from-crowdin-stable
 - [deleted] (none) -> origin/update-gems-stable
 - [deleted] (none) -> origin/ux/admin-site-setting-inner-sidebar-experiment
 - [deleted] (none) -> origin/whats-new-notify-plugins
   c64b5d6d7..c592edbe3 main -> origin/main
 * [new branch] add-header-search-experience -> origin/add-header-search-experience
 + 3c0b2f75f...0d2238318 allow-posts-link-in-sidebar -> origin/allow-posts-link-in-sidebar (f
orced update)
 * [new branch] async-data -> origin/async-data
 * [new branch] automation-autoload -> origin/automation-autoload
 * [new branch] br/multiple_likes -> origin/br/multiple_likes
 * [new branch] branding-logo -> origin/branding-logo
 * [new branch] chat-summary-email-thread-reply-fix -> origin/chat-summary-email-thre
ad-reply-fix
 * [new branch] d-menu-composer-flag -> origin/d-menu-composer-flag
 * [new branch] dark-light-class -> origin/dark-light-class
 * [new branch] dark-light-mode-helpers -> origin/dark-light-mode-helpers
 * [new branch] dependabot/npm_and_yarn/glimmer/syntax-0.94.7 -> origin/dependabot/np
m_and_yarn/glimmer/syntax-0.94.7
 * [new branch] dependabot/npm_and_yarn/prosemirror-commands-1.7.0 -> origin/dependab
ot/npm_and_yarn/prosemirror-commands-1.7.0
 * [new branch] dependabot/npm_and_yarn/uppy-b82cdcd59c -> origin/dependabot/npm_and_
yarn/uppy-b82cdcd59c
 * [new branch] dev-refactor-password-validation-for-create-account -> origin/dev-ref
actor-password-validation-for-create-account
 + 72ff8f1eb...699aa3755 dev-refactor-username-validation-mixin-to-helper -> origin/dev-refact
or-username-validation-mixin-to-helper (forced update)
 * [new branch] dev/auto-screen-size-screenshots -> origin/dev/auto-screen-size-scree
nshots
 + ec68ffb95...a1849cd39 dev/color-palette-editor -> origin/dev/color-palette-editor (forced 
update)
 * [new branch] dev/ember-async-data-demo -> origin/dev/ember-async-data-demo
 * [new branch] dev/glimmer-post-stream -> origin/dev/glimmer-post-stream
 * [new branch] dev/purge-widget-post-menu -> origin/dev/purge-widget-post-menu
 * [new branch] dev/remove-deprecated-auth-provider-options -> origin/dev/remove-depr
ecated-auth-provider-options
 * [new branch] dev/user-field-components-transformer -> origin/dev/user-field-compon
ents-transformer
 * [new branch] discourse-emojis-gem -> origin/discourse-emojis-gem
 * [new branch] feature-markdown-hex-color -> origin/feature-markdown-hex-color
 * [new branch] feature/admin-search-improvements-2 -> origin/feature/admin-search-im
provements-2
 * [new branch] feature/admins-access-group-chats -> origin/feature/admins-access-gro
up-chats
 * [new branch] feature_pm_codeblock -> origin/feature_pm_codeblock
 * [new branch] feature_pm_emoji -> origin/feature_pm_emoji
 * [new branch] feature_pm_hashtag -> origin/feature_pm_hashtag
 * [new branch] feature_pm_html_block -> origin/feature_pm_html_block
 * [new branch] feature_pm_html_inline -> origin/feature_pm_html_inline
 * [new branch] feature_pm_image -> origin/feature_pm_image
 * [new branch] feature_pm_link -> origin/feature_pm_link
 * [new branch] feature_pm_mention -> origin/feature_pm_mention
 * [new branch] feature_pm_quote -> origin/feature_pm_quote
 * [new branch] feature_pm_strikethrough -> origin/feature_pm_strikethrough
 * [new branch] feature_pm_table -> origin/feature_pm_table
 * [new branch] feature_pm_typographer -> origin/feature_pm_typographer
 * [new branch] feature_pm_underline -> origin/feature_pm_underline
 * [new branch] filter-navigation-ui -> origin/filter-navigation-ui
 * [new branch] fix-zlib -> origin/fix-zlib
 * [new branch] google-topic-count -> origin/google-topic-count
 * [new branch] google-translate-defender -> origin/google-translate-defender
 * [new branch] loic-rspec-instance-var-globally -> origin/loic-rspec-instance-var-gl
obally
 * [new branch] loic-upgrade-sidekiq -> origin/loic-upgrade-sidekiq
 * [new branch] loic-use-bundler-checksums -> origin/loic-use-bundler-checksums
 + 0f2f74d08...06c4fcf62 mt/idb -> origin/mt/idb (forced update)
 * [new branch] pento/dev-upgrade-pnpm-10 -> origin/pento/dev-upgrade-pnpm-10
 * [new branch] pento/feature-which-watched-words-were-written -> origin/pento/featur
e-which-watched-words-were-written
 * [new branch] quick-smoke-test -> origin/quick-smoke-test
 + de3691471...e5890e554 renato/pm -> origin/renato/pm (forced update)
 * [new branch] service-to-update-site-settings -> origin/service-to-update-site-sett
ings
 * [new branch] settings-console-log -> origin/settings-console-log
 * [new branch] split-common-css -> origin/split-common-css
 * [new branch] split-cook-sanitise -> origin/split-cook-sanitise
   5d4c2a89e..3bbf96fa2 stable -> origin/stable
   c64b5d6d7..c592edbe3 tests-passed -> origin/tests-passed
 * [new branch] tobiaseigen-patch-3 -> origin/tobiaseigen-patch-3
 * [new branch] tobiaseigen-patch-3-1 -> origin/tobiaseigen-patch-3-1
 * [new branch] topic-list-outlet-add-columns -> origin/topic-list-outlet-add-columns
 * [new branch] topic-list-outlet-add-columns-stable -> origin/topic-list-outlet-add-
columns-stable
   415cccafb..c43caf483 user-fields-plugin-outlets-update -> origin/user-fields-plugin-outlet
s-update
 * [new branch] user-menu-full-name-rebased -> origin/user-menu-full-name-rebased
 * [new branch] user-summary-topic-add-plugin-wrappers -> origin/user-summary-topic-a
dd-plugin-wrappers
   10566d84b..c540132fe ux/combined-themes-components-sidebar-links -> origin/ux/combined-the
mes-components-sidebar-links
 * [new branch] visual-experiment -> origin/visual-experiment
 t [tag update] beta -> beta
 t [tag update] latest-release -> latest-release
 * [new tag] v3.3.4 -> v3.3.4
 * [new tag] v3.4.0 -> v3.4.0
 * [new tag] v3.4.0.beta4 -> v3.4.0.beta4
I, [2025-02-23T14:00:56.808582 #1] INFO -- : 
I, [2025-02-23T14:00:56.808699 #1] INFO -- : > cd /var/www/discourse && sudo -H -E -u discour
se bash -c '
  set -o errexit
  if [[$(git symbolic-ref --short HEAD) == tests-passed]] ; then
      git pull
  else
      git -c advice.detachedHead=false checkout tests-passed
  fi
'
Switched to a new branch 'tests-passed'
I, [2025-02-23T14:01:04.408360 #1] INFO -- : branch 'tests-passed' set up to track 'origin/te
sts-passed'.

I, [2025-02-23T14:01:04.408487 #1] INFO -- : > cd /var/www/discourse && sudo -H -E -u discour
se git config user.discourse-version tests-passed
I, [2025-02-23T14:01:04.418102 #1] INFO -- : 
I, [2025-02-23T14:01:04.418236 #1] INFO -- : > cd /var/www/discourse && mkdir -p tmp
I, [2025-02-23T14:01:04.420716 #1] INFO -- : 
I, [2025-02-23T14:01:04.420801 #1] INFO -- : > cd /var/www/discourse && chown discourse:www-d
ata tmp
I, [2025-02-23T14:01:04.423030 #1] INFO -- : 
I, [2025-02-23T14:01:04.423097 #1] INFO -- : > cd /var/www/discourse && mkdir -p tmp/pids
I, [2025-02-23T14:01:04.425313 #1] INFO -- : 
I, [2025-02-23T14:01:04.425384 #1] INFO -- : > cd /var/www/discourse && mkdir -p tmp/sockets
I, [2025-02-23T14:01:04.427628 #1] INFO -- : 
I, [2025-02-23T14:01:04.427696 #1] INFO -- : > cd /var/www/discourse && touch tmp/.gitkeep
I, [2025-02-23T14:01:04.429836 #1] INFO -- : 
I, [2025-02-23T14:01:04.429907 #1] INFO -- : > cd /var/www/discourse && mkdir -p             
       /shared/log/rails
I, [2025-02-23T14:01:04.432249 #1] INFO -- : 
I, [2025-02-23T14:01:04.432370 #1] INFO -- : > cd /var/www/discourse && bash -c "touch -a    
       /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.
log"
I, [2025-02-23T14:01:04.435683 #1] INFO -- : 
I, [2025-02-23T14:01:04.435810 #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-02-23T14:01:04.439586 #1] INFO -- : 
I, [2025-02-23T14:01:04.439704 #1] INFO -- : > cd /var/www/discourse && bash -c "mkdir -p    
       /shared/{uploads,backups}"
I, [2025-02-23T14:01:04.443250 #1] INFO -- : 
I, [2025-02-23T14:01:04.443370 #1] INFO -- : > cd /var/www/discourse && bash -c "ln -s    
       /shared/{uploads,backups} /var/www/discourse/public"
I, [2025-02-23T14:01:04.446759 #1] INFO -- : 
I, [2025-02-23T14:01:04.446880 #1] INFO -- : > cd /var/www/discourse && bash -c "mkdir -p    
       /shared/tmp/{backups,restores}"
I, [2025-02-23T14:01:04.450346 #1] INFO -- : 
I, [2025-02-23T14:01:04.450466 #1] INFO -- : > cd /var/www/discourse && bash -c "ln -s    
       /shared/tmp/{backups,restores} /var/www/discourse/tmp"
I, [2025-02-23T14:01:04.453698 #1] INFO -- : 
I, [2025-02-23T14:01:04.453819 #1] INFO -- : > cd /var/www/discourse && chown -R discourse:ww
w-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp
I, [2025-02-23T14:01:04.459171 #1] INFO -- : 
I, [2025-02-23T14:01:04.459297 #1] INFO -- : > cd /var/www/discourse && [ ! -d public/plugins
 ] || find public/plugins/ -maxdepth 1 -xtype l -delete
I, [2025-02-23T14:01:04.460710 #1] INFO -- : 
I, [2025-02-23T14:01:04.460891 #1] INFO -- : Replacing # redis with if [ ! -d /shared/redis_d
ata ]; then
  install -d -m 0755 -o redis -g redis /shared/redis_data
fi
sv start redis || exit 1 in /etc/service/unicorn/run
I, [2025-02-23T14:01:04.461290 #1] INFO -- : > cd /var/www/discourse/plugins && git clone htt
ps://github.com/discourse/docker_manager.git
Cloning into 'docker_manager'...
I, [2025-02-23T14:01:05.488476 #1] INFO -- : 
I, [2025-02-23T14:01:05.488621 #1] INFO -- : > cd /var/www/discourse/plugins && git clone htt
ps://github.com/communiteq/discourse-private-topics.git
Cloning into 'discourse-private-topics'...
I, [2025-02-23T14:01:06.031956 #1] INFO -- : 
I, [2025-02-23T14:01:06.032288 #1] INFO -- : > cp /var/www/discourse/config/nginx.sample.conf
 /etc/nginx/conf.d/discourse.conf
I, [2025-02-23T14:01:06.034774 #1] INFO -- : 
I, [2025-02-23T14:01:06.034847 #1] INFO -- : > rm /etc/nginx/sites-enabled/default
I, [2025-02-23T14:01:06.036387 #1] INFO -- : 
I, [2025-02-23T14:01:06.036485 #1] INFO -- : > mkdir -p /var/nginx/cache
I, [2025-02-23T14:01:06.038265 #1] INFO -- : 
I, [2025-02-23T14:01:06.038445 #1] INFO -- : Replacing pid /run/nginx.pid; with daemon off; i
n /etc/nginx/nginx.conf
I, [2025-02-23T14:01:06.392764 #1] INFO -- : Replacing (?m-ix:upstream[^\}]+\}) with upstream
 discourse { server 127.0.0.1:3000; } in /etc/nginx/conf.d/discourse.conf
I, [2025-02-23T14:01:06.393104 #1] INFO -- : Replacing (?-mix:server_name.+$) with server_nam
e _ ; in /etc/nginx/conf.d/discourse.conf
I, [2025-02-23T14:01:06.393446 #1] INFO -- : Replacing (?-mix:client_max_body_size.+$) with c
lient_max_body_size $upload_size ; in /etc/nginx/conf.d/discourse.conf
I, [2025-02-23T14:01:06.393786 #1] INFO -- : Replacing (?-mix:worker_connections.+$) with wor
ker_connections $nginx_worker_connections ; in /etc/nginx/nginx.conf
I, [2025-02-23T14:01:06.394050 #1] INFO -- : > echo "done configuring web"
I, [2025-02-23T14:01:06.395702 #1] INFO -- : done configuring web

I, [2025-02-23T14:01:06.395931 #1] INFO -- : > cd /var/www/discourse && gem install bundler -
-conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock)
I, [2025-02-23T14:01:06.710273 #1] INFO -- : 
I, [2025-02-23T14:01:06.710415 #1] INFO -- : > cd /var/www/discourse && find /var/www/discour
se ! -user discourse -exec chown discourse {} \+
I, [2025-02-23T14:01:09.127306 #1] INFO -- : 
I, [2025-02-23T14:01:09.127590 #1] INFO -- : > cd /var/www/discourse && if [-f yarn.lock]; 
then
  if [-d node_modules/.pnpm]; then
    echo "This version of Discourse uses yarn, but pnpm node_modules are preset. Cleaning up..
."
    find ./node_modules ./app/assets/javascripts/*/node_modules -mindepth 1 -maxdepth 1 -exec 
rm -rf {} +
  fi
  su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
else
  su discourse -c 'CI=1 pnpm install --frozen-lockfile && pnpm prune'
fi
I, [2025-02-23T14:01:10.746254 #1] INFO -- : Scope: all 17 workspace projects
Lockfile is up to date, resolution step is skipped
<E2><80><89>EINVAL<E2><80><89> EINVAL: invalid argument, rmdir '/var/www/discourse/app/assets/
javascripts/dialog-holder/node_modules/.bin'

I, [2025-02-23T14:01:10.746702 #1] INFO -- : Terminating async processes
I, [2025-02-23T14:01:10.746784 #1] INFO -- : Sending INT to HOME=/var/lib/postgresql USER=pos
tgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgres
ql/15/bin/postmaster -D /etc/postgresql/15/main pid: 42
I, [2025-02-23T14:01:10.746868 #1] INFO -- : Sending TERM to exec chpst -u redis -U redis /us
r/bin/redis-server /etc/redis/redis.conf pid: 109
2025-02-23 14:01:10.746 UTC [42] LOG: received fast shutdown request
109:signal-handler (1740319270) Received SIGTERM scheduling shutdown...
109:M 23 Feb 2025 14:01:10.753 # User requested shutdown...
109:M 23 Feb 2025 14:01:10.753 * Saving the final RDB snapshot before exiting.
2025-02-23 14:01:10.772 UTC [42] LOG: aborting any active transactions
2025-02-23 14:01:10.774 UTC [42] LOG: background worker "logical replication launcher" (PID 5
6) exited with exit code 1
2025-02-23 14:01:10.774 UTC [51] LOG: shutting down
2025-02-23 14:01:10.792 UTC [51] LOG: checkpoint starting: shutdown immediate
109:M 23 Feb 2025 14:01:10.801 * DB saved on disk
109:M 23 Feb 2025 14:01:10.801 # Redis is now ready to exit, bye bye...
2025-02-23 14:01:10.867 UTC [51] LOG: checkpoint complete: wrote 4 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.002 s, sync=0.027 s, total=0.093 s; sync files=3, longest=0.010 s, average=0.009 s; distance=5 kB, estimate=5 kB
2025-02-23 14:01:10.873 UTC [42] LOG: database system is shut down

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && if [-f yarn.lock]; then
  if [-d node_modules/.pnpm]; then
    echo "This version of Discourse uses yarn, but pnpm node_modules are preset. Cleaning up..."
    find ./node_modules ./app/assets/javascripts/*/node_modules -mindepth 1 -maxdepth 1 -exec rm -rf {} +
  fi
  su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
else
  su discourse -c 'CI=1 pnpm install --frozen-lockfile && pnpm prune'
fi failed with return #<Process::Status: pid 290 exit 234>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"yarn", "cmd"=>["if [-f yarn.lock]; then\n if [-d node_modules/.pnpm]; then\n echo \"This version of Discourse uses yarn, but pnpm node_modules are preset. Cleaning up...\"\n find ./node_modules ./app/assets/javascripts/*/node_modules -mindepth 1 -maxdepth 1 -exec rm -rf {} +\n fi\n su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'\nelse\n su discourse -c 'CI=1 pnpm install --frozen-lockfile && pnpm prune'\nfi"]}
bootstrap failed with exit code 234
**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.
bf860505d7d5e6379093f311be8da79cc526d9f1180e779bca2470adef464e7d

```

I couldn’t find any information about the `exit code 234`. Any idea what’s going wrong?

---

<div class="post-metadata">

### Author: ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)
#### Post date: [February 23, 2025, 8:59pm UTC](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999/2 "2025-02-23T20:59:00Z")

</div>

I think perhaps this is where an error was encountered, perhaps in the pnpm package manager, but I don’t know the meaning of it:

> [@sjjh](#):
>
> ```plaintext
> I, [2025-02-23T14:01:10.746254 #1] INFO -- : Scope: all 17 workspace projects
> Lockfile is up to date, resolution step is skipped
> <E2><80><89>EINVAL<E2><80><89> EINVAL: invalid argument, rmdir '/var/www/discourse/app/assets/
> javascripts/dialog-holder/node_modules/.bin'
> 
> ```

I think the command line running at the time would be

> [@sjjh](#):
>
> ```plaintext
> su discourse -c 'CI=1 pnpm install --frozen-lockfile && pnpm prune'
> 
> ```

---

<div class="post-metadata">

### Author: ![jahan\_gagan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jahan_gagan/32/501948_2.png) [@jahan\_gagan](https://meta.discourse.org/u/jahan_gagan)
#### Post date: [February 23, 2025, 9:01pm UTC](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999/3 "2025-02-23T21:01:38Z")

</div>

The error is due to a mismatch between `yarn` and `pnpm` . The failure is specifically due to:  
`EINVAL: invalid argument, rmdir '/var/www/discourse/app/assets/javascripts/dialog-holder/node_modules/.bin'`

**Suggested Steps:**

1. Manually remove Node Modules: `rm -rf node_modules app/assets/javascripts/*/node_modules`
2. Run cleanup: `./launcher cleanup`
3. Rebuild Discourse: `./launcher rebuild app`

---

<div class="post-metadata">

### Author: ![sjjh](https://avatars.discourse-cdn.com/v4/letter/s/d2c977/32.png) [@sjjh](https://meta.discourse.org/u/sjjh)
#### Post date: [February 23, 2025, 9:57pm UTC](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999/4 "2025-02-23T21:57:56Z")

</div>

I did as suggested, but the error unfortunately persists:

```plaintext
./launcher rebuild app
x86_64 arch detected.

WARNING: We are about to start downloading the Discourse base image
This process may take anywhere between a few minutes to an hour, depending on your network speed

Please be patient

2.0.20250129-0720: Pulling from discourse/base
af302e5c37e9: Pull complete 
ed49ab5c933d: Pull complete 
7cb9e730d898: Pull complete 
7c28a6b187b2: Pull complete 
23222af7238f: Pull complete 
59b87d9ed5c1: Pull complete 
90d60b432298: Pull complete 
d3b3135aa82b: Pull complete 
94e7b594395d: Pull complete 
cf15e2c89d00: Pull complete 
2c0cccf9ec27: Pull complete 
5d8ea2a8d564: Pull complete 
020f04b42275: Pull complete 
06e22604f387: Pull complete 
8b0ecc579aad: Pull complete 
4d577f7424c0: Pull complete 
37ef4781925f: Pull complete 
30d67d1af761: Pull complete 
43eaf8c26af4: Pull complete 
02f4cc50eabd: Pull complete 
93896ee36e56: Pull complete 
fadd5d615e0e: Pull complete 
85f9459cb30e: Pull complete 
eaddca2afacb: Pull complete 
f54443d29a2d: Pull complete 
ed6f0f133683: Pull complete 
3d1894dc563f: Pull complete 
51ca3f63c909: Pull complete 
b87374db2274: Pull complete 
Digest: sha256:01b8516e5504c0e9bc3707773015ff4407be03a89154194ff3b5b8699291bc26
Status: Downloaded newer image for discourse/base:2.0.20250129-0720
docker.io/discourse/base:2.0.20250129-0720
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.20250129-0720: Pulling from discourse/base
Digest: sha256:01b8516e5504c0e9bc3707773015ff4407be03a89154194ff3b5b8699291bc26
Status: Image is up to date for discourse/base:2.0.20250129-0720
docker.io/discourse/base:2.0.20250129-0720
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2025-02-23T21:28:35.906550 #1] INFO -- : Reading from stdin
I, [2025-02-23T21:28:35.919756 #1] INFO -- : File > /etc/service/postgres/run chmod: +x chown: 
I, [2025-02-23T21:28:35.923116 #1] INFO -- : File > /etc/service/postgres/log/run chmod: +x chown: 
I, [2025-02-23T21:28:35.926554 #1] INFO -- : File > /etc/runit/3.d/99-postgres chmod: +x chown: 
I, [2025-02-23T21:28:35.929994 #1] INFO -- : File > /root/install_postgres chmod: +x chown: 
I, [2025-02-23T21:28:35.933196 #1] INFO -- : File > /root/upgrade_postgres chmod: +x chown: 
I, [2025-02-23T21:28:35.933633 #1] INFO -- : Replacing data_directory = '/var/lib/postgresql/15/main' with data_directory = '/shared/postgres_data' in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T21:28:36.302682 #1] INFO -- : Replacing (?-mix:#?listen_addresses *=.*) with listen_addresses = '*' in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T21:28:36.303026 #1] INFO -- : Replacing (?-mix:#?synchronous_commit *=.*) with synchronous_commit = $db_synchronous_commit in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T21:28:36.303406 #1] INFO -- : Replacing (?-mix:#?shared_buffers *=.*) with shared_buffers = $db_shared_buffers in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T21:28:36.303714 #1] INFO -- : Replacing (?-mix:#?work_mem *=.*) with work_mem = $db_work_mem in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T21:28:36.304021 #1] INFO -- : Replacing (?-mix:#?default_text_search_config *=.*) with default_text_search_config = '$db_default_text_search_config' in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T21:28:36.304333 #1] INFO -- : Replacing (?-mix:#?checkpoint_segments *=.*) with checkpoint_segments = $db_checkpoint_segments in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T21:28:36.307838 #1] INFO -- : Replacing (?-mix:#?logging_collector *=.*) with logging_collector = $db_logging_collector in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T21:28:36.308366 #1] INFO -- : Replacing (?-mix:#?log_min_duration_statement *=.*) with log_min_duration_statement = $db_log_min_duration_statement in /etc/postgresql/15/main/postgresql.conf
I, [2025-02-23T21:28:36.308727 #1] INFO -- : Replacing (?-mix:^#local +replication +postgres +peer$) with local replication postgres peer in /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-23T21:28:36.496135 #1] INFO -- : Replacing (?-mix:^host.*all.*all.*127.*$) with host all all 0.0.0.0/0 md5 in /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-23T21:28:36.496438 #1] INFO -- : Replacing (?-mix:^host.*all.*all.*::1\/128.*$) with host all all ::/0 md5 in /etc/postgresql/15/main/pg_hba.conf
I, [2025-02-23T21:28:36.496691 #1] INFO -- : > if [-f /root/install_postgres]; then
  /root/install_postgres && rm -f /root/install_postgres
elif [-e /shared/postgres_run/.s.PGSQL.5432]; then
  socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
fi

I, [2025-02-23T21:31:39.513487 #1] INFO -- : Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.

I, [2025-02-23T21:31:39.513737 #1] INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main
I, [2025-02-23T21:31:39.518560 #1] INFO -- : File > /usr/local/bin/create_db chmod: +x chown: 
I, [2025-02-23T21:31:39.523443 #1] INFO -- : File > /var/lib/postgresql/take-database-backup chmod: +x chown: postgres:postgres
I, [2025-02-23T21:31:39.525967 #1] INFO -- : File > /var/spool/cron/crontabs/postgres chmod: chown: 
I, [2025-02-23T21:31:39.526157 #1] INFO -- : > sleep 5
2025-02-23 21:31:39.614 UTC [42] LOG: starting PostgreSQL 15.10 (Debian 15.10-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
2025-02-23 21:31:39.615 UTC [42] LOG: listening on IPv4 address "0.0.0.0", port 5432
2025-02-23 21:31:39.615 UTC [42] LOG: listening on IPv6 address "::", port 5432
2025-02-23 21:31:39.627 UTC [42] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2025-02-23 21:31:39.645 UTC [53] LOG: database system was shut down at 2025-02-23 14:01:10 UTC
2025-02-23 21:31:39.657 UTC [42] LOG: database system is ready to accept connections
I, [2025-02-23T21:31:44.528149 #1] INFO -- : 
I, [2025-02-23T21:31:44.528302 #1] INFO -- : > /usr/local/bin/create_db
2025-02-23 21:31:44.600 UTC [60] postgres@postgres ERROR: database "discourse" already exists
2025-02-23 21:31:44.600 UTC [60] postgres@postgres STATEMENT: CREATE DATABASE discourse;
createdb: error: database creation failed: ERROR: database "discourse" already exists
2025-02-23 21:31:44.662 UTC [63] postgres@discourse ERROR: role "discourse" already exists
2025-02-23 21:31:44.662 UTC [63] postgres@discourse STATEMENT: create user discourse;
ERROR: role "discourse" already exists
NOTICE: extension "hstore" already exists, skipping
NOTICE: extension "pg_trgm" already exists, skipping
NOTICE: extension "vector" already exists, skipping
NOTICE: version "0.8.0" of extension "vector" is already installed
NOTICE: extension "hstore" already exists, skipping
NOTICE: extension "pg_trgm" already exists, skipping
NOTICE: extension "vector" already exists, skipping
NOTICE: version "0.8.0" of extension "vector" is already installed
I, [2025-02-23T21:31:45.278006 #1] INFO -- : GRANT
ALTER SCHEMA
CREATE EXTENSION
CREATE EXTENSION
CREATE EXTENSION
ALTER EXTENSION
CREATE EXTENSION
CREATE EXTENSION
CREATE EXTENSION
ALTER EXTENSION
UPDATE 0

I, [2025-02-23T21:31:45.278115 #1] INFO -- : > echo postgres installed!
I, [2025-02-23T21:31:45.279850 #1] INFO -- : postgres installed!

I, [2025-02-23T21:31:45.283348 #1] INFO -- : File > /etc/service/redis/run chmod: +x chown: 
I, [2025-02-23T21:31:45.286683 #1] INFO -- : File > /etc/service/redis/log/run chmod: +x chown: 
I, [2025-02-23T21:31:45.289832 #1] INFO -- : File > /etc/runit/3.d/10-redis chmod: +x chown: 
I, [2025-02-23T21:31:45.290389 #1] INFO -- : Replacing daemonize yes with in /etc/redis/redis.conf
I, [2025-02-23T21:31:45.482750 #1] INFO -- : Replacing (?-mix:^pidfile.*$) with in /etc/redis/redis.conf
I, [2025-02-23T21:31:45.483098 #1] INFO -- : > install -d -m 0755 -o redis -g redis /shared/redis_data
I, [2025-02-23T21:31:45.486197 #1] INFO -- : 
I, [2025-02-23T21:31:45.486579 #1] INFO -- : Replacing (?-mix:^logfile.*$) with logfile "" in /etc/redis/redis.conf
I, [2025-02-23T21:31:45.487000 #1] INFO -- : Replacing (?-mix:^bind .*$) with in /etc/redis/redis.conf
I, [2025-02-23T21:31:45.487412 #1] INFO -- : Replacing (?-mix:^dir .*$) with dir /shared/redis_data in /etc/redis/redis.conf
I, [2025-02-23T21:31:45.487861 #1] INFO -- : Replacing (?-mix:^protected-mode yes) with protected-mode no in /etc/redis/redis.conf
I, [2025-02-23T21:31:45.488227 #1] INFO -- : Replacing # io-threads 4 with io-threads $redis_io_threads in /etc/redis/redis.conf
I, [2025-02-23T21:31:45.488550 #1] INFO -- : > echo redis installed
I, [2025-02-23T21:31:45.489940 #1] INFO -- : redis installed

I, [2025-02-23T21:31:45.490078 #1] INFO -- : > cat /etc/redis/redis.conf | grep logfile
I, [2025-02-23T21:31:45.493628 #1] INFO -- : logfile ""

I, [2025-02-23T21:31:45.493826 #1] INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf
I, [2025-02-23T21:31:45.495065 #1] INFO -- : > sleep 10
109:C 23 Feb 2025 21:31:45.507 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
109:C 23 Feb 2025 21:31:45.507 # Redis version=7.0.15, bits=64, commit=00000000, modified=0, pid=109, just started
109:C 23 Feb 2025 21:31:45.507 # Configuration loaded
109:M 23 Feb 2025 21:31:45.507 * monotonic clock: POSIX clock_gettime
109:M 23 Feb 2025 21:31:45.508 * Running mode=standalone, port=6379.
109:M 23 Feb 2025 21:31:45.508 # Server initialized
109:M 23 Feb 2025 21:31:45.508 # 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.
109:M 23 Feb 2025 21:31:45.509 * Loading RDB produced by version 7.0.7
109:M 23 Feb 2025 21:31:45.509 * RDB age 254 seconds
109:M 23 Feb 2025 21:31:45.509 * RDB memory usage when created 2.00 Mb
109:M 23 Feb 2025 21:31:45.513 * Done loading RDB, keys loaded: 1587, keys expired: 0.
109:M 23 Feb 2025 21:31:45.513 * DB loaded from disk: 0.004 seconds
109:M 23 Feb 2025 21:31:45.513 * Ready to accept connections
I, [2025-02-23T21:31:55.496692 #1] INFO -- : 
I, [2025-02-23T21:31:55.496981 #1] INFO -- : > thpoff echo "thpoff is installed!"
I, [2025-02-23T21:31:55.499725 #1] INFO -- : thpoff is installed!

I, [2025-02-23T21:31:55.499945 #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-02-23T21:31:55.611191 #1] INFO -- : 
I, [2025-02-23T21:31:55.611342 #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-02-23T21:31:55.701051 #1] INFO -- : 
I, [2025-02-23T21:31:55.701184 #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-02-23T21:31:55.792799 #1] INFO -- : 
I, [2025-02-23T21:31:55.792976 #1] INFO -- : > rm -f /etc/cron.d/anacron
I, [2025-02-23T21:31:55.795285 #1] INFO -- : 
I, [2025-02-23T21:31:55.797250 #1] INFO -- : File > /etc/cron.d/anacron chmod: chown: 
I, [2025-02-23T21:31:55.801027 #1] INFO -- : File > /etc/runit/1.d/copy-env chmod: +x chown: 
I, [2025-02-23T21:31:55.804619 #1] INFO -- : File > /etc/service/unicorn/run chmod: +x chown: 
I, [2025-02-23T21:31:55.807956 #1] INFO -- : File > /etc/service/nginx/run chmod: +x chown: 
I, [2025-02-23T21:31:55.811451 #1] INFO -- : File > /etc/runit/3.d/01-nginx chmod: +x chown: 
I, [2025-02-23T21:31:55.814769 #1] INFO -- : File > /etc/runit/3.d/02-unicorn chmod: +x chown: 
I, [2025-02-23T21:31:55.814902 #1] INFO -- : Replacing # postgres with if [-f /root/install_postgres]; then
  /root/install_postgres
  rm /root/install_postgres
fi
sv start postgres || exit 1
 in /etc/service/unicorn/run
I, [2025-02-23T21:31:55.816135 #1] INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse git clean -f
I, [2025-02-23T21:31:56.068849 #1] INFO -- : 
I, [2025-02-23T21:31:56.068969 #1] INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse bash -c '
  set -o errexit
  if [$(git rev-parse --is-shallow-repository) == "true"]; then
      git remote set-branches --add origin main
      git remote set-branches origin tests-passed
      git fetch --depth 1 origin tests-passed
  else
      git fetch --tags --prune-tags --prune --force origin
  fi
'
From https://github.com/discourse/discourse
 - [deleted] (none) -> origin/0-app-events-revolution
 - [deleted] (none) -> origin/0-ember-bump-fix-modal
 - [deleted] (none) -> origin/0-polls-still
 - [deleted] (none) -> origin/0-rename-details
 - [deleted] (none) -> origin/0-simpler-placeholder
 - [deleted] (none) -> origin/0-store-bump
 - [deleted] (none) -> origin/0-tooltip
 - [deleted] (none) -> origin/0-user-status
 - [deleted] (none) -> origin/add-formkit-instruction-text
 - [deleted] (none) -> origin/add-live-reload-disable-option
 - [deleted] (none) -> origin/add-message-builder-modifier-3
 - [deleted] (none) -> origin/add-shift-detect
 - [deleted] (none) -> origin/add-shortcuts
 - [deleted] (none) -> origin/add-signal-to-notifications-template
 - [deleted] (none) -> origin/after-post-outlet
 - [deleted] (none) -> origin/again-support-load-more-btn
 - [deleted] (none) -> origin/allow-overriding-sidebar-my-posts-icon
 - [deleted] (none) -> origin/array-custom-field-order
 - [deleted] (none) -> origin/async-category-link
 - [deleted] (none) -> origin/bump-eslint-config
 - [deleted] (none) -> origin/carsick-patch-1
 - [deleted] (none) -> origin/cat-mod-groups
 - [deleted] (none) -> origin/category-experts-approved-webhook-event-wip
 - [deleted] (none) -> origin/chat-github-onebox
 - [deleted] (none) -> origin/chat-uppy-upload
 - [deleted] (none) -> origin/composer-disable-submit
 - [deleted] (none) -> origin/conditional-summary-box
 - [deleted] (none) -> origin/custom-field-store-cleanup
 - [deleted] (none) -> origin/d-object
 - [deleted] (none) -> origin/defer-button-action
 - [deleted] (none) -> origin/demote-summarize-ai-button
 - [deleted] (none) -> origin/dependabot/npm_and_yarn/uppy-b578ad6dea
 - [deleted] (none) -> origin/dev-better-active-selection-detection
 - [deleted] (none) -> origin/dev-fail-tests-on-fa6-deprecated-icons-from-svg-sprite-rb
 - [deleted] (none) -> origin/dev-faster-tests
 - [deleted] (none) -> origin/dev-migrate-user-passwords
 - [deleted] (none) -> origin/dev-refactor-username-validation-mixin
 - [deleted] (none) -> origin/dev/add-a-reference-column-to-notifications
 - [deleted] (none) -> origin/dev/advanced-search-custom-in-special
 - [deleted] (none) -> origin/dev/automation-scriptable-add-with-class
 - [deleted] (none) -> origin/dev/default-plugin-config-pages
 - [deleted] (none) -> origin/dev/drop-ignore-chat_channels_last_message_sent_at
 - [deleted] (none) -> origin/dev/port-outlet-wrapper-to-stable
 - [deleted] (none) -> origin/dev/refactor-uploads-importer
 - [deleted] (none) -> origin/dev/remove-deprecated-respect-plugin-positional-argument
 - [deleted] (none) -> origin/dev/sidebar-sections-collapse-expand-transformer-events
 - [deleted] (none) -> origin/dev/sidebar-subsections
 - [deleted] (none) -> origin/dev/third-party-breadcrumbs
 - [deleted] (none) -> origin/dev_add_query_param
 - [deleted] (none) -> origin/dev_lazy_load_categories_tests
 - [deleted] (none) -> origin/dev_update_category_position
 - [deleted] (none) -> origin/docs-publishing-mvp
 - [deleted] (none) -> origin/drawer-composer-positioning
 - [deleted] (none) -> origin/ember-4
 - [deleted] (none) -> origin/expand-allowed-custom-emoji-images-types
 - [deleted] (none) -> origin/extra-js-revert
 - [deleted] (none) -> origin/feature/add-user-to-topic_tags_changed-event
 - [deleted] (none) -> origin/feature/custom-fields-for-existing-users
 - [deleted] (none) -> origin/feature/enable-chat-with-dms-only
 - [deleted] (none) -> origin/feature/light-dark-mode-switcher
 - [deleted] (none) -> origin/feature/paste-upload-on-first-upload-input-templates
 - [deleted] (none) -> origin/feature/show-note-bookmark-notif
 - [deleted] (none) -> origin/feature/show-status-on-mentions-when-user-havent-used-autocomplete
 - [deleted] (none) -> origin/feature_pm_editor
 - [deleted] (none) -> origin/feature_track_mentions
 - [deleted] (none) -> origin/fix-directory-search-limit
 - [deleted] (none) -> origin/fix-display-errors-for-history-modal-when-fetching-revisions
 - [deleted] (none) -> origin/fix-firefox-android-followup
 - [deleted] (none) -> origin/fix-password-reset-security-key
 - [deleted] (none) -> origin/fix-redirect-login
 - [deleted] (none) -> origin/fix-safari-below-18-detection
 - [deleted] (none) -> origin/fix-search-context-delete-key
 - [deleted] (none) -> origin/fix-unread-notifications-take-2
 - [deleted] (none) -> origin/fix/migrated-reactions-count-calculation
 - [deleted] (none) -> origin/fix/tag-rename-404
 - [deleted] (none) -> origin/full-page
 - [deleted] (none) -> origin/glimmer-header-dnd-live
 - [deleted] (none) -> origin/group_and_tag_group_permission_change_notification
 - [deleted] (none) -> origin/handle-non-ascii-charc
 - [deleted] (none) -> origin/hijacks
 - [deleted] (none) -> origin/history-store-methods
 - [deleted] (none) -> origin/i18n-helper-import
 - [deleted] (none) -> origin/image-assets
 - [deleted] (none) -> origin/implicit-injections-deprecations
 - [deleted] (none) -> origin/improve-claimed-reviewables-transactions
 - [deleted] (none) -> origin/improve-tablet-detection
 - [deleted] (none) -> origin/issue/do-not-enforce-2fa-on-social-logins
 - [deleted] (none) -> origin/issue/fix-user-field-enum-migrate
 - [deleted] (none) -> origin/issue/fixup-upload-ref-backfill-migration-dates
 - [deleted] (none) -> origin/jjaffeux-otp-validation
 - [deleted] (none) -> origin/list-wrapper
 - [deleted] (none) -> origin/live-cache
 - [deleted] (none) -> origin/lock-step
 - [deleted] (none) -> origin/loic-enable-rspec-rule
 - [deleted] (none) -> origin/loic-upgrade-miniracer
 - [deleted] (none) -> origin/more-topics-active
 - [deleted] (none) -> origin/nginx-conf
 - [deleted] (none) -> origin/oklab
 - [deleted] (none) -> origin/omniauth-2
 - [deleted] (none) -> origin/pento/feature-allow-admins-to-export-users
 - [deleted] (none) -> origin/plugin-outlet-no-subdir
 - [deleted] (none) -> origin/post-widget-outlet
 - [deleted] (none) -> origin/powered-by-reactivity
 - [deleted] (none) -> origin/promote-migration-tweak
 - [deleted] (none) -> origin/prune-old-transpilers
 - [deleted] (none) -> origin/refactor-mobile-coposer-position-replace-actions
 - [deleted] (none) -> origin/remap-assume-yes-option
 - [deleted] (none) -> origin/remove-bootbox
 - [deleted] (none) -> origin/remove-muted-from-hot-and-top-topic-lists
 - [deleted] (none) -> origin/remove-x-count
 - [deleted] (none) -> origin/render-glimmer-granular
 - [deleted] (none) -> origin/revert-28587-revert-28321-dev/remove-create_post_for_category_and_tag_changes-setting
 - [deleted] (none) -> origin/revert-location-change
 - [deleted] (none) -> origin/revert-thread-title-experiment
 - [deleted] (none) -> origin/safari-hacks-sayonara
 - [deleted] (none) -> origin/see_if_yarn_cache_is_working
 - [deleted] (none) -> origin/shared-draft-category
 - [deleted] (none) -> origin/skip-back-button-animation
 - [deleted] (none) -> origin/tag-span
 - [deleted] (none) -> origin/temp-pr-28024
 - [deleted] (none) -> origin/testing_debian_12
 - [deleted] (none) -> origin/tobiaseigen-patch-4
 - [deleted] (none) -> origin/topic-count-fix
 - [deleted] (none) -> origin/topic-list-item-style
 - [deleted] (none) -> origin/translations-from-crowdin-main
 - [deleted] (none) -> origin/translations-from-crowdin-stable
 - [deleted] (none) -> origin/update-gems-stable
 - [deleted] (none) -> origin/ux/admin-site-setting-inner-sidebar-experiment
 - [deleted] (none) -> origin/whats-new-notify-plugins
   c64b5d6d7..c592edbe3 main -> origin/main
 * [new branch] add-header-search-experience -> origin/add-header-search-experience
 + 3c0b2f75f...0d2238318 allow-posts-link-in-sidebar -> origin/allow-posts-link-in-sidebar (forced update)
 * [new branch] async-data -> origin/async-data
 * [new branch] automation-autoload -> origin/automation-autoload
 * [new branch] br/multiple_likes -> origin/br/multiple_likes
 * [new branch] branding-logo -> origin/branding-logo
 * [new branch] chat-summary-email-thread-reply-fix -> origin/chat-summary-email-thread-reply-fix
 * [new branch] d-menu-composer-flag -> origin/d-menu-composer-flag
 * [new branch] dark-light-class -> origin/dark-light-class
 * [new branch] dark-light-mode-helpers -> origin/dark-light-mode-helpers
 * [new branch] dependabot/bundler/selenium-webdriver-4.29.1 -> origin/dependabot/bundler/selenium-webdriver-4.29.1
 * [new branch] dependabot/bundler/version_gem-1.1.5 -> origin/dependabot/bundler/version_gem-1.1.5
 * [new branch] dependabot/npm_and_yarn/ace-builds-1.39.0 -> origin/dependabot/npm_and_yarn/ace-builds-1.39.0
 * [new branch] dependabot/npm_and_yarn/discourse/lint-configs-2.7.0 -> origin/dependabot/npm_and_yarn/discourse/lint-configs-2.7.0
 * [new branch] dependabot/npm_and_yarn/embroider-313a86a52a -> origin/dependabot/npm_and_yarn/embroider-313a86a52a
 * [new branch] dependabot/npm_and_yarn/glimmer/syntax-0.94.7 -> origin/dependabot/npm_and_yarn/glimmer/syntax-0.94.7
 * [new branch] dependabot/npm_and_yarn/jspreadsheet-ce-5.0.0 -> origin/dependabot/npm_and_yarn/jspreadsheet-ce-5.0.0
 * [new branch] dependabot/npm_and_yarn/jsuites-5.9.1 -> origin/dependabot/npm_and_yarn/jsuites-5.9.1
 * [new branch] dependabot/npm_and_yarn/lefthook-1.11.0 -> origin/dependabot/npm_and_yarn/lefthook-1.11.0
 * [new branch] dependabot/npm_and_yarn/prosemirror-commands-1.7.0 -> origin/dependabot/npm_and_yarn/prosemirror-commands-1.7.0
 * [new branch] dependabot/npm_and_yarn/uppy-b82cdcd59c -> origin/dependabot/npm_and_yarn/uppy-b82cdcd59c
 * [new branch] dev-refactor-password-validation-for-create-account -> origin/dev-refactor-password-validation-for-create-account
 + 72ff8f1eb...699aa3755 dev-refactor-username-validation-mixin-to-helper -> origin/dev-refactor-username-validation-mixin-to-helper (forced update)
 * [new branch] dev/auto-screen-size-screenshots -> origin/dev/auto-screen-size-screenshots
 + ec68ffb95...a1849cd39 dev/color-palette-editor -> origin/dev/color-palette-editor (forced update)
 * [new branch] dev/ember-async-data-demo -> origin/dev/ember-async-data-demo
 * [new branch] dev/glimmer-post-stream -> origin/dev/glimmer-post-stream
 * [new branch] dev/purge-widget-post-menu -> origin/dev/purge-widget-post-menu
 * [new branch] dev/remove-deprecated-auth-provider-options -> origin/dev/remove-deprecated-auth-provider-options
 * [new branch] dev/user-field-components-transformer -> origin/dev/user-field-components-transformer
 * [new branch] discourse-emojis-gem -> origin/discourse-emojis-gem
 * [new branch] feature-markdown-hex-color -> origin/feature-markdown-hex-color
 * [new branch] feature/admin-search-improvements-2 -> origin/feature/admin-search-improvements-2
 * [new branch] feature/admins-access-group-chats -> origin/feature/admins-access-group-chats
 * [new branch] feature_pm_codeblock -> origin/feature_pm_codeblock
 * [new branch] feature_pm_emoji -> origin/feature_pm_emoji
 * [new branch] feature_pm_hashtag -> origin/feature_pm_hashtag
 * [new branch] feature_pm_html_block -> origin/feature_pm_html_block
 * [new branch] feature_pm_html_inline -> origin/feature_pm_html_inline
 * [new branch] feature_pm_image -> origin/feature_pm_image
 * [new branch] feature_pm_link -> origin/feature_pm_link
 * [new branch] feature_pm_mention -> origin/feature_pm_mention
 * [new branch] feature_pm_quote -> origin/feature_pm_quote
 * [new branch] feature_pm_strikethrough -> origin/feature_pm_strikethrough
 * [new branch] feature_pm_table -> origin/feature_pm_table
 * [new branch] feature_pm_typographer -> origin/feature_pm_typographer
 * [new branch] feature_pm_underline -> origin/feature_pm_underline
 * [new branch] filter-navigation-ui -> origin/filter-navigation-ui
 * [new branch] fix-zlib -> origin/fix-zlib
 * [new branch] fps-errors -> origin/fps-errors
 * [new branch] google-topic-count -> origin/google-topic-count
 * [new branch] google-translate-defender -> origin/google-translate-defender
 * [new branch] loic-rspec-instance-var-globally -> origin/loic-rspec-instance-var-globally
 * [new branch] loic-upgrade-sidekiq -> origin/loic-upgrade-sidekiq
 * [new branch] loic-use-bundler-checksums -> origin/loic-use-bundler-checksums
 + 0f2f74d08...06c4fcf62 mt/idb -> origin/mt/idb (forced update)
 * [new branch] pento/dev-upgrade-pnpm-10 -> origin/pento/dev-upgrade-pnpm-10
 * [new branch] pento/feature-which-watched-words-were-written -> origin/pento/feature-which-watched-words-were-written
 * [new branch] quick-smoke-test -> origin/quick-smoke-test
 + de3691471...e5890e554 renato/pm -> origin/renato/pm (forced update)
 * [new branch] service-to-update-site-settings -> origin/service-to-update-site-settings
 * [new branch] settings-console-log -> origin/settings-console-log
 * [new branch] split-common-css -> origin/split-common-css
 * [new branch] split-cook-sanitise -> origin/split-cook-sanitise
   5d4c2a89e..3bbf96fa2 stable -> origin/stable
   c64b5d6d7..c592edbe3 tests-passed -> origin/tests-passed
 * [new branch] tobiaseigen-patch-3 -> origin/tobiaseigen-patch-3
 * [new branch] tobiaseigen-patch-3-1 -> origin/tobiaseigen-patch-3-1
 * [new branch] topic-list-outlet-add-columns -> origin/topic-list-outlet-add-columns
 * [new branch] topic-list-outlet-add-columns-stable -> origin/topic-list-outlet-add-columns-stable
   415cccafb..c43caf483 user-fields-plugin-outlets-update -> origin/user-fields-plugin-outlets-update
 * [new branch] user-menu-full-name-rebased -> origin/user-menu-full-name-rebased
 * [new branch] user-summary-topic-add-plugin-wrappers -> origin/user-summary-topic-add-plugin-wrappers
   10566d84b..c540132fe ux/combined-themes-components-sidebar-links -> origin/ux/combined-themes-components-sidebar-links
 * [new branch] visual-experiment -> origin/visual-experiment
 t [tag update] beta -> beta
 t [tag update] latest-release -> latest-release
 * [new tag] v3.3.4 -> v3.3.4
 * [new tag] v3.4.0 -> v3.4.0
 * [new tag] v3.4.0.beta4 -> v3.4.0.beta4
I, [2025-02-23T21:31:57.296600 #1] INFO -- : 
I, [2025-02-23T21:31:57.296733 #1] INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse bash -c '
  set -o errexit
  if [[$(git symbolic-ref --short HEAD) == tests-passed]] ; then
      git pull
  else
      git -c advice.detachedHead=false checkout tests-passed
  fi
'
Switched to a new branch 'tests-passed'
I, [2025-02-23T21:32:04.677353 #1] INFO -- : branch 'tests-passed' set up to track 'origin/tests-passed'.

I, [2025-02-23T21:32:04.677495 #1] INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse git config user.discourse-version tests-passed
I, [2025-02-23T21:32:04.687215 #1] INFO -- : 
I, [2025-02-23T21:32:04.687345 #1] INFO -- : > cd /var/www/discourse && mkdir -p tmp
I, [2025-02-23T21:32:04.689947 #1] INFO -- : 
I, [2025-02-23T21:32:04.690059 #1] INFO -- : > cd /var/www/discourse && chown discourse:www-data tmp
I, [2025-02-23T21:32:04.692174 #1] INFO -- : 
I, [2025-02-23T21:32:04.692262 #1] INFO -- : > cd /var/www/discourse && mkdir -p tmp/pids
I, [2025-02-23T21:32:04.694723 #1] INFO -- : 
I, [2025-02-23T21:32:04.694831 #1] INFO -- : > cd /var/www/discourse && mkdir -p tmp/sockets
I, [2025-02-23T21:32:04.697364 #1] INFO -- : 
I, [2025-02-23T21:32:04.697473 #1] INFO -- : > cd /var/www/discourse && touch tmp/.gitkeep
I, [2025-02-23T21:32:04.700136 #1] INFO -- : 
I, [2025-02-23T21:32:04.700225 #1] INFO -- : > cd /var/www/discourse && mkdir -p /shared/log/rails
I, [2025-02-23T21:32:04.702909 #1] INFO -- : 
I, [2025-02-23T21:32:04.703024 #1] INFO -- : > cd /var/www/discourse && bash -c "touch -a /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log"
I, [2025-02-23T21:32:04.706561 #1] INFO -- : 
I, [2025-02-23T21:32:04.706677 #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-02-23T21:32:04.710695 #1] INFO -- : 
I, [2025-02-23T21:32:04.710815 #1] INFO -- : > cd /var/www/discourse && bash -c "mkdir -p /shared/{uploads,backups}"
I, [2025-02-23T21:32:04.714221 #1] INFO -- : 
I, [2025-02-23T21:32:04.714336 #1] INFO -- : > cd /var/www/discourse && bash -c "ln -s /shared/{uploads,backups} /var/www/discourse/public"
I, [2025-02-23T21:32:04.717925 #1] INFO -- : 
I, [2025-02-23T21:32:04.718041 #1] INFO -- : > cd /var/www/discourse && bash -c "mkdir -p /shared/tmp/{backups,restores}"
I, [2025-02-23T21:32:04.721614 #1] INFO -- : 
I, [2025-02-23T21:32:04.721733 #1] INFO -- : > cd /var/www/discourse && bash -c "ln -s /shared/tmp/{backups,restores} /var/www/discourse/tmp"
I, [2025-02-23T21:32:04.725034 #1] INFO -- : 
I, [2025-02-23T21:32:04.725125 #1] INFO -- : > cd /var/www/discourse && chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp
I, [2025-02-23T21:32:04.730671 #1] INFO -- : 
I, [2025-02-23T21:32:04.730760 #1] INFO -- : > cd /var/www/discourse && [! -d public/plugins] || find public/plugins/ -maxdepth 1 -xtype l -delete
I, [2025-02-23T21:32:04.732141 #1] INFO -- : 
I, [2025-02-23T21:32:04.732314 #1] INFO -- : Replacing # redis with if [! -d /shared/redis_data]; then
  install -d -m 0755 -o redis -g redis /shared/redis_data
fi
sv start redis || exit 1 in /etc/service/unicorn/run
I, [2025-02-23T21:32:04.732683 #1] INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/docker_manager.git
Cloning into 'docker_manager'...
I, [2025-02-23T21:32:06.364218 #1] INFO -- : 
I, [2025-02-23T21:32:06.364365 #1] INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/communiteq/discourse-private-topics.git
Cloning into 'discourse-private-topics'...
I, [2025-02-23T21:32:06.892558 #1] INFO -- : 
I, [2025-02-23T21:32:06.892899 #1] INFO -- : > cp /var/www/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf
I, [2025-02-23T21:32:06.896196 #1] INFO -- : 
I, [2025-02-23T21:32:06.896282 #1] INFO -- : > rm /etc/nginx/sites-enabled/default
I, [2025-02-23T21:32:06.897841 #1] INFO -- : 
I, [2025-02-23T21:32:06.897944 #1] INFO -- : > mkdir -p /var/nginx/cache
I, [2025-02-23T21:32:06.899818 #1] INFO -- : 
I, [2025-02-23T21:32:06.900052 #1] INFO -- : Replacing pid /run/nginx.pid; with daemon off; in /etc/nginx/nginx.conf
I, [2025-02-23T21:32:07.254223 #1] INFO -- : Replacing (?m-ix:upstream[^\}]+\}) with upstream discourse { server 127.0.0.1:3000; } in /etc/nginx/conf.d/discourse.conf
I, [2025-02-23T21:32:07.254567 #1] INFO -- : Replacing (?-mix:server_name.+$) with server_name _ ; in /etc/nginx/conf.d/discourse.conf
I, [2025-02-23T21:32:07.254851 #1] INFO -- : Replacing (?-mix:client_max_body_size.+$) with client_max_body_size $upload_size ; in /etc/nginx/conf.d/discourse.conf
I, [2025-02-23T21:32:07.255150 #1] INFO -- : Replacing (?-mix:worker_connections.+$) with worker_connections $nginx_worker_connections ; in /etc/nginx/nginx.conf
I, [2025-02-23T21:32:07.255395 #1] INFO -- : > echo "done configuring web"
I, [2025-02-23T21:32:07.257025 #1] INFO -- : done configuring web

I, [2025-02-23T21:32:07.257257 #1] INFO -- : > cd /var/www/discourse && gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock)
I, [2025-02-23T21:32:07.571956 #1] INFO -- : 
I, [2025-02-23T21:32:07.572060 #1] INFO -- : > cd /var/www/discourse && find /var/www/discourse ! -user discourse -exec chown discourse {} \+
I, [2025-02-23T21:32:10.071774 #1] INFO -- : 
I, [2025-02-23T21:32:10.072044 #1] INFO -- : > cd /var/www/discourse && if [-f yarn.lock]; then
  if [-d node_modules/.pnpm]; then
    echo "This version of Discourse uses yarn, but pnpm node_modules are preset. Cleaning up..."
    find ./node_modules ./app/assets/javascripts/*/node_modules -mindepth 1 -maxdepth 1 -exec rm -rf {} +
  fi
  su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
else
  su discourse -c 'CI=1 pnpm install --frozen-lockfile && pnpm prune'
fi
I, [2025-02-23T21:32:11.693445 #1] INFO -- : Scope: all 17 workspace projects
Lockfile is up to date, resolution step is skipped
 EINVAL EINVAL: invalid argument, rmdir '/var/www/discourse/app/assets/javascripts/dialog-holder/node_modules/.bin'

109:signal-handler (1740346331) Received SIGTERM scheduling shutdown...
I, [2025-02-23T21:32:11.694179 #1] INFO -- : Terminating async processes
I, [2025-02-23T21:32:11.694216 #1] INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main pid: 42
I, [2025-02-23T21:32:11.694264 #1] INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 109
2025-02-23 21:32:11.694 UTC [42] LOG: received fast shutdown request
109:M 23 Feb 2025 21:32:11.696 # User requested shutdown...
109:M 23 Feb 2025 21:32:11.697 * Saving the final RDB snapshot before exiting.
2025-02-23 21:32:11.721 UTC [42] LOG: aborting any active transactions
2025-02-23 21:32:11.723 UTC [42] LOG: background worker "logical replication launcher" (PID 56) exited with exit code 1
2025-02-23 21:32:11.724 UTC [51] LOG: shutting down
2025-02-23 21:32:11.741 UTC [51] LOG: checkpoint starting: shutdown immediate
109:M 23 Feb 2025 21:32:11.743 * DB saved on disk
109:M 23 Feb 2025 21:32:11.744 # Redis is now ready to exit, bye bye...
2025-02-23 21:32:11.808 UTC [51] LOG: checkpoint complete: wrote 4 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.002 s, sync=0.027 s, total=0.084 s; sync files=3, longest=0.010 s, average=0.009 s; distance=5 kB, estimate=5 kB
2025-02-23 21:32:11.814 UTC [42] LOG: database system is shut down

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && if [-f yarn.lock]; then
  if [-d node_modules/.pnpm]; then
    echo "This version of Discourse uses yarn, but pnpm node_modules are preset. Cleaning up..."
    find ./node_modules ./app/assets/javascripts/*/node_modules -mindepth 1 -maxdepth 1 -exec rm -rf {} +
  fi
  su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
else
  su discourse -c 'CI=1 pnpm install --frozen-lockfile && pnpm prune'
fi failed with return #<Process::Status: pid 291 exit 234>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"yarn", "cmd"=>["if [-f yarn.lock]; then\n if [-d node_modules/.pnpm]; then\n echo \"This version of Discourse uses yarn, but pnpm node_modules are preset. Cleaning up...\"\n find ./node_modules ./app/assets/javascripts/*/node_modules -mindepth 1 -maxdepth 1 -exec rm -rf {} +\n fi\n su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'\nelse\n su discourse -c 'CI=1 pnpm install --frozen-lockfile && pnpm prune'\nfi"]}
bootstrap failed with exit code 234
**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.
68eb690ebbefa36c472b2628bca09d4d06458c7deb1eafab921cfefc2a7120af

```

The LXC container is using Debian bullseye with latest updates installed.

---

<div class="post-metadata">

### Author: ![jahan\_gagan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jahan_gagan/32/501948_2.png) [@jahan\_gagan](https://meta.discourse.org/u/jahan_gagan)
#### Post date: [February 24, 2025, 8:16am UTC](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999/5 "2025-02-24T08:16:27Z")

</div>

Here’s the correct way to switch to PNPM as [Discourse has transitioned to PNPM as its package manager](https://meta.discourse.org/t/discourse-core-is-switching-to-pnpm-for-js-package-management/324521),

1. Ensure PNPM is installed: `pnpm --version`
2. If it’s not installed, install it using npm: `npm install -g pnpm`
3. Clean up old dependencies:  
`rm -rf /var/www/discourse/node_modules`  
`rm -rf /var/www/discourse/app/assets/javascripts/*/node_modules`
4. Pull the lastest code:  
`cd /var/discourse`  
`git pull`
5. Rebuild Discourse: `./launcher rebuild app`

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [February 24, 2025, 8:28am UTC](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999/6 "2025-02-24T08:28:13Z")

</div>

Point 4 and `git pull` isn’t needed, because rebuild does it.

---

<div class="post-metadata">

### Author: ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)
#### Post date: [February 24, 2025, 9:24am UTC](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999/7 "2025-02-24T09:24:54Z")

</div>

> [@Jagster](#):
>
> rebuild does it

It does now, but it didn’t previously, so this is advice which works also for a very old installation.

---

<div class="post-metadata">

### Author: ![Jagster](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagster/32/192154_2.png) [@Jagster](https://meta.discourse.org/u/Jagster)
#### Post date: [February 24, 2025, 9:27am UTC](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999/8 "2025-02-24T09:27:02Z")

</div>

Well, is out there any that old instances 🤷‍♂️ Not a big deal, though.

---

<div class="post-metadata">

### Author: ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)
#### Post date: [February 24, 2025, 9:28am UTC](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999/9 "2025-02-24T09:28:09Z")

</div>

> [@Jagster](#):
>
> is out there any that old instances

I mention it because when people get trouble upgrading, sometimes the reason is that they are a very long way behind. So it’s in exactly these threads that we should be as robust as we can.

---

<div class="post-metadata">

### Author: ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)
#### Post date: [February 24, 2025, 9:29am UTC](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999/10 "2025-02-24T09:29:44Z")

</div>

> [@sjjh](#):
>
> The update of discourse

How old is your installation? Have you previously upgraded successfully? How old is your OS?

Sometimes a problem is due to extensions which are no longer compatible, and the advice is to share a carefully censored version of your app.yml. I’m not sure if that’s very likely to be the problem here.

---

<div class="post-metadata">

### Author: ![sjjh](https://avatars.discourse-cdn.com/v4/letter/s/d2c977/32.png) [@sjjh](https://meta.discourse.org/u/sjjh)
#### Post date: [February 28, 2025, 2:31pm UTC](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999/11 "2025-02-28T14:31:32Z")

</div>

Thanks for all the support, unfortunately it does not solve the problem.

> [@jahan\_gagan](#):
>
> 1. Ensure PNPM is installed: `pnpm --version`

For new users maybe worth to add a:

1. enter container (e.g., `./launcher enter app`

So I did. And `pnp` was already installed:

```plaintext
root@vtdiscourse-app:/var/www/discourse# pnpm --version
9.5.0

```

> [@jahan\_gagan](#):
>
> - Clean up old dependencies:  
> `rm -rf /var/www/discourse/node_modules`  
> `rm -rf /var/www/discourse/app/assets/javascripts/*/node_modules`
> - Pull the lastest code:  
> `cd /var/discourse`  
> `git pull`
> - Rebuild Discourse: `./launcher rebuild app`

I already did, as written in my post above, without solving the problem.

> [@Ed\_S](#):
>
> How old is your installation? Have you previously upgraded successfully? How old is your OS?

Discourse was installed in _April 2023_.  
I did upgrade successfully up (and including) to _v3.4.0.beta3_.  
As written above, the OS is a LXC container, using _Debian bullseye with latest updates installed_.

> [@Ed\_S](#):
>
> Sometimes a problem is due to extensions which are no longer compatible,

The only installed extension is the [Private Topics Plugin](https://meta.discourse.org/t/private-topics-plugin/268646) (still under maintenance and also kept up to date with each discourse update on my side).

> [@Ed\_S](#):
>
> the advice is to share a carefully censored version of your app.yml.

Here we go:

```plaintext
## this is the all-in-one, standalone Discourse Docker container template
##
## After making changes to this file, you MUST rebuild
## /var/discourse/launcher rebuild app
##
## BE *VERY* CAREFUL WHEN EDITING!
## YAML FILES ARE SUPER SUPER SENSITIVE TO MISTAKES IN WHITESPACE OR ALIGNMENT!
## visit http://www.yamllint.com/ to validate this file as needed

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## Uncomment the next line to enable the IPv6 listener
  #- "templates/web.ipv6.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Uncomment these two lines if you wish to add Lets Encrypt (https)
  ##- "templates/web.ssl.template.yml"
  - "templates/web.ssl.template.yml"
  #- "templates/web.letsencrypt.ssl.template.yml"

## which TCP/IP ports should this container expose?
## If you want Discourse to share a port with another webserver like Apache or nginx,
## see https://meta.discourse.org/t/17247 for details
expose:
  - "80:80" # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Set db_shared_buffers to a max of 25% of the total memory.
  ## will be set automatically by bootstrap based on detected RAM, or you can override
  #db_shared_buffers: "128MB"
  db_shared_buffers: "256MB"

  ## can improve sorting performance, but adds memory usage per-connection
  #db_work_mem: "40MB"

  ## Which Git revision should this container use? (default: tests-passed)
  #version: tests-passed

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

  ## How many concurrent web requests are supported? Depends on memory and CPU cores.
  ## will be set automatically by bootstrap based on detected CPUs, or you can override
  UNICORN_WORKERS: 2

  ## TODO: The domain name this Discourse instance will respond to
  ## Required. Discourse will not work with a bare IP number.
  #DISCOURSE_HOSTNAME: 'discourse.example.com'
  DISCOURSE_HOSTNAME: 'my-discourse-domain.example.com'

  ## Uncomment if you want the container to be started with the same
  ## hostname (-h option) as specified above (default "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: List of comma delimited emails that will be made admin and developer
  ## on initial signup example 'user1@example.com,user2@example.com'
  #DISCOURSE_DEVELOPER_EMAILS: 'me@example.com,you@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'my-admin-mail@example.com'

  ## TODO: The SMTP mail server used to validate new accounts and send notifications
  # SMTP ADDRESS, username, and password are required
  # WARNING the char '#' in SMTP password can cause problems!
  #DISCOURSE_SMTP_ADDRESS: smtp.example.com
  DISCOURSE_SMTP_ADDRESS: my-smtp-server.example.com
  #DISCOURSE_SMTP_PORT: 587
  #DISCOURSE_SMTP_USER_NAME: user@example.com
  DISCOURSE_SMTP_USER_NAME: my-user@my-smtp-server.example.com
  #DISCOURSE_SMTP_PASSWORD: pa$$word
  DISCOURSE_SMTP_PASSWORD: foo(obviously not)
  #DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, default true)
  #DISCOURSE_SMTP_DOMAIN: discourse.example.com # (required by some providers)
  ##DISCOURSE_NOTIFICATION_EMAIL: noreply@discourse.example.com # (address to send notifications from)
  DISCOURSE_NOTIFICATION_EMAIL: my-user@my-smtp-server.example.com # (address to send notifications from)

  ## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
  #LETSENCRYPT_ACCOUNT_EMAIL: me@example.com

  ## The http or https CDN address for this Discourse instance (configured to pull)
  ## see https://meta.discourse.org/t/14857 for details
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com
  
  ## The maxmind geolocation IP address key for IP address lookup
  ## see https://meta.discourse.org/t/-/137387/23 for details
  ##DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
  DISCOURSE_MAXMIND_LICENSE_KEY: my-key

## The Docker container is stateless; all data is stored in /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Plugins go here
## see https://meta.discourse.org/t/19157 for details
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/communiteq/discourse-private-topics.git

## Any custom commands to run after building
run:
  - exec: echo "Beginning of custom commands"
  ## If you want to set the 'From' email address for your first registration, uncomment and change:
  ## After getting the first signup email, re-comment the line. It only needs to run once.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "End of custom commands"

```

Any help appreciated.

---

<div class="post-metadata">

### Author: ![sjjh](https://avatars.discourse-cdn.com/v4/letter/s/d2c977/32.png) [@sjjh](https://meta.discourse.org/u/sjjh)
#### Post date: [March 6, 2025, 4:01pm UTC](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999/12 "2025-03-06T16:01:02Z")

</div>

I updated to the current Debian bookworm and tried again, but the error persists. Does anyone have any idea?

---

<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: [March 6, 2025, 4:08pm UTC](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999/13 "2025-03-06T16:08:09Z")

</div>

Are you getting the exact same error message?

> [@sjjh](#):
>
> ```plaintext
> <E2><80><89>EINVAL<E2><80><89> EINVAL: invalid argument, rmdir '/var/www/discourse/app/assets/
> javascripts/dialog-holder/node_modules/.bin'
> 
> ```

?

---

<div class="post-metadata">

### Author: ![sjjh](https://avatars.discourse-cdn.com/v4/letter/s/d2c977/32.png) [@sjjh](https://meta.discourse.org/u/sjjh)
#### Post date: [March 6, 2025, 4:16pm UTC](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999/14 "2025-03-06T16:16:09Z")

</div>

> [@Falco](#):
>
> Are you getting the exact same error message?

Yes, the current output is:

```plaintext
# ./launcher rebuild app
x86_64 arch detected.
Ensuring launcher is up to date
Launcher is up-to-date
Stopping old container
+ /usr/bin/docker stop -t 600 app
app
2.0.20250226-0128: Pulling from discourse/base
Digest: sha256:6f18aa2cd22bba0deb91d69194e577d4f96130ad555ae8ec646a8792cbfe37db
Status: Image is up to date for discourse/base:2.0.20250226-0128
docker.io/discourse/base:2.0.20250226-0128
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2025-03-06T16:11:32.513131 #1] INFO -- : Reading from stdin
I, [2025-03-06T16:11:32.523975 #1] INFO -- : File > /etc/service/postgres/run chmod: +x chown: 
I, [2025-03-06T16:11:32.527167 #1] INFO -- : File > /etc/service/postgres/log/run chmod: +x chown: 
I, [2025-03-06T16:11:32.530386 #1] INFO -- : File > /etc/runit/3.d/99-postgres chmod: +x chown: 
I, [2025-03-06T16:11:32.533638 #1] INFO -- : File > /root/install_postgres chmod: +x chown: 
I, [2025-03-06T16:11:32.536573 #1] INFO -- : File > /root/upgrade_postgres chmod: +x chown: 
I, [2025-03-06T16:11:32.536864 #1] INFO -- : Replacing data_directory = '/var/lib/postgresql/15/main' with data_directory = '/shared/postgres_data' in /etc/postgresql/15/main/postgresql.conf
I, [2025-03-06T16:11:32.742156 #1] INFO -- : Replacing (?-mix:#?listen_addresses *=.*) with listen_addresses = '*' in /etc/postgresql/15/main/postgresql.conf
I, [2025-03-06T16:11:32.742501 #1] INFO -- : Replacing (?-mix:#?synchronous_commit *=.*) with synchronous_commit = $db_synchronous_commit in /etc/postgresql/15/main/postgresql.conf
I, [2025-03-06T16:11:32.742892 #1] INFO -- : Replacing (?-mix:#?shared_buffers *=.*) with shared_buffers = $db_shared_buffers in /etc/postgresql/15/main/postgresql.conf
I, [2025-03-06T16:11:32.743202 #1] INFO -- : Replacing (?-mix:#?work_mem *=.*) with work_mem = $db_work_mem in /etc/postgresql/15/main/postgresql.conf
I, [2025-03-06T16:11:32.743514 #1] INFO -- : Replacing (?-mix:#?default_text_search_config *=.*) with default_text_search_config = '$db_default_text_search_config' in /etc/postgresql/15/main/postgresql.conf
I, [2025-03-06T16:11:32.743832 #1] INFO -- : Replacing (?-mix:#?checkpoint_segments *=.*) with checkpoint_segments = $db_checkpoint_segments in /etc/postgresql/15/main/postgresql.conf
I, [2025-03-06T16:11:32.747361 #1] INFO -- : Replacing (?-mix:#?logging_collector *=.*) with logging_collector = $db_logging_collector in /etc/postgresql/15/main/postgresql.conf
I, [2025-03-06T16:11:32.747916 #1] INFO -- : Replacing (?-mix:#?log_min_duration_statement *=.*) with log_min_duration_statement = $db_log_min_duration_statement in /etc/postgresql/15/main/postgresql.conf
I, [2025-03-06T16:11:32.748277 #1] INFO -- : Replacing (?-mix:^#local +replication +postgres +peer$) with local replication postgres peer in /etc/postgresql/15/main/pg_hba.conf
I, [2025-03-06T16:11:32.975264 #1] INFO -- : Replacing (?-mix:^host.*all.*all.*127.*$) with host all all 0.0.0.0/0 md5 in /etc/postgresql/15/main/pg_hba.conf
I, [2025-03-06T16:11:32.975566 #1] INFO -- : Replacing (?-mix:^host.*all.*all.*::1\/128.*$) with host all all ::/0 md5 in /etc/postgresql/15/main/pg_hba.conf
I, [2025-03-06T16:11:32.975943 #1] INFO -- : > if [-f /root/install_postgres]; then
  /root/install_postgres && rm -f /root/install_postgres
elif [-e /shared/postgres_run/.s.PGSQL.5432]; then
  socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
fi

I, [2025-03-06T16:14:47.308430 #1] INFO -- : Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.

I, [2025-03-06T16:14:47.310318 #1] INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main
I, [2025-03-06T16:14:47.316234 #1] INFO -- : File > /usr/local/bin/create_db chmod: +x chown: 
I, [2025-03-06T16:14:47.321059 #1] INFO -- : File > /var/lib/postgresql/take-database-backup chmod: +x chown: postgres:postgres
I, [2025-03-06T16:14:47.323488 #1] INFO -- : File > /var/spool/cron/crontabs/postgres chmod: chown: 
I, [2025-03-06T16:14:47.323675 #1] INFO -- : > sleep 5
2025-03-06 16:14:47.377 UTC [42] LOG: starting PostgreSQL 15.12 (Debian 15.12-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
2025-03-06 16:14:47.377 UTC [42] LOG: listening on IPv4 address "0.0.0.0", port 5432
2025-03-06 16:14:47.377 UTC [42] LOG: listening on IPv6 address "::", port 5432
2025-03-06 16:14:47.390 UTC [42] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2025-03-06 16:14:47.408 UTC [53] LOG: database system was shut down at 2025-03-06 15:56:16 UTC
2025-03-06 16:14:47.419 UTC [42] LOG: database system is ready to accept connections
I, [2025-03-06T16:14:52.325371 #1] INFO -- : 
I, [2025-03-06T16:14:52.325520 #1] INFO -- : > /usr/local/bin/create_db
2025-03-06 16:14:52.388 UTC [60] postgres@postgres ERROR: database "discourse" already exists
2025-03-06 16:14:52.388 UTC [60] postgres@postgres STATEMENT: CREATE DATABASE discourse;
createdb: error: database creation failed: ERROR: database "discourse" already exists
2025-03-06 16:14:52.450 UTC [63] postgres@discourse ERROR: role "discourse" already exists
2025-03-06 16:14:52.450 UTC [63] postgres@discourse STATEMENT: create user discourse;
ERROR: role "discourse" already exists
NOTICE: extension "hstore" already exists, skipping
NOTICE: extension "pg_trgm" already exists, skipping
NOTICE: extension "vector" already exists, skipping
NOTICE: version "0.8.0" of extension "vector" is already installed
NOTICE: extension "hstore" already exists, skipping
NOTICE: extension "pg_trgm" already exists, skipping
NOTICE: extension "vector" already exists, skipping
NOTICE: version "0.8.0" of extension "vector" is already installed
I, [2025-03-06T16:14:53.059363 #1] INFO -- : GRANT
ALTER SCHEMA
CREATE EXTENSION
CREATE EXTENSION
CREATE EXTENSION
ALTER EXTENSION
CREATE EXTENSION
CREATE EXTENSION
CREATE EXTENSION
ALTER EXTENSION
UPDATE 0

I, [2025-03-06T16:14:53.059480 #1] INFO -- : > echo postgres installed!
I, [2025-03-06T16:14:53.061579 #1] INFO -- : postgres installed!

I, [2025-03-06T16:14:53.064856 #1] INFO -- : File > /etc/service/redis/run chmod: +x chown: 
I, [2025-03-06T16:14:53.067831 #1] INFO -- : File > /etc/service/redis/log/run chmod: +x chown: 
I, [2025-03-06T16:14:53.071084 #1] INFO -- : File > /etc/runit/3.d/10-redis chmod: +x chown: 
I, [2025-03-06T16:14:53.071493 #1] INFO -- : Replacing daemonize yes with in /etc/redis/redis.conf
I, [2025-03-06T16:14:53.289163 #1] INFO -- : Replacing (?-mix:^pidfile.*$) with in /etc/redis/redis.conf
I, [2025-03-06T16:14:53.289618 #1] INFO -- : > install -d -m 0755 -o redis -g redis /shared/redis_data
I, [2025-03-06T16:14:53.291845 #1] INFO -- : 
I, [2025-03-06T16:14:53.292149 #1] INFO -- : Replacing (?-mix:^logfile.*$) with logfile "" in /etc/redis/redis.conf
I, [2025-03-06T16:14:53.292587 #1] INFO -- : Replacing (?-mix:^bind .*$) with in /etc/redis/redis.conf
I, [2025-03-06T16:14:53.293010 #1] INFO -- : Replacing (?-mix:^dir .*$) with dir /shared/redis_data in /etc/redis/redis.conf
I, [2025-03-06T16:14:53.293469 #1] INFO -- : Replacing (?-mix:^protected-mode yes) with protected-mode no in /etc/redis/redis.conf
I, [2025-03-06T16:14:53.293836 #1] INFO -- : Replacing # io-threads 4 with io-threads $redis_io_threads in /etc/redis/redis.conf
I, [2025-03-06T16:14:53.294165 #1] INFO -- : > echo redis installed
I, [2025-03-06T16:14:53.295528 #1] INFO -- : redis installed

I, [2025-03-06T16:14:53.295670 #1] INFO -- : > cat /etc/redis/redis.conf | grep logfile
I, [2025-03-06T16:14:53.298418 #1] INFO -- : logfile ""

I, [2025-03-06T16:14:53.298662 #1] INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf
I, [2025-03-06T16:14:53.299876 #1] INFO -- : > sleep 10
109:C 06 Mar 2025 16:14:53.307 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
109:C 06 Mar 2025 16:14:53.307 # Redis version=7.0.15, bits=64, commit=00000000, modified=0, pid=109, just started
109:C 06 Mar 2025 16:14:53.307 # Configuration loaded
109:M 06 Mar 2025 16:14:53.307 * monotonic clock: POSIX clock_gettime
109:M 06 Mar 2025 16:14:53.308 * Running mode=standalone, port=6379.
109:M 06 Mar 2025 16:14:53.308 # Server initialized
109:M 06 Mar 2025 16:14:53.308 # 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.
109:M 06 Mar 2025 16:14:53.308 * Loading RDB produced by version 7.0.15
109:M 06 Mar 2025 16:14:53.308 * RDB age 1118 seconds
109:M 06 Mar 2025 16:14:53.308 * RDB memory usage when created 1.93 Mb
109:M 06 Mar 2025 16:14:53.313 * Done loading RDB, keys loaded: 1587, keys expired: 0.
109:M 06 Mar 2025 16:14:53.313 * DB loaded from disk: 0.005 seconds
109:M 06 Mar 2025 16:14:53.313 * Ready to accept connections
I, [2025-03-06T16:15:03.301567 #1] INFO -- : 
I, [2025-03-06T16:15:03.301799 #1] INFO -- : > thpoff echo "thpoff is installed!"
I, [2025-03-06T16:15:03.304659 #1] INFO -- : thpoff is installed!

I, [2025-03-06T16:15:03.304912 #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-03-06T16:15:03.400091 #1] INFO -- : 
I, [2025-03-06T16:15:03.400231 #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-03-06T16:15:03.492187 #1] INFO -- : 
I, [2025-03-06T16:15:03.492318 #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-03-06T16:15:03.582055 #1] INFO -- : 
I, [2025-03-06T16:15:03.582264 #1] INFO -- : > rm -f /etc/cron.d/anacron
I, [2025-03-06T16:15:03.584313 #1] INFO -- : 
I, [2025-03-06T16:15:03.586295 #1] INFO -- : File > /etc/cron.d/anacron chmod: chown: 
I, [2025-03-06T16:15:03.589760 #1] INFO -- : File > /etc/runit/1.d/copy-env chmod: +x chown: 
I, [2025-03-06T16:15:03.592914 #1] INFO -- : File > /etc/service/unicorn/run chmod: +x chown: 
I, [2025-03-06T16:15:03.596214 #1] INFO -- : File > /etc/service/nginx/run chmod: +x chown: 
I, [2025-03-06T16:15:03.599588 #1] INFO -- : File > /etc/runit/3.d/01-nginx chmod: +x chown: 
I, [2025-03-06T16:15:03.602811 #1] INFO -- : File > /etc/runit/3.d/02-unicorn chmod: +x chown: 
I, [2025-03-06T16:15:03.602962 #1] INFO -- : Replacing # postgres with if [-f /root/install_postgres]; then
  /root/install_postgres
  rm /root/install_postgres
fi
sv start postgres || exit 1
 in /etc/service/unicorn/run
I, [2025-03-06T16:15:03.604280 #1] INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse git clean -f
I, [2025-03-06T16:15:03.832806 #1] INFO -- : 
I, [2025-03-06T16:15:03.832950 #1] INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse bash -c '
  set -o errexit
  if [$(git rev-parse --is-shallow-repository) == "true"]; then
      git remote set-branches --add origin main
      git remote set-branches origin tests-passed
      git fetch --depth 1 origin tests-passed
  else
      git fetch --tags --prune-tags --prune --force origin
  fi
'
From https://github.com/discourse/discourse
 - [deleted] (none) -> origin/add-header-search-experience
 - [deleted] (none) -> origin/branding-logo
 - [deleted] (none) -> origin/dependabot/npm_and_yarn/glimmer/syntax-0.94.7
 - [deleted] (none) -> origin/dev-refactor-password-validation-for-create-account
 - [deleted] (none) -> origin/ellaestigoy-patch-1
 - [deleted] (none) -> origin/feature/admin-search-improvements-2
 - [deleted] (none) -> origin/feature/admins-access-group-chats
 - [deleted] (none) -> origin/feature_pm_emoji
 - [deleted] (none) -> origin/feature_pm_hashtag
 - [deleted] (none) -> origin/feature_pm_image
 - [deleted] (none) -> origin/feature_pm_link
 - [deleted] (none) -> origin/feature_pm_mention
 - [deleted] (none) -> origin/feature_pm_quote
 - [deleted] (none) -> origin/feature_pm_strikethrough
 - [deleted] (none) -> origin/feature_pm_table
 - [deleted] (none) -> origin/feature_pm_underline
 - [deleted] (none) -> origin/fix/allow-oneboxes-with-no-description
 - [deleted] (none) -> origin/loic-upgrade-sidekiq
 - [deleted] (none) -> origin/loic-use-bundler-checksums
 - [deleted] (none) -> origin/pento/feature-which-watched-words-were-written
 - [deleted] (none) -> origin/pento/fix-block-googlebot-from-search
 - [deleted] (none) -> origin/tobiaseigen-patch-3-1
   48bfa202e..fb76696f4 main -> origin/main
 * [new branch] 0-a-codemod -> origin/0-a-codemod
 * [new branch] add-outlet-for-topic-list-item -> origin/add-outlet-for-topic-list-item
 * [new branch] add-serializer-include-cond -> origin/add-serializer-include-cond
 * [new branch] adjust-image-upload-component -> origin/adjust-image-upload-component
 * [new branch] backport-transformer-to-stable -> origin/backport-transformer-to-stable
 + abd422fb0...087b2c0b4 dependabot/bundler/fastimage-2.4.0 -> origin/dependabot/bundler/fastimage-2.4.0 (forced update)
 + ad7276f06...53cae1918 dependabot/bundler/redcarpet-3.6.1 -> origin/dependabot/bundler/redcarpet-3.6.1 (forced update)
 * [new branch] dependabot/npm_and_yarn/glimmer/syntax-0.94.8 -> origin/dependabot/npm_and_yarn/glimmer/syntax-0.94.8
 * [new branch] dependabot/npm_and_yarn/prosemirror-schema-list-1.5.1 -> origin/dependabot/npm_and_yarn/prosemirror-schema-list-1.5.1
 * [new branch] dependabot/npm_and_yarn/prosemirror-transform-1.10.3 -> origin/dependabot/npm_and_yarn/prosemirror-transform-1.10.3
 * [new branch] dependabot/npm_and_yarn/prosemirror-view-1.38.1 -> origin/dependabot/npm_and_yarn/prosemirror-view-1.38.1
 + b5cee8b92...23a49f3b5 dependabot/npm_and_yarn/uppy-27ae46fdd6 -> origin/dependabot/npm_and_yarn/uppy-27ae46fdd6 (forced update)
 * [new branch] dev-refactor-user-fields-mixin -> origin/dev-refactor-user-fields-mixin
   6f9238338..229d1c347 dev/auto-screen-size-screenshots -> origin/dev/auto-screen-size-screenshots
 * [new branch] dev/backfill-api-key-scope-modes -> origin/dev/backfill-api-key-scope-modes
 + 3896206dc...85a981c1f dev/glimmer-post-stream -> origin/dev/glimmer-post-stream (forced update)
 * [new branch] dev/refactor-reports-index-service -> origin/dev/refactor-reports-index-service
 * [new branch] dev/show-scope-mode-in-api-key-list -> origin/dev/show-scope-mode-in-api-key-list
 + 5350c1a3d...89bb01474 discourse-emojis-gem -> origin/discourse-emojis-gem (forced update)
   6eb2d9d46..de01247f6 ellaestigoy-patch-2 -> origin/ellaestigoy-patch-2
 * [new branch] feature/add-below-op-plugin-outlet -> origin/feature/add-below-op-plugin-outlet
   61e65fab0..7c3aafefe feature/add-welcome-banner-to-core -> origin/feature/add-welcome-banner-to-core
 * [new branch] feature/admin-search-improvements-3 -> origin/feature/admin-search-improvements-3
   a1bc7c9ce..052ab4478 feature_pm_codeblock -> origin/feature_pm_codeblock
   e6073220a..38ce43079 feature_pm_html_block -> origin/feature_pm_html_block
   8deec2953..e8bb88708 feature_pm_html_inline -> origin/feature_pm_html_inline
 * [new branch] feature_pm_onebox -> origin/feature_pm_onebox
   05ad060b0..f9439c845 feature_pm_typographer -> origin/feature_pm_typographer
 * [new branch] form_template_composer_field -> origin/form_template_composer_field
 * [new branch] intersection-observer -> origin/intersection-observer
 * [new branch] loic-sidekiq-migration-stable -> origin/loic-sidekiq-migration-stable
 * [new branch] loic-sidekiq-upgrade -> origin/loic-sidekiq-upgrade
 + 06c4fcf62...a905fe797 mt/idb -> origin/mt/idb (forced update)
 * [new branch] pr/31217 -> origin/pr/31217
 + db6e9def3...68f0b10a0 reapply_refactor -> origin/reapply_refactor (forced update)
 * [new branch] remote-update-topic -> origin/remote-update-topic
   10691bbec..ddcd84812 renato/pm -> origin/renato/pm
 * [new branch] revert-31540-revert-search-change -> origin/revert-31540-revert-search-change
   909b93f40..0a7a0dcff stable -> origin/stable
   57a0bfaef..fb76696f4 tests-passed -> origin/tests-passed
 + c540132fe...703370c93 ux/combined-themes-components-sidebar-links -> origin/ux/combined-themes-components-sidebar-links (forced update)
I, [2025-03-06T16:15:04.647091 #1] INFO -- : 
I, [2025-03-06T16:15:04.647232 #1] INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse bash -c '
  set -o errexit
  if [[$(git symbolic-ref --short HEAD) == tests-passed]] ; then
      git pull
  else
      git -c advice.detachedHead=false checkout tests-passed
  fi
'
Switched to a new branch 'tests-passed'
I, [2025-03-06T16:15:13.381654 #1] INFO -- : branch 'tests-passed' set up to track 'origin/tests-passed'.

I, [2025-03-06T16:15:13.381798 #1] INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse git config user.discourse-version tests-passed
I, [2025-03-06T16:15:13.391367 #1] INFO -- : 
I, [2025-03-06T16:15:13.391496 #1] INFO -- : > cd /var/www/discourse && mkdir -p tmp
I, [2025-03-06T16:15:13.394199 #1] INFO -- : 
I, [2025-03-06T16:15:13.394316 #1] INFO -- : > cd /var/www/discourse && chown discourse:www-data tmp
I, [2025-03-06T16:15:13.396723 #1] INFO -- : 
I, [2025-03-06T16:15:13.396823 #1] INFO -- : > cd /var/www/discourse && mkdir -p tmp/pids
I, [2025-03-06T16:15:13.399170 #1] INFO -- : 
I, [2025-03-06T16:15:13.399285 #1] INFO -- : > cd /var/www/discourse && mkdir -p tmp/sockets
I, [2025-03-06T16:15:13.401760 #1] INFO -- : 
I, [2025-03-06T16:15:13.401868 #1] INFO -- : > cd /var/www/discourse && touch tmp/.gitkeep
I, [2025-03-06T16:15:13.404115 #1] INFO -- : 
I, [2025-03-06T16:15:13.404184 #1] INFO -- : > cd /var/www/discourse && mkdir -p /shared/log/rails
I, [2025-03-06T16:15:13.406561 #1] INFO -- : 
I, [2025-03-06T16:15:13.406676 #1] INFO -- : > cd /var/www/discourse && bash -c "touch -a /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log"
I, [2025-03-06T16:15:13.410140 #1] INFO -- : 
I, [2025-03-06T16:15:13.410262 #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-03-06T16:15:13.414018 #1] INFO -- : 
I, [2025-03-06T16:15:13.414091 #1] INFO -- : > cd /var/www/discourse && bash -c "mkdir -p /shared/{uploads,backups}"
I, [2025-03-06T16:15:13.417307 #1] INFO -- : 
I, [2025-03-06T16:15:13.417424 #1] INFO -- : > cd /var/www/discourse && bash -c "ln -s /shared/{uploads,backups} /var/www/discourse/public"
I, [2025-03-06T16:15:13.420633 #1] INFO -- : 
I, [2025-03-06T16:15:13.420749 #1] INFO -- : > cd /var/www/discourse && bash -c "mkdir -p /shared/tmp/{backups,restores}"
I, [2025-03-06T16:15:13.424027 #1] INFO -- : 
I, [2025-03-06T16:15:13.424099 #1] INFO -- : > cd /var/www/discourse && bash -c "ln -s /shared/tmp/{backups,restores} /var/www/discourse/tmp"
I, [2025-03-06T16:15:13.427404 #1] INFO -- : 
I, [2025-03-06T16:15:13.427520 #1] INFO -- : > cd /var/www/discourse && chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp
I, [2025-03-06T16:15:13.432996 #1] INFO -- : 
I, [2025-03-06T16:15:13.433119 #1] INFO -- : > cd /var/www/discourse && [! -d public/plugins] || find public/plugins/ -maxdepth 1 -xtype l -delete
I, [2025-03-06T16:15:13.434610 #1] INFO -- : 
I, [2025-03-06T16:15:13.434886 #1] INFO -- : Replacing # redis with if [! -d /shared/redis_data]; then
  install -d -m 0755 -o redis -g redis /shared/redis_data
fi
sv start redis || exit 1 in /etc/service/unicorn/run
I, [2025-03-06T16:15:13.435314 #1] INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/docker_manager.git
Cloning into 'docker_manager'...
I, [2025-03-06T16:15:14.815744 #1] INFO -- : 
I, [2025-03-06T16:15:14.815886 #1] INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/communiteq/discourse-private-topics.git
Cloning into 'discourse-private-topics'...
I, [2025-03-06T16:15:15.328831 #1] INFO -- : 
I, [2025-03-06T16:15:15.329183 #1] INFO -- : > cp /var/www/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf
I, [2025-03-06T16:15:15.332191 #1] INFO -- : 
I, [2025-03-06T16:15:15.332306 #1] INFO -- : > rm /etc/nginx/sites-enabled/default
I, [2025-03-06T16:15:15.334038 #1] INFO -- : 
I, [2025-03-06T16:15:15.334129 #1] INFO -- : > mkdir -p /var/nginx/cache
I, [2025-03-06T16:15:15.335827 #1] INFO -- : 
I, [2025-03-06T16:15:15.336010 #1] INFO -- : Replacing pid /run/nginx.pid; with daemon off; in /etc/nginx/nginx.conf
I, [2025-03-06T16:15:15.650801 #1] INFO -- : Replacing (?m-ix:upstream[^\}]+\}) with upstream discourse { server 127.0.0.1:3000; } in /etc/nginx/conf.d/discourse.conf
I, [2025-03-06T16:15:15.651132 #1] INFO -- : Replacing (?-mix:server_name.+$) with server_name _ ; in /etc/nginx/conf.d/discourse.conf
I, [2025-03-06T16:15:15.651408 #1] INFO -- : Replacing (?-mix:client_max_body_size.+$) with client_max_body_size $upload_size ; in /etc/nginx/conf.d/discourse.conf
I, [2025-03-06T16:15:15.651738 #1] INFO -- : Replacing (?-mix:worker_connections.+$) with worker_connections $nginx_worker_connections ; in /etc/nginx/nginx.conf
I, [2025-03-06T16:15:15.651995 #1] INFO -- : > echo "done configuring web"
I, [2025-03-06T16:15:15.653682 #1] INFO -- : done configuring web

I, [2025-03-06T16:15:15.653902 #1] INFO -- : > cd /var/www/discourse && gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock)
I, [2025-03-06T16:15:16.407916 #1] INFO -- : Successfully installed bundler-2.6.4
1 gem installed

I, [2025-03-06T16:15:16.408068 #1] INFO -- : > cd /var/www/discourse && find /var/www/discourse ! -user discourse -exec chown discourse {} \+
I, [2025-03-06T16:15:18.880148 #1] INFO -- : 
I, [2025-03-06T16:15:18.880522 #1] INFO -- : > cd /var/www/discourse && if [-f yarn.lock]; then
  if [-d node_modules/.pnpm]; then
    echo "This version of Discourse uses yarn, but pnpm node_modules are preset. Cleaning up..."
    find ./node_modules ./app/assets/javascripts/*/node_modules -mindepth 1 -maxdepth 1 -exec rm -rf {} +
  fi
  su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
else
  su discourse -c 'CI=1 pnpm install --frozen-lockfile && pnpm prune'
fi
I, [2025-03-06T16:15:20.413858 #1] INFO -- : Scope: all 17 workspace projects
Lockfile is up to date, resolution step is skipped
 EINVAL EINVAL: invalid argument, rmdir '/var/www/discourse/app/assets/javascripts/dialog-holder/node_modules/.bin'

I, [2025-03-06T16:15:20.414389 #1] INFO -- : Terminating async processes
I, [2025-03-06T16:15:20.414429 #1] INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main pid: 42
I, [2025-03-06T16:15:20.414484 #1] INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 109
2025-03-06 16:15:20.414 UTC [42] LOG: received fast shutdown request
109:signal-handler (1741277720) Received SIGTERM scheduling shutdown...
2025-03-06 16:15:20.441 UTC [42] LOG: aborting any active transactions
2025-03-06 16:15:20.443 UTC [42] LOG: background worker "logical replication launcher" (PID 56) exited with exit code 1
2025-03-06 16:15:20.445 UTC [51] LOG: shutting down
2025-03-06 16:15:20.450 UTC [51] LOG: checkpoint starting: shutdown immediate
109:M 06 Mar 2025 16:15:20.499 # User requested shutdown...
109:M 06 Mar 2025 16:15:20.499 * Saving the final RDB snapshot before exiting.
2025-03-06 16:15:20.538 UTC [51] LOG: checkpoint complete: wrote 4 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.002 s, sync=0.027 s, total=0.093 s; sync files=3, longest=0.010 s, average=0.009 s; distance=6 kB, estimate=6 kB
2025-03-06 16:15:20.544 UTC [42] LOG: database system is shut down
109:M 06 Mar 2025 16:15:20.547 * DB saved on disk
109:M 06 Mar 2025 16:15:20.547 # Redis is now ready to exit, bye bye...

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && if [-f yarn.lock]; then
  if [-d node_modules/.pnpm]; then
    echo "This version of Discourse uses yarn, but pnpm node_modules are preset. Cleaning up..."
    find ./node_modules ./app/assets/javascripts/*/node_modules -mindepth 1 -maxdepth 1 -exec rm -rf {} +
  fi
  su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
else
  su discourse -c 'CI=1 pnpm install --frozen-lockfile && pnpm prune'
fi failed with return #<Process::Status: pid 301 exit 234>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"yarn", "cmd"=>["if [-f yarn.lock]; then\n if [-d node_modules/.pnpm]; then\n echo \"This version of Discourse uses yarn, but pnpm node_modules are preset. Cleaning up...\"\n find ./node_modules ./app/assets/javascripts/*/node_modules -mindepth 1 -maxdepth 1 -exec rm -rf {} +\n fi\n su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'\nelse\n su discourse -c 'CI=1 pnpm install --frozen-lockfile && pnpm prune'\nfi"]}
bootstrap failed with exit code 234
**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.
f489854c1c937e881235de4e2a32a30b1e55237b5f20d4599d2af9aa73a2affc

```

---

<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: [March 6, 2025, 6:07pm UTC](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999/15 "2025-03-06T18:07:50Z")

</div>

I can’t reproduce this on my server. Can you share more details about the server you are using? What is the VPS provider, OS and version and the output of `docker info`.

---

<div class="post-metadata">

### Author: ![sjjh](https://avatars.discourse-cdn.com/v4/letter/s/d2c977/32.png) [@sjjh](https://meta.discourse.org/u/sjjh)
#### Post date: [March 6, 2025, 6:23pm UTC](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999/16 "2025-03-06T18:23:40Z")

</div>

> [@Falco](#):
>
> What is the VPS provider

The LXC container is running on a Proxmox VE 7.4-19 (kernel Linux 5.15.158-2-pve #1 SMP PVE 5.15.158-2), on a hardware with 8 x Intel(R) Xeon(R) CPU W3550 @ 3.07GHz .

> [@Falco](#):
>
> OS

Debian 12 (Bookworm) 64bit, updated earlier today from a Debian 11 (Bullseye) (it’s a Turnkey Linux 17 appliance).

> [@Falco](#):
>
> output of `docker info`

```plaintext
# docker info
Client: Docker Engine - Community
 Version: 28.0.1
 Context: default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version: v0.21.1
    Path: /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version: v2.33.1
    Path: /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 2
  Running: 1
  Paused: 0
  Stopped: 1
 Images: 6
 Server Version: 28.0.1
 Storage Driver: overlay2
  Backing Filesystem: zfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: true
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: bcc810d6b9066471b0b6fa75f557a15a1cbf31bb
 runc version: v1.2.4-0-g6c52b3f
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 5.15.158-2-pve
 Operating System: Debian GNU/Linux 12 (bookworm)
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 6GiB
 Name: vtdiscourse
 ID: 9ea13423-e1f4-43e2-a8f4-b881b1ffe215
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  ::1/128
  127.0.0.0/8
 Live Restore Enabled: false

```

I’m happy to provide any additional info, that helps solving the issue.

---

<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: [March 6, 2025, 6:34pm UTC](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999/17 "2025-03-06T18:34:30Z")

</div>

> [@sjjh](#):
>
> Intel(R) Xeon(R) CPU W3550

Wow, that is a over 15 years old CPU. While [we had problems with old CPUs in the past](https://meta.discourse.org/t/discourse-update-keeps-failing/231862/22), it doesn’t look like this is the issue this time.

> [@sjjh](#):
>
> The LXC container is running on a Proxmox VE 7.4-19

So it is like this?

```mermaid
architecture-beta
    group host(server)[host]
          group lxc(server)[lxc] in host
              group docker(server)[discourse docker container] in lxc

```

---

<div class="post-metadata">

### Author: ![sjjh](https://avatars.discourse-cdn.com/v4/letter/s/d2c977/32.png) [@sjjh](https://meta.discourse.org/u/sjjh)
#### Post date: [March 6, 2025, 6:43pm UTC](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999/18 "2025-03-06T18:43:30Z")

</div>

> [@Falco](#):
>
> Wow, that is a over 15 years old CPU.

And it’s still running fine. 😉 While sustainability is indeed a topic, this system was intended as a test system and the goal is now to update discourse and then move it to the productive PVE cluster on recent and more appropriate hardware.

> [@Falco](#):
>
> So it is like this?

Yes. The PVE is running on bare metal. Inside the PVE, a CT (LXC) guest is used to run a TKL appliance, which was used to install discourse via docker.  
(_Note:_ on the productive PVE cluster we plan to use a VM (Qemu) with vanilla Debian to run the discourse docker, which is the more recommend way)

---

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [March 8, 2025, 10:12am UTC](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999/20 "2025-03-08T10:12:35Z")

</div>

So the pnpm install for v3.4.0.beta3 worked fine, but the latest version of Discourse does not? Very strange!

One thing to bear in mind is that, compared to other package managers, `pnpm` makes very heavy use of “hard links” on the filesystem. That can cause problems on some filesystem types… although it is supposed to automatically fallback to a non-hardlink-based strategy. More info on that [here](https://pnpm.io/npmrc#package-import-method).

> [@sjjh](#):
>
> ```plaintext
> Storage Driver: overlay2
> Backing Filesystem: zfs
> Supports d_type: true
> Using metacopy: false
> Native Overlay Diff: true
> userxattr: true
> 
> ```

Comparing to a [standard install](https://meta.discourse.org/t/142537?silent=true):

```plaintext
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false

```

So, overlay2 is the same. But the backing filesystem is different… I don’t know if that would have any bearing on this kind of problem?

---

<div class="post-metadata">

### Author: ![sjjh](https://avatars.discourse-cdn.com/v4/letter/s/d2c977/32.png) [@sjjh](https://meta.discourse.org/u/sjjh)
#### Post date: [March 10, 2025, 9:06am UTC](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999/21 "2025-03-10T09:06:23Z")

</div>

> [@david](#):
>
> So the pnpm install for v3.4.0.beta3 worked fine, but the latest version of Discourse does not?

yes.

I’m open to provide additional information, if you tell me how/what to debug…

The affected installation is a test installation. I’m having a productive installation running on the same hardware/setup (which I’m currently reluctant to update…).

[Next page](https://meta.discourse.org/t/launcher-rebuild-app-error-bootstrap-failed-with-exit-code-234/353999.md?page=2)
