데이터베이스 파일이 서버와 호환되지 않음 (Linode 내에서 업데이트 중)

Error Updating from 3.4.0.beta3-dev to 3.4.0.beta3 에 설명된 증상이 있습니다.
오류 내용만 다릅니다.

그림을 인용할 수 없습니다.

하지만 기존 postgres_data_old 디렉토리를 삭제해야 할 것 같습니다. 공간이 충분하고 걱정이 많다면 이름을 변경해도 됩니다.

웹리시 스크린 출력을 복사하는 방법을 모르겠습니다

이것이 제 메시지의 핵심 부분입니다.

아마도 먼저 그것이 오래된 것인지를 확인해 보세요.

 ls -l /var/discourse/shared/standalone/

그리고 백업 디렉토리의 날짜가 오늘이 아님을 확인하세요.

디스크 공간이 충분하다면 다음과 같은 작업을 수행할 수 있습니다.

cd /var/discourse
cd shared/standalone
mv postgres_data_old postgres_data_delete_me

그리고 다시 시도해 보세요.

역시 안 되네요.
Upgrade failed spectacularily 이 글과 중복된 문제인 것 같습니다.

app.yml 파일의 내용을 공유해 주시겠어요? 게시 전에 민감한 정보는 마스킹해 주세요.

root@localhost: /var/discourse/containers

## 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"
  - "templates/web.ratelimited.template.yml"
## Uncomment these two lines if you wish to add Lets Encrypt (https)
  - "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: "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:
  LANG: 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: 4

  ## TODO: The domain name this Discourse instance will respond to
  DISCOURSE_HOSTNAME: <mydomain>

  ## 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: <myemail>

  ## TODO: The SMTP mail server used to validate new accounts and send notifications
  DISCOURSE_SMTP_ADDRESS: <mymailorg>
  DISCOURSE_SMTP_PORT: <myport>
  DISCOURSE_SMTP_USER_NAME: <mysmpremail>
  DISCOURSE_SMTP_PASSWORD: <mypassword>
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, default true)

  ## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
  LETSENCRYPT_ACCOUNT_EMAIL: <myemail>

  ## The CDN address for this Discourse instance (configured to pull)
  ## see https://meta.discourse.org/t/14857 for details
  #DISCOURSE_CDN_URL: //discourse-cdn.example.com

## 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/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-math.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"
 

Docker 버전을 확인해 주시겠습니까? 권장 버전인 24.0.7보다 오래된 버전을 사용 중이시라면, Docker를 업데이트한 후 다시 시도해 보시는 것을 권장합니다.

다른 주제에서도 유사한 문제가 보고되었으며, 해당 사례에서는 Docker를 업데이트함으로써 문제가 해결된 것으로 보입니다.

Docker 버전 20.10.7, 빌드 f0df350

cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.7 LTS (Xenial Xerus)"

해당 토픽에서 보고된 것과 유사한 Docker 문제를 겪고 계실 수 있습니다.

Ubuntu와 Docker를 모두 최신 버전으로 업데이트한 후 다시 빌드를 시도해 보시길 권장합니다.

기존 app 컨테이너가 여전히 존재하고 shared/standalone/postgres_data의 기존 데이터 파일을 수정하지 않았다면, 그동안 기존 컨테이너에서 사이트를 시작하기 위해 ./launcher start app을 실행해 보실 수 있습니다.

Ubuntu를 업데이트하기 위한 단계를 거쳐 마침내 이 화면에서 를 눌렀습니다.


그러나 화면은 여기에서 멈춰 버렸습니다.

다시 연결해 보니 Ubuntu 18.0.4.6 LTS (Bionic Beaver)가 설치되어 있습니다

최신 OS로 새 VM을 만들면 훨씬 쉬울 것입니다. 18.04는 이미 지원 종료(EOL)가 되었으며, 20.04도 4월에 지원이 종료됩니다.

최신 백업이 있다면 새 서버를 생성하고 해당 백업을 복원하여 postgres 업그레이드 관련 문제를 완전히 피할 수 있습니다.

Discourse에는 OS에 postgres가 설치되어 있을 필요가 없습니다. 이것이 새로운 OS로 시작해야 하는 또 다른 이유입니다.

Jay, 감사합니다.
백업 Linode를 다른 Linode(linode2)로 복원하는 데 성공했습니다.
이제 linode2에서 Discourse를 실행하여 Discourse가 저에게 백업을 이메일로 보내도록 해야 합니다.
linode2에 대한 새로운 DNS 설정을 만들었지만, 해당 주소를 접속하면 502 Bad Gateway 오류가 발생합니다.
잠시 기다려야 하는 걸까요?
이상하게도 discbak.softwarebydesign.com.au(linode2)가 현재 discourse.softwarebydesign.com.au(원래 Linode)로 리다이렉트되고 있습니다.

scp/rsync를 사용하여 백업을 복사할 수 있습니다. 더 쉽고 빠릅니다(이 용어가 무엇을 의미하는지 모른다면 제외).

실제로는 새로운 OS(오래된 OS가 설치된 서버의 백업이 아닌)로 새로운 VM을 생성하고, Move a Discourse site to another VPS with rsync에 설명된 대로 해당 VM으로 마이그레이션하는 것이 좋습니다. 방금 복사한 서버에도 소유권 문제가 있었습니다. 당신도 비슷한 문제를 겪을 가능성이 높습니다.

discbak가 다른 서버와 동일한 이미지를 실행 중이라면, http://로 방문한 경우를 제외하고는 인증서 오류가 발생하고 HOSTNAME에 설정된 값으로 리다이렉트될 것으로 예상됩니다.

솔직히 말해, 내가 무엇을 하고 있는지 잘 모르겠습니다.

Ubuntu 24.0.1 LTS가 설치된 새로운 VPS를 생성했으며, 다음 명령어 단계까지 진행했습니다.

rsync -rvz example.com:/var/discourse /var

업그레이드에 실패하여 example.com은 502 bad gateway 오류를 반환하고 있습니다.
어떻게든 접근 권한을 부여하는 방법을 알아내기 위해 시행착오를 겪고 있습니다.