./launcher rebuild app 오류: bootstrap 실패, 종료 코드 234

./launcher rebuild app을 통해 Discourse를 업데이트하는 과정에서 다음과 같은 출력과 함께 실패합니다:

x86_64 아키텍처 감지됨.
Launcher가 최신 상태인지 확인하는 중
Fetching origin
Launcher가 최신 상태입니다
이전 컨테이너 중지 중
+ /usr/bin/docker stop -t 600 app
app
2.0.20250129-0720: discourse/base에서 가져오는 중
Digest: sha256:01b8516e5504c0e9bc3707773015ff4407be03a89154194ff3b5b8699291bc26
Status: 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 -- : 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 -- : /etc/postgresql/15/main/postgresql.c
onf 파일에서 data_directory = '/var/lib/postgresql/
15/main'를 data_directory = '/shared/postgres_data'로 대체하는 중
I, [2025-02-23T13:57:37.440507 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf 파일에서 (?-mix:#?listen_addresses *=.*)를 l
isten_addresses = '*'로 대체하는 중
I, [2025-02-23T13:57:37.440880 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf 파일에서 (?-mix:#?synchronous_commit *=.*)를
 synchronous_commit = $db_synchronous_commit로 대체하는 중
I, [2025-02-23T13:57:37.441239 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf 파일에서 (?-mix:#?shared_buffers *=.*)를 sha
red_buffers = $db_shared_buffers로 대체하는 중
I, [2025-02-23T13:57:37.441541 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf 파일에서 (?-mix:#?work_mem *=.*)를 work_mem 
= $db_work_mem으로 대체하는 중
I, [2025-02-23T13:57:37.441851 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf 파일에서 (?-mix:#?default_text_search_config *=
.*)를 default_text_search_config = '$db_default_text_search_config'로 대체하는 중
I, [2025-02-23T13:57:37.442167 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf 파일에서 (?-mix:#?checkpoint_segments *=.*)를
 checkpoint_segments = $db_checkpoint_segments로 대체하는 중
I, [2025-02-23T13:57:37.445665 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf 파일에서 (?-mix:#?logging_collector *=.*)를
 logging_collector = $db_logging_collector로 대체하는 중
I, [2025-02-23T13:57:37.446205 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf 파일에서 (?-mix:#?log_min_duration_statement *=
.*)를 log_min_duration_statement = $db_log_min_duration_statement로 대체하는 중
I, [2025-02-23T13:57:37.446558 #1]  INFO -- : /etc/postgresql/15/main/pg_hba.conf 파일에서 (?-mix:^#local +replication +postgres 
+peer$)를 local replication postgres  peer로 대체하는 중
I, [2025-02-23T13:57:37.657721 #1]  INFO -- : /etc/postgresql/15/main/pg_hba.conf 파일에서 (?-mix:^host.*all.*all.*127.*$)를 h
ost all all 0.0.0.0/0 md5로 대체하는 중
I, [2025-02-23T13:57:37.658015 #1]  INFO -- : /etc/postgresql/15/main/pg_hba.conf 파일에서 (?-mix:^host.*all.*all.*::1\/128.*$)를
 host all all ::/0 md5로 대체하는 중
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 -- : 로케일 생성 중(시간이 좀 걸릴 수 있음)...
  en_US.UTF-8... 완료
생성 완료.

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 -- : /etc/redis/redi
s.conf 파일에서 daemonize yes를  로 대체하는 중
I, [2025-02-23T14:00:45.155642 #1]  INFO -- : /etc/redi
s/redis.conf 파일에서 (?-mix:^pidfile.*$)를  로 대체하는 중
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 -- : /etc/redis/redis.conf 파일에서 (?-mix:^logfile.*$)를 logfile ""로
 대체하는 중
I, [2025-02-23T14:00:45.159059 #1]  INFO -- : /etc/redis/
redis.conf 파일에서 (?-mix:^bind .*$)를  로 대체하는 중
I, [2025-02-23T14:00:45.159470 #1]  INFO -- : /etc/redis/redis.conf 파일에서 (?-mix:^dir .*$)를 dir /shared/redi
s_data로 대체하는 중
I, [2025-02-23T14:00:45.159932 #1]  INFO -- : /etc/redis/redis.conf 파일에서 (?-mix:^protected-mode yes)를 prote
cted-mode no로 대체하는 중
I, [2025-02-23T14:00:45.160305 #1]  INFO -- : /etc/redis/redis.conf 파일에서 # io-threads 4를 io-threads $redis_
io_threads로 대체하는 중
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 -- : /etc/service/unicorn/run 파일에서 # postgres를 if [ -f /root/install_
postgres ]; then
  /root/install_postgres
  rm /root/install_postgres
fi
sv start postgres || exit 1
 로 대체하는 중
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

exit code 234에 대한 정보를 찾을 수 없었습니다. 무엇이 잘못되었는지 알 수 있을까요?

이 부분이 pnpm 패키지 매니저에서 오류가 발생한 것 같지만, 정확한 의미를 알 수 없습니다:

그 시점에 실행 중이던 커맨드 라인은 다음과 같을 것입니다

오류는 yarnpnpm 사이의 불일치로 인해 발생했습니다. 실패의 구체적인 원인은 다음과 같습니다:
EINVAL: invalid argument, rmdir '/var/www/discourse/app/assets/javascripts/dialog-holder/node_modules/.bin'

제안된 단계:

  1. Node Modules 수동 삭제: rm -rf node_modules app/assets/javascripts/*/node_modules
  2. 정리 실행: ./launcher cleanup
  3. Discourse 재빌드: ./launcher rebuild app

제시된 대로 수행했지만, 불행히도 오류가 계속됩니다:

./launcher rebuild app
x86_64 아키텍처 감지됨.

경고: Discourse 베이스 이미지 다운로드를 시작하려고 합니다.
네트워크 속도에 따라 이 과정은 몇 분에서 1시간까지 걸릴 수 있습니다.

인내심을 갖고 기다려 주세요

2.0.20250129-0720: discourse/base에서 가져오는 중
af302e5c37e9: 가져오기 완료
ed49ab5c933d: 가져오기 완료
7cb9e730d898: 가져오기 완료
7c28a6b187b2: 가져오기 완료
23222af7238f: 가져오기 완료
59b87d9ed5c1: 가져오기 완료
90d60b432298: 가져오기 완료
d3b3135aa82b: 가져오기 완료
94e7b594395d: 가져오기 완료
cf15e2c89d00: 가져오기 완료
2c0cccf9ec27: 가져오기 완료
5d8ea2a8d564: 가져오기 완료
020f04b42275: 가져오기 완료
06e22604f387: 가져오기 완료
8b0ecc579aad: 가져오기 완료
4d577f7424c0: 가져오기 완료
37ef4781925f: 가져오기 완료
30d67d1af761: 가져오기 완료
43eaf8c26af4: 가져오기 완료
02f4cc50eabd: 가져오기 완료
93896ee36e56: 가져오기 완료
fadd5d615e0e: 가져오기 완료
85f9459cb30e: 가져오기 완료
eaddca2afacb: 가져오기 완료
f54443d29a2d: 가져오기 완료
ed6f0f133683: 가져오기 완료
3d1894dc563f: 가져오기 완료
51ca3f63c909: 가져오기 완료
b87374db2274: 가져오기 완료
Digest: sha256:01b8516e5504c0e9bc3707773015ff4407be03a89154194ff3b5b8699291bc26
상태: discourse/base:2.0.20250129-0720의 새 이미지가 다운로드됨
docker.io/discourse/base:2.0.20250129-0720
Launcher가 최신 상태인지 확인하는 중
Fetching origin
Launcher가 최신 상태입니다
이전 컨테이너를 중지하는 중
+ /usr/bin/docker stop -t 600 app
app
2.0.20250129-0720: discourse/base에서 가져오는 중
Digest: sha256:01b8516e5504c0e9bc3707773015ff4407be03a89154194ff3b5b8699291bc26
상태: 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 -- : 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 -- : /etc/postgresql/15/main/postgresql.conf에서 data_directory = '/var/lib/postgresql/15/main'를 data_directory = '/shared/postgres_data'로 대체
I, [2025-02-23T21:28:36.302682 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf에서 (?-mix:#?listen_addresses *=.*)를 listen_addresses = '*'로 대체
I, [2025-02-23T21:28:36.303026 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf에서 (?-mix:#?synchronous_commit *=.*)를 synchronous_commit = $db_synchronous_commit로 대체
I, [2025-02-23T21:28:36.303406 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf에서 (?-mix:#?shared_buffers *=.*)를 shared_buffers = $db_shared_buffers로 대체
I, [2025-02-23T21:28:36.303714 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf에서 (?-mix:#?work_mem *=.*)를 work_mem = $db_work_mem으로 대체
I, [2025-02-23T21:28:36.304021 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf에서 (?-mix:#?default_text_search_config *=.*)를 default_text_search_config = '$db_default_text_search_config'로 대체
I, [2025-02-23T21:28:36.304333 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf에서 (?-mix:#?checkpoint_segments *=.*)를 checkpoint_segments = $db_checkpoint_segments로 대체
I, [2025-02-23T21:28:36.307838 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf에서 (?-mix:#?logging_collector *=.*)를 logging_collector = $db_logging_collector로 대체
I, [2025-02-23T21:28:36.308366 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf에서 (?-mix:#?log_min_duration_statement *=.*)를 log_min_duration_statement = $db_log_min_duration_statement로 대체
I, [2025-02-23T21:28:36.308727 #1]  INFO -- : /etc/postgresql/15/main/pg_hba.conf에서 (?-mix:^#local +replication +postgres +peer$)를 local replication postgres  peer로 대체
I, [2025-02-23T21:28:36.496135 #1]  INFO -- : /etc/postgresql/15/main/pg_hba.conf에서 (?-mix:^host.*all.*all.*127.*$)를 host all all 0.0.0.0/0 md5로 대체
I, [2025-02-23T21:28:36.496438 #1]  INFO -- : /etc/postgresql/15/main/pg_hba.conf에서 (?-mix:^host.*all.*all.*::1\/128.*$)를 host all all ::/0 md5로 대체
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 -- : 로케일 생성 중(이 작업에는 시간이 걸릴 수 있음)...
  en_US.UTF-8... 완료
생성 완료.

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 -- : /etc/redis/redis.conf에서 daemonize yes를(을)(를)  (빈 값)으로 대체
I, [2025-02-23T21:31:45.482750 #1]  INFO -- : /etc/redis/redis.conf에서 (?-mix:^pidfile.*$)를(을)(를)  (빈 값)으로 대체
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 -- : /etc/redis/redis.conf에서 (?-mix:^logfile.*$)를(을)(를) logfile ""로 대체
I, [2025-02-23T21:31:45.487000 #1]  INFO -- : /etc/redis/redis.conf에서 (?-mix:^bind .*$)를(을)(를)  (빈 값)으로 대체
I, [2025-02-23T21:31:45.487412 #1]  INFO -- : /etc/redis/redis.conf에서 (?-mix:^dir .*$)를(을)(를) dir /shared/redis_data로 대체
I, [2025-02-23T21:31:45.487861 #1]  INFO -- : /etc/redis/redis.conf에서 (?-mix:^protected-mode yes)를(을)(를) protected-mode no로 대체
I, [2025-02-23T21:31:45.488227 #1]  INFO -- : /etc/redis/redis.conf에서 # io-threads 4를(을)(를) io-threads $redis_io_threads로 대체
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 -- : /etc/service/unicorn/run에서 # postgres를(을)(를) if [ -f /root/install_postgres ]; then
  /root/install_postgres
  rm /root/install_postgres
fi
sv start postgres || exit 1
 로 대체
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  (강제 업데이트)
 * [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  (강제 업데이트)
 * [new branch]          dev/auto-screen-size-screenshots -> origin/dev/auto-screen-size-screenshots
 + ec68ffb95...a1849cd39 dev/color-palette-editor -> origin/dev/color-palette-editor  (강제 업데이트)
 * [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  (강제 업데이트)
 * [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  (강제 업데이트)
 * [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 -- : /etc/service/unicorn/run 파일에서 # redis를 if [ ! -d /shared/redis_data ]; then
  install -d -m 0755 -o redis -g redis /shared/redis_data
fi
sv start redis || exit 1로 교체합니다
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 -- : /etc/nginx/nginx.conf 파일에서 pid /run/nginx.pid;를 daemon off;로 교체합니다
I, [2025-02-23T21:32:07.254223 #1]  INFO -- : /etc/nginx/conf.d/discourse.conf 파일에서 (?m-ix:upstream[^\}]+\})를 upstream discourse { server 127.0.0.1:3000; }로 교체합니다
I, [2025-02-23T21:32:07.254567 #1]  INFO -- : /etc/nginx/conf.d/discourse.conf 파일에서 (?-mix:server_name.+$)를 server_name _ ;로 교체합니다
I, [2025-02-23T21:32:07.254851 #1]  INFO -- : /etc/nginx/conf.d/discourse.conf 파일에서 (?-mix:client_max_body_size.+$)를 client_max_body_size $upload_size ;로 교체합니다
I, [2025-02-23T21:32:07.255150 #1]  INFO -- : /etc/nginx/nginx.conf 파일에서 (?-mix:worker_connections.+$)를 worker_connections $nginx_worker_connections ;로 교체합니다
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 -- : 비동기 프로세스 종료 중
I, [2025-02-23T21:32:11.694216 #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 pid: 42 프로세스에 INT 전송
I, [2025-02-23T21:32:11.694264 #1]  INFO -- : exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 109 프로세스에 TERM 전송
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 실행이 return #<Process::Status: pid 291 exit 234>와 함께 실패했습니다.
실패 위치: /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

LXC 컨테이너는 최신 업데이트가 설치된 Debian bullseye를 사용하고 있습니다.

Discourse가 JS 패키지 관리 도구로 PNPM으로 전환했으므로, PNPM으로 전환하는 올바른 방법은 다음과 같습니다.

  1. PNPM이 설치되어 있는지 확인: pnpm --version
  2. 설치되어 있지 않다면 npm을 사용하여 설치: npm install -g pnpm
  3. 기존 의존성 정리:
    rm -rf /var/www/discourse/node_modules
    rm -rf /var/www/discourse/app/assets/javascripts/*/node_modules
  4. 최신 코드 가져오기:
    cd /var/discourse
    git pull
  5. Discourse 재빌드: ./launcher rebuild app

4번 항목과 git pull은 필요하지 않습니다. 재빌드 시 자동으로 처리되므로요.

지금은 그렇게 되지만, 이전에는 그러지 않았기 때문에 이 조언은 아주 오래된 설치 환경에서도 적용됩니다.

음, 혹시 오래된 인스턴스가 아직 남아 있는 건가요? :man_shrugging: 크게 문제될 일은 아니지만요.

업그레이드 중 문제가 생길 때 그 원인이 매우 오래된 버전을 사용하고 있기 때문인 경우가 있어서 이 점을 언급합니다. 따라서 바로 이런 스레드에서 최대한 견고한 해결책을 제시해야 합니다.

설치된 지 얼마나 되셨나요? 이전에 성공적으로 업그레이드한 적이 있으신가요? 운영체제(OS)는 얼마나 오래 사용 중이신가요?

때로는 더 이상 호환되지 않는 확장 프로그램 때문에 문제가 발생할 수 있으며, 이 경우 app.yml의 신중하게 편집된 버전을 공유하는 것이 권장됩니다. 여기서는 그런 문제가 될 가능성이 높지 않은 것 같습니다.

모든 지원에 감사드립니다. 불행히도 문제는 해결되지 않았습니다.

새로운 사용자를 위해 다음을 추가하는 것도 가치가 있을 수 있습니다:

  1. 컨테이너 진입 (예: ./launcher enter app)

그래서 그렇게 했습니다. 그리고 pnp는 이미 설치되어 있었습니다:

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

위에서 언급했듯이 이미 수행했지만, 문제는 해결되지 않았습니다.

Discourse는 2023년 4월에 설치되었습니다.
3.4.0.beta3까지(포함하여) 성공적으로 업그레이드했습니다.
위에서 언급했듯이, OS는 최신 업데이트가 설치된 Debian bullseye를 사용하는 LXC 컨테이너입니다.

설치된 유일한 확장 프로그램은 Private Topics Plugin 입니다 (여전히 유지보수 중이며, 제 쪽에서도 각 Discourse 업데이트에 맞춰 최신 상태로 유지하고 있습니다).

다음과 같습니다:

## 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"

도움을 주시면 감사하겠습니다.

현재 Debian bookworm으로 업데이트를 시도했지만, 여전히 오류가 발생합니다. 혹시 아이디어가 있으신 분 계신가요?

정확히 동일한 오류 메시지가 나타납니까?

?

네, 현재 출력은 다음과 같습니다:

# ./launcher rebuild app
x86_64 아키텍처 감지됨.
런처가 최신인지 확인 중
런처가 최신입니다
이전 컨테이너 중지 중
+ /usr/bin/docker stop -t 600 app
app
2.0.20250226-0128: discourse/base에서 가져오는 중
Digest: sha256:6f18aa2cd22bba0deb91d69194e577d4f96130ad555ae8ec646a8792cbfe37db
Status: 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 -- : 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 -- : /etc/postgresql/15/main/postgresql.conf에서 data_directory = '/var/lib/postgresql/15/main'을 data_directory = '/shared/postgres_data'로 대체하는 중
I, [2025-03-06T16:11:32.742156 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf에서 (?-mix:#?listen_addresses *=.*)을 listen_addresses = '*'로 대체하는 중
I, [2025-03-06T16:11:32.742501 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf에서 (?-mix:#?synchronous_commit *=.*)을 synchronous_commit = $db_synchronous_commit로 대체하는 중
I, [2025-03-06T16:11:32.742892 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf에서 (?-mix:#?shared_buffers *=.*)을 shared_buffers = $db_shared_buffers로 대체하는 중
I, [2025-03-06T16:11:32.743202 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf에서 (?-mix:#?work_mem *=.*)을 work_mem = $db_work_mem으로 대체하는 중
I, [2025-03-06T16:11:32.743514 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf에서 (?-mix:#?default_text_search_config *=.*)을 default_text_search_config = '$db_default_text_search_config'로 대체하는 중
I, [2025-03-06T16:11:32.743832 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf에서 (?-mix:#?checkpoint_segments *=.*)을 checkpoint_segments = $db_checkpoint_segments로 대체하는 중
I, [2025-03-06T16:11:32.747361 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf에서 (?-mix:#?logging_collector *=.*)을 logging_collector = $db_logging_collector로 대체하는 중
I, [2025-03-06T16:11:32.747916 #1]  INFO -- : /etc/postgresql/15/main/postgresql.conf에서 (?-mix:#?log_min_duration_statement *=.*)을 log_min_duration_statement = $db_log_min_duration_statement로 대체하는 중
I, [2025-03-06T16:11:32.748277 #1]  INFO -- : /etc/postgresql/15/main/pg_hba.conf에서 (?-mix:^#local +replication +postgres +peer$)을 local replication postgres  peer로 대체하는 중
I, [2025-03-06T16:11:32.975264 #1]  INFO -- : /etc/postgresql/15/main/pg_hba.conf에서 (?-mix:^host.*all.*all.*127.*$)을 host all all 0.0.0.0/0 md5로 대체하는 중
I, [2025-03-06T16:11:32.975566 #1]  INFO -- : /etc/postgresql/15/main/pg_hba.conf에서 (?-mix:^host.*all.*all.*::1\/128.*$)을 host all all ::/0 md5로 대체하는 중
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 -- : 로케일 생성 중(시간이 걸릴 수 있음)...
  en_US.UTF-8... 완료
생성 완료.

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 -- : /etc/redis/redis.conf에서 daemonize yes을(를)  으로 대체하는 중
I, [2025-03-06T16:14:53.289163 #1]  INFO -- : /etc/redis/redis.conf에서 (?-mix:^pidfile.*$)을(를)  으로 대체하는 중
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 -- : /etc/redis/redis.conf에서 (?-mix:^logfile.*$)을(를) logfile ""로 대체하는 중
I, [2025-03-06T16:14:53.292587 #1]  INFO -- : /etc/redis/redis.conf에서 (?-mix:^bind .*$)을(를)  으로 대체하는 중
I, [2025-03-06T16:14:53.293010 #1]  INFO -- : /etc/redis/redis.conf에서 (?-mix:^dir .*$)을(를) dir /shared/redis_data로 대체하는 중
I, [2025-03-06T16:14:53.293469 #1]  INFO -- : /etc/redis/redis.conf에서 (?-mix:^protected-mode yes)을(를) protected-mode no로 대체하는 중
I, [2025-03-06T16:14:53.293836 #1]  INFO -- : /etc/redis/redis.conf에서 # io-threads 4을(를) io-threads $redis_io_threads로 대체하는 중
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 -- : /etc/service/unicorn/run에서 # postgres을(를) if [ -f /root/install_postgres ]; then
  /root/install_postgres
  rm /root/install_postgres
fi
sv start postgres || exit 1
 으로 대체하는 중
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 -- : /etc/service/unicorn/run에서 # redis을(를) if [ ! -d /shared/redis_data ]; then
  install -d -m 0755 -o redis -g redis /shared/redis_data
fi
sv start redis || exit 1로 대체하는 중
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 -- : /etc/nginx/nginx.conf에서 pid /run/nginx.pid;을(를) daemon off;로 대체하는 중
I, [2025-03-06T16:15:15.650801 #1]  INFO -- : /etc/nginx/conf.d/discourse.conf에서 (?m-ix:upstream[^\}]+\})을(를) upstream discourse { server 127.0.0.1:3000; }로 대체하는 중
I, [2025-03-06T16:15:15.651132 #1]  INFO -- : /etc/nginx/conf.d/discourse.conf에서 (?-mix:server_name.+$)을(를) server_name _ ;로 대체하는 중
I, [2025-03-06T16:15:15.651408 #1]  INFO -- : /etc/nginx/conf.d/discourse.conf에서 (?-mix:client_max_body_size.+$)을(를) client_max_body_size $upload_size ;로 대체하는 중
I, [2025-03-06T16:15:15.651738 #1]  INFO -- : /etc/nginx/nginx.conf에서 (?-mix:worker_connections.+$)을(를) worker_connections $nginx_worker_connections ;로 대체하는 중
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

저희 서버에서는 이 문제를 재현할 수 없습니다. 사용 중인 서버에 대해 더 자세한 정보를 공유해 주시겠습니까? VPS 제공업체, 운영체제 및 버전, 그리고 docker info 명령의 출력 결과를 알려주세요.

LXC 컨테이너는 8개의 Intel(R) Xeon(R) CPU W3550 @ 3.07GHz가 장착된 하드웨어에서 Proxmox VE 7.4-19 (커널 Linux 5.15.158-2-pve #1 SMP PVE 5.15.158-2) 환경으로 실행되고 있습니다.

Debian 12 (Bookworm) 64bit입니다. 오늘早些 Debian 11 (Bullseye)에서 업데이트했습니다. (Turnkey Linux 17 가전입니다.)

# 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

문제를 해결하는 데 도움이 되는 추가 정보를 기꺼이 제공하겠습니다.

와, 15년 이상 된 CPU네요. 과거에 오래된 CPU로 인해 문제가 발생했던 적이 있지만, 이번에는 그 문제가 아닌 것으로 보입니다.

즉, 이런 구조인가요?

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

그래도 여전히 잘 돌아가고 있죠. :wink: 지속가능성이 실제로 중요한 주제이긴 하지만, 이 시스템은 테스트용으로 의도된 것이었고, 이제 Discourse를 업데이트한 후 최신적이고 더 적합한 하드웨어를 갖춘 프로덕션 PVE 클러스터로 이전하는 것이 목표입니다.

네. PVE는 베어메탈에서 실행되고 있습니다. PVE 내부에서는 CT(LXC) 게스트를 사용하여 TKL 가전을 실행하고 있으며, 이를 통해 Docker로 Discourse를 설치했습니다.
(참고: 프로덕션 PVE 클러스터에서는 Discourse Docker를 실행하기 위해 더 권장되는 방식인 바닐라 Debian이 설치된 VM(Qemu)을 사용하려는 계획입니다)

v3.4.0.beta3의 pnpm install은 정상적으로 작동했지만, 최신 버전의 Discourse는 그렇지 않다는 말인가요? 매우 이상하네요!

한 가지 염두에 둘 점은, 다른 패키지 매니저와 달리 pnpm이 파일 시스템에서 "하드 링크(hard links)"를 매우 많이 사용한다는 것입니다. 이는 일부 파일 시스템 유형에서 문제를 일으킬 수 있습니다… 비록 하드 링크 기반 전략이 아닌 방식으로 자동으로 폴백(fallback)하도록 되어 있긴 하지만요. 자세한 내용은 여기에서 확인할 수 있습니다.

표준 설치와 비교해 보면:

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

즉, overlay2는 동일합니다. 하지만 백킹 파일 시스템(backing filesystem)이 다르네요… 이것이 이 유형의 문제에 영향을 미칠지 저는 잘 모르겠습니다.

네.

어떻게/무엇을 디버깅해야 하는지 알려주시면 추가 정보를 제공할 준비가 되어 있습니다…

영향을 받은 설치 환경은 테스트용 설치입니다. 동일한 하드웨어/설정에서 운영용 설치 환경을 실행 중인데(현재 업데이트를 망설이고 있습니다…)…