유지보수 페이지 우회 방법 - 이렇게 할 수 있을까요?

업데이트를 위한 웹 인터페이스가 항상 작동한다고 가정하지 않는 것이 좋습니다. 웹페이지를 통한 업데이트가 항상 성공하는 것은 아닙니다. 특정 업데이트(매우 최신 데이터베이스 버전 업데이트 등)는 커맨드 라인에서 재빌드(rebuild)를 요구합니다. 이는 SSH를 통해 서버에 접속하여 커맨드 라인에서 재빌드하는 것을 의미합니다.

많은 관리자들과 달리, 저는 보통 웹 인터페이스를 사용하여 업데이트를 하지만, 필요할 경우 수동으로 업데이트를 실행할 수 있도록 쉘을 열어두곤 합니다.

그래서 저는 Discourse 봇의 도움으로 전체 과정을 거쳤고, 덕분에 조금 더 수월했습니다. 원래 주제인 "스탠드얼론 컨테이너에서 웹과 데이터 컨테이너로 분리"이 10년 전에 작성된 것 같아서, 실수를 하고 싶지 않았거든요.

몇 가지 질문과 메모를 남긴 끝에, 이제 상황이 조금 더 이해가 됩니다. 제 설치 환경이 정상적으로 실행되고 있으니, 모든 것이 제대로 설정된 것 같네요…?

봇은 SSH가 필요한 업데이트를 수행할 때 아래 순서를 따르라고 했습니다:

# 이 과정은 약 20분 정도 걸립니다(첫 번째 실행 시). 이후에는 보통 5~15분 정도 소요됩니다.
# (정확한 첫 부트스트랩 시간이 아닙니다 — 도커는 재빌드 시 레이어를 캐시합니다)
sudo ./launcher bootstrap web_only

# 부트스트랩이 성공적으로 완료된 후, 다음을 실행하세요:
sudo ./launcher destroy web_only && sudo ./launcher start web_only

# 가끔 디스크 공간을 확인하세요:
df -h

# 사용하지 않는 오래된 이미지로 인해 디스크 공간이 부족해진 경우:
sudo ./launcher cleanup

이렇게 하면 준비가 끝납니다.

해당 “연 1회” 업데이트는 조금 더 복잡하지만, 이 부분도 메모를 해 두었습니다. 지금은 사용하지 않을 것이므로, 나중에 이 메모들을 정리할 필요가 있을 뿐입니다.

위 워크플로우가 올바른가요?

피드백을 공유해 주셔서 모두 감사드립니다!

사용 가능한 각 업데이트 옵션을 언제 사용해야 하는지 고려하도록 멍청한 규칙(dumb rule)을 수정해 주시겠어요?

저는 전문가가 아니므로, 이 주제에 대해 훨씬 더 잘 아는 다른 분들이 더 좋은 답변을 드릴 수 있을 것입니다. 하지만 제 경험상 절대 웹 인터페이스가 성공할 것이라고 기대하지 마세요. 항상 커맨드 라인에서 재빌드할 준비를 해두세요. 최근 여기에 자세히 설명된 PostgreSQL 15에서 18로의 업그레이드는 웹 인터페이스 업그레이드로는 도저히 해결할 수 없는 상황이었습니다.

그렇게 어렵지 않습니다. 웹 UI 업그레이드는 편의를 위한 기능으로 생각하세요. 작동하면 좋겠지만, 작동하지 않을 경우를 대비해 준비를 해두세요. 적어도 작동하지 않을 때는 무슨 일이 발생했는지와 어떻게 수정해야 하는지에 대한 유용한 설명을 제공합니다. 여기 있는 많은 프로 Discourse 관리자분들은 애초에 시도조차 하지 말라고 조언합니다. 제 포럼은 트래픽이 적은 소규모 포럼이라 도박을 걸 여유가 있지만, 여러분에게는 그런 사치가 없을 수 있습니다.

요즘 여기에서 많이 글을 쓰지는 않지만, 듀얼 컨테이너 설정에 도움이 필요하거나 질문이 있다면 편하게 DM을 보내주세요. 저는 Cloudflare CDN 뒤에 S3 호환 R2 오브젝트 스토리지를 사용하는 두 개의 독립적인 듀얼 컨테이너 포럼을 운영하고 있습니다. 네, 싱글 컨테이너보다는 조금 더 복잡하지만, 많은 분들이 생각하는 것만큼 어렵지는 않습니다. 유지보수가 매우 쉽고, bash 스크립트를 사용하면 업데이트도 훨씬 더 쉽게 할 수 있습니다.