v3.5.3로 업그레이드한 후 관리자 페이지에서 오류 발생

v3.5.2에서 v3.5.3으로 업그레이드한 후 관리자 페이지에 오류가 발생했습니다.

또한 다음과 같은 오류가 보고되었습니다.

loader.js:247 Uncaught (in promise) Error: Could not find module discourse/admin/models/admin-plugin imported from discourse/plugins/docker_manager/discourse/models/repo
at loader.js:247:1
at a (loader.js:258:1)
at s.findDeps (loader.js:168:1)
at a (loader.js:262:1)
at s.findDeps (loader.js:168:1)
at a (loader.js:262:1)
at requireModule (loader.js:24:1)
at n.i [as getRoute] (index.ts:121:18)
at p._getQPMeta (index.ts:101:20)
(anonymous) @ loader.js:247
a @ loader.js:258
(anonymous) @ loader.js:168
a @ loader.js:262
(anonymous) @ loader.js:168
a @ loader.js:262
requireModule @ loader.js:24
i @ index.ts:121
_getQPMeta @ index.ts:101

플러그인을 비활성화하니 정상적으로 작동했지만, 어떤 플러그인에 문제가 있는지 특정할 수 없습니다. 확인해 주실 수 있을까요?

안전 모드에서 "비공식 클라이언트 플러그인 커스텀 비활성화"를 선택해도 문제가 여전히 발생하지만, "모든 클라이언트 플러그인 커스텀 비활성화"를 선택하면 정상적으로 작동합니다.

3.5.3은 더 이상 지원되지 않습니다. https://releases.discourse.org 을 참조하십시오.

네이트가 말했듯이, 그건 이제 아주 오래된 버전입니다. 커맨드 라인 업데이트를 시도해 보세요.

어떤 버전으로 업그레이드하는 것이 좋을까요? 너무 많은 버전을 건너뛰고 업그레이드하면 호환성 문제가 더 많이 발생할 수 있나요?

2026.1.1로 업그레이드한 후 바로 실패했습니다

/logs에서 의심스러운 메시지를 확인하세요.

웹 업그레이드가 실패하면, ssh를 통해 root로 로그인하여 명령줄 업그레이드를 수행해야 합니다.

위 답변에서 제안한 대로 커맨드 라인으로 재빌드를 시도해 볼 수 있을까요? 그렇게 하면 문제가 해결될 가능성이 높습니다. 버전 변경으로 인한 문제는 본 적이 없거든요..

구체적으로 어떤 명령어를 말씀하시는 건가요? 제 서비스는 Docker 이미지로 패키징된 후 원격 서버의 k8s 클러스터에 배포되어 있습니다. web_only 방식으로 배포하고 있습니다.

또한 관리자 페이지에서 오류가 발생하면 다음과 같은 에러가 표시됩니다:

Discourse를 설치한 경로로 이동하여 ./launcher rebuild app를 입력하세요. discourse_docker가 있는 곳이라면 어디든 됩니다. 스크립트를 /var/discourse에 두는 것이 "권장"되는 위치라고 생각하지만, 사용자 환경에 따라 다를 수 있습니다.

이것은 지원되지 않습니다. 최신 이미지를 로드하기 위해 무언가를 수행해야 합니다. 데이터베이스 마이그레이션이 필요합니다. 여러 버전을 업그레이드하는 것에는 일반적으로 문제가 없습니다.

데이터베이스 마이그레이션이 실패한 것으로 보입니다. 아래와 같은 오류가 발생했습니다.

TOP => db:migrate => assets:precompile:asset_processor │
│ full trace by running task with --trace) │
│ executing /etc/runit/1.d/00-ensure-links │
│ executing /etc/runit/1.d/01-cleanup-web-pids │
│ executing /etc/runit/1.d/anacron │
│ executing /etc/runit/1.d/cleanup-pids │
│ stale PID files │
│ executing /etc/runit/1.d/copy-env │
│ runsvdir, PID is 1126 │
│ aborted! │
│ pnpm -C=frontend/asset-processor node build.js (Discourse::Utils::CommandError) │
│ Failed to switch pnpm to v10.28.0. Looks like pnpm CLI is missing at “/home/discourse/.local/share/pnpm/.tools/pnpm/10.28.0/bin” or is incorrect │
│ /home/discourse/.local/share/pnpm/.tools/pnpm/10.28.0/bin/pnpm EACCES

구체적인 pnpm 경로를 확인해 보니 경로는 존재하지만 pnpm.cjs 파일에 실행 권한이 없어 오류가 발생한 것을 확인했습니다.

drwxrwxrwx root root /
drwxr-xr-x root root home
drwxr-x— discourse discourse discourse
drwxr-x— discourse discourse .local
drwxr-x— discourse discourse share
drwxr-x— discourse discourse pnpm
drwxr-x— discourse discourse .tools
drwxr-x— discourse discourse pnpm
lrwxrwxrwx discourse discourse 10.28.0 → 10.28.0_tmp_9_0
drwxr-x— discourse discourse 10.28.0_tmp_9_0
drwxr-x— discourse discourse bin
lrwxrwxrwx discourse discourse pnpm → ../node_modules/pnpm/bin/pnpm.cjs
drwxr-x— discourse discourse ..
drwxr-x— discourse discourse node_modules
drwxr-x— discourse discourse pnpm
drwxr-x— discourse discourse bin
-rw-r----- discourse discourse pnpm.cjs

이후 이미지에서 corepack을 사용하여 해당 버전의 pnpm을 사전 설치한 후 데이터베이스 마이그레이션이 성공했습니다. 현재 서비스는 정상적으로 작동하고 있습니다.