Rebuild가 루프에 빠집니다

안녕하세요, Discourse를 처음 사용하다 보니 미리 죄송합니다.

/var/discourse/ 디렉토리로 이동하여 ./launcher rebuild app을 실행하면 아래에 표시된 루프가 반복됩니다.

현재 GUI는 정상적으로 작동하며, 거기서 업데이트를 실행할 수 있습니다.

구글 검색을 몇 번 해보았지만, 해결책을 설명하는 이 스레드를 찾았습니다. 제 질문은 명령줄에서도 git stash와 git pull 명령어를 사용하여 제 문제를 해결할 수 있는지에 대한 것입니다.

Ensuring launcher is up to date

Updating Launcher…

Updating a1d8d0b..69d7558

error: Your local changes to the following files would be overwritten by merge:

templates/web.ssl.template.yml

Please commit your changes or stash them before you merge.

Aborting

failed to update

Launcher updated, restarting…

x86_64 arch detected.

Ensuring launcher is up to date

Updating Launcher…

Updating a1d8d0b..69d7558

error: Your local changes to the following files would be overwritten by merge:

templates/web.ssl.template.yml

Please commit your changes or stash them before you merge.

Aborting

failed to update

Launcher updated, restarting…

template/web.ssl.template.yml 파일을 다른 이름(templates/my-web.ssl.template.yml)으로 변경하고, containers/app.yml의 templates: 섹션에서 이 파일을 사용하세요.

다음 명령을 사용하여 원래 내용을 복원하세요.

git restore templates/web.ssl.template.yml

그리고 (아마도) 더 나은 장기적인 해결책은 해당 변경 사항을 app.yml에 추가하거나, 템플릿을 /var/discourse 트리 외부의 다른 위치에 두는 것입니다.

감사합니다. 결국 서버와 Cloudflare 사이에 추가적인 암호화를 위해 이 파일을 수정하여 추가 클라이언트 인증서를 추가했습니다.

template.yml 파일을 템플릿으로 복원하는 절차를 따르면, 루프 문제를 해결할 수 있는지 확인하기 위해 재빌드를 실행할 예정입니다. 이후 같은 변경 사항을 다시 적용해도 큰 문제가 없을까요? 아니면 추후에 동일한 상황이 발생하여 같은 절차를 반복해야 할까요?

원본 템플릿을 .bak 파일로 저장해 두었기 때문에 변경 사항을 살펴볼 수 있었습니다.

아, 감사합니다. 후속 질문은 이미 답변해 주셨네요!

거의 그렇습니다. :slight_smile:

여기 또 다른 힌트가 있습니다:

음, 기대했던 것만큼 좋은 힌트는 아닌 것 같습니다. . .. https://meta.discourse.org/t/setup-multisite-configuration-with-lets-encrypt-and-no-reverse-proxy/175285에서 이루어지는 변경 사항을 살펴보세요.

현재 내 실력으로는 이 문제를 혼자 해결하기 어려운 것 같습니다. DigitalOcean 표준 설치 지침을 따랐습니다.

처음에는 app.yml 파일을 살펴보는 것이 좋겠다고 생각했고, 그렇게 web.ssl.template.yml 파일로 이어졌습니다.

추가 보안 조치를 위해 Cloudflare crt 파일을 포함하고 싶었습니다.

web.ssl.template.yml 파일을 검토하고 다음 섹션을 수정했습니다:

ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

   ssl_certificate /shared/ssl/ssl.crt;
   ssl_certificate_key /shared/ssl/ssl.key;
    ssl_client_certificate /shared/ssl/cloudflare.crt;
    ssl_verify_client on;

   ssl_session_tickets off;
   ssl_session_timeout 1d;
   ssl_session_cache shared:SSL:1m;

cloudflare.crt 파일을 /var/discourse/shared/standalone/ssl 디렉터리에 넣었고, 제가 볼 때 모든 것이 의도한 대로 작동했습니다.

app.yml 파일을 수정하여 동일한 작업을 수행하는 데 참고할 수 있는 자원이 있을까요?

대부분의 사람들이 더 이상 사용자 지정 인증서를 사용하지 않습니다. 요청하신 작업을 수행할 만한 좋은 이유가 있는지 확신은 없지만, 다음 링크를 참고해 보실 수 있습니다: Allow SSL / HTTPS for your Discourse Docker setup

주황색 구름(클라우드플레어)을 끄고, Let’s Encrypt 인증서를 발급받은 후 다시 주황색 구름을 켜는 것만으로도 충분할 것입니다. 또한 클라우드플레어 템플릿을 사용하는 것이 좋습니다.

다음 링크를 참고해 주세요: Using Discourse with Cloudflare: Best Practices

음. templates 디렉터리에서 자체 파일을 사용하는 것에 대해, discourse에서 제공되는 템플릿 이름과 충돌하지 않는 한 우려는 없습니다. 예를 들어, 스테이징 서버와 프로덕션 서버 간에 설정 조각을 공유하는 데 편리한 방법이라고 생각합니다.

@thoka와 @pfaffman에게 시간 내어 답글을 주셔서 감사합니다.

이후 git restore를 수행했습니다.

Jay가 언급했듯이 요즘은 커스텀 인증서를 사용하는 경우가 거의 없으므로, 저도 당장 이에 대한 급한 필요성을 느끼지 못하겠습니다.

또 한 번 ./launcher rebuild app을 실행했고, 런처는 문제 없이 작동했습니다.

참고로 app.yml 하단에 안내대로 Cloudflare 템플릿을 입력했는데, 런처에서 구문 오류가 발생했습니다. 이를 제거하니 모든 것이 정상으로 돌아왔습니다. Cloudflare 템플릿 없이 Cloudflare를 사용할 때 문제가 생긴 적은 없었으므로, 앞으로는 그대로 진행하겠습니다.