먼저 adplugin을 별도 설치로 보유하고 있다는 오류가 발생하여, 해당 항목을 제거했습니다.
이후 secondsite 데이터베이스를 마이그레이션하는 동안 실패한 것으로 보입니다:
2025-08-21 06:44:42.493 UTC [867] discourse@discourse_nu ERROR: must be owner of extension vector
2025-08-21 06:44:42.493 UTC [867] discourse@discourse_nu STATEMENT: ALTER EXTENSION vector UPDATE TO ‘0.7.0’;
따라서 exec에 sed를 추가하거나 replace 구문을 사용하여 해당 부분을 제거하거나 수정해야 합니다. 아마도 멀티사이트를 위해 그 토픽의 내용을 따르는 것이 여전히 필요할 것입니다(아직 작동할 것으로 생각합니다) 이제 DISCOURSE_HOSTNAME_ALIASES: www.domain.com,otherdomain.org,www.otherdomain.org를 사용하여 추가 호스트네임에 대한 인증서를 발급받을 수 있습니다.
가장 지적인 해결책은 if ($http_host != 코드에 다른 호스트네임 별명을 어떻게든 추가하는 것일 수 있습니다. 현재 그렇게 설정된 사이트가 없어서 재미로 시간을 들여 조사하고 싶지는 않습니다.
하지만 네, web ssl template에는 다음이 있습니다:
if (\$http_host != ${DISCOURSE_HOSTNAME}) {
rewrite (.*) https://${DISCOURSE_HOSTNAME}\$1 permanent;
}
결국 말씀하시는 것은, 하나의 서버에 두 개의 독립적인 포럼을 호스팅하기 위한 ‘secondsite’ 방식이 깨져 있고, 수정 대상 목록에도 포함되어 있지 않다는 것이군요.
따라서 이를 삭제하거나, 다른 호스트명도 확인하도록 하는 방법을 찾아야 합니다.
저는 컨테이너에서 해당 코드를 삭제하는 방식으로 처리해 왔지만, 컨테이너가 시작되거나 새로운 컨테이너 이미지가 생성될 때마다 해당 코드가 다시 복원됩니다. 따라서 소스 어딘가에서 수정이 이루어져야 하며, 새로운 컨테이너를 빌드할 때 app.yml에서 여러 도메인을 올바르게 확인하도록 빌드되어야 합니다. (그 3줄의 코드를 단순히 삭제하는 것보다 이것이 더 바람직할 것입니다.)
웹 SSL 템플릿을 빌드하는 코드가 app.yml에서 secondsite(그리고 thirdsite 등)를 확인하도록 업데이트되지 않는다면, 이는 app.yml에서 처리되어야 하는 문제로 보입니다. 이는 저에게만 적용되는 맞춤형 수정이 되며, 여러 포럼을 단일 서버에서 운영하는 모든 사용자를 위한 수정이 아닙니다. 특히 secondsite 방식은 현재 깨져 있는 것으로 보입니다.
현재 저는 클라이언트를 위한 대규모 시스템 마이그레이션 프로젝트 진행 중이며, 해당 사이트들은 아무튼 축구 시즌 동안 가장 활발하게 운영됩니다. 따라서 라이브 시스템을 즉석에서 수정하기보다, app.yml 수정 사항을 테스트하기 위해 테스트베드 서버를 설정해야 합니다.
세컨드 사이트(secondsite)를 도입하면 상황이 복잡해집니다. 사이트가 A도 아니고 B도 아닐 때, A 또는 B 중 하나로 변경하는 것이 올바른 조치인지 명확하지 않기 때문입니다. (이것이 Discourse에서 아직 이 문제를 다루지 않은 이유일 수 있습니다.)
결국 여러 사이트가 존재하는 경우, 해당 코드 줄을 삭제하는 것이 옳을 수 있습니다. 외부 nginx 서버는 A 또는 B와 일치하는 HTTPS 패킷만 전달해야 하기 때문입니다. HTTP를 HTTPS로 강제 전환하는 작업은 이미 외부 nginx 서버에서 이루어지고 있어야 합니다.
그것은 지원할 항목 목록에 포함된 적이 없습니다. 항상 권장되던 방법은 리버스 프록시를 사용하는 것이었습니다. 저는 리버스 프록시 없이 이를 수행하는 방법을 고안해냈습니다. 그리고 제 해킹 방식은 몇 년 전에 고장 났습니다.
리버스 프록시 없이 멀티사이트를 구성하는 것은 항상 쇼맨십에 불과했습니다. 전문가라면 SSL과 Let’s Encrypt 템플릿을 제거하고, SSL을 처리하는 리버스 프록시를 사용하는 것이 좋습니다. Cdck는 haproxy를 사용합니다. 저는 traefik을 사용해 왔습니다. Caddy는 관리가 꽤 쉽습니다. 하지만 저는 사용을 중단했는데, 이는 누군가가 자신의 사이트 CNAME을 제거하면 모든 인증서 갱신이 실패했기 때문입니다(이것이 더 이상 그런 것은 아닐 수 있으며, 이미 몇 년이 지났습니다).