AWS EC2에서 Discourse 설정이 기본 IPv4 DNS와 함께 작동하지 않습니다

디스코러스 커뮤니티 여러분께,

저는 디스코러스를 처음 사용하며, AWS EC2 인스턴스에서 디스코러스를 설정하는 것을 테스트 중입니다. 설정 방법은 discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub 문서를 따르고 있습니다. 하지만 서버를 실행하지 못했습니다. 제가 겪고 있는 문제는 다음과 같습니다:

모든 리소스를 구매하기 전에 도메인 이름 없이 웹사이트를 먼저 테스트해 보고 싶었기 때문에, 해당 인스턴스의 Public IPv4 DNS를 디스코러스의 호스트명으로 사용했습니다. 예를 들어 https://ec2_ip_address.us-west-1.compute.amazonaws.com/ 처럼요.
인스턴스의 보안 그룹을 통해 80번 및 443번 포트를 개방했으며, 공개 네트워크에서 이 포트들이 접근 가능한지 확인했습니다(파이썬 단순 서버로 테스트함).
하지만 ./discourse-setup 또는 ./launcher rebuild app 명령으로 디스코러스 서버를 시작한 후 브라우저에서 "이 사이트에 연결할 수 없습니다"라는 오류가 발생합니다.

디스코러스 닥터(Discourse doctor)를 실행해 보았는데, 다음과 같은 결과가 반환됩니다.

Discourse version at ec2-ip_address.us-west-1.compute.amazonaws.com: NOT FOUND
Discourse version at localhost NOT FOUND

이메일 설정이 정상적으로 작동하는지는 100% 확신하지 못하지만, 사이트 접근성은 이메일과 별개의 문제라고 가정하고 있습니다.

누구라도 제가 놓친 부분이 무엇인지, 또는 이 문제를 어떻게 디버깅할 수 있는지 알려주실 수 있을까요?

감사합니다!

메타 디스코urs 커뮤니티에 오신 것을 환영합니다 :slightly_smiling_face:

무관할 수도 있지만, 여기에서 일관성이 없는 부분을 발견했습니다:

조너선 씨,

확인해 주셔서 감사합니다. 여기서는 IP 주소를 생략했는데, URL은 정확합니다.

호스트 이름에서 Not found 상태가 표시되는 이유는 대부분 사이트가 아직 라이브 상태가 아니기 때문입니다. discourse-doctor 로그에서 더 많은 정보를 공유해 주셔야 합니다.

리빌드/부트스트랩이 정상적으로 완료됩니까?

EC2 인스턴스가 사양이 낮으면 discourse가 완료되는 데 시간이 걸릴 수 있습니다(일부 경우 약 3~5분).

빌드가 정상적으로 완료되는지 확인한 후, docker ps를 사용하여 컨테이너가 실행 중인지 그리고 80 및 443 포트에서 리스닝 중인지 확인해야 합니다. 이 사항이 확인되면 문제는 설치 자체에 있는 것이 아니라 AWS 보안 그룹에 있는 것입니다.

호스트명을 통해 서버에 접근할 수 있는지 확인해 주시겠습니까?

호스트 이름에서 Not found 상태가 표시되는 이유는 대부분 사이트가 아직 운영되지 않기 때문입니다. discourse-doctor 로그에서 더 많은 정보를 공유해 주셔야 합니다.

동의합니다. 빌드 로그를 주의 깊게 살펴보고 문제가 있는지 확인하겠습니다. 로그에 오류가 있을 경우 어떻게 디버깅할 수 있나요?

호스트 이름으로 서버에 접근할 수 있는지 확인해 주시겠어요?

네, 호스트 이름을 확인했고 브라우저에서 80번 포트와 443번 포트 모두 접근 가능합니다. 단순히 몇 가지 파일을 서빙하는 Python HTTP 서버를 만들어 보았으며, 브라우저에서 응답을 확인할 수 있습니다.

로그에서 뭔가 확인되나요? 예를 들어

/var/discourse/shared/standalone/logs/var-log/nginx/error.log

Let’s Encrypt와 AWS 관련 문제가 있을 것입니다. 도메인이 직접 소유한 것이더라도, 여러 번 재구축했다면 할당량을 소진했을 수 있습니다.

그걸 언급해 주시니 참 재미있네요. :slightly_smiling_face: 사실 제가 이 주제에 처음 관심을 갖게 된 이유이기도 합니다. 저는 https://community.letsencrypt.org에서 많은 분들을 도와드리고 있으며, 이 주제가 제 전문 분야에 해당한다고 생각해 도움을 드리고자 합니다. 제 도구를 적용하려면 실제 도메인 이름을 알아야 합니다.

@ys2843

  • 이후에 어떻게 됐는지 업데이트해 주실 수 있나요? 저는 똑같은 문제에 막혀 있습니다.

AWS 도메인 이름을 사용하려고 하고 있나요? 그러지 마세요. 자체 도메인을 사용하세요.

로그를 확인해 보셨나요?

수차례 리빌드를 수행했다면 Let’s Encrypt의 요청 제한에도 부딪히게 됩니다.

@pfaffman

배경: AWS에서 개념 증명(PoC)을 위해 최소한의 Discourse 포럼을 설정하고 있으며, 비용을 최소화하려는 중입니다.

godaddy에서 3달러에 도메인 이름을 등록할 수 있습니다. 시간이 시간당 3달러보다 더 가치 있다면 도메인을 등록해야 합니다. 그리고 도메인 등록할 3달러조차 없다면 ec2도 감당할 수 없습니다.

@pfaffman

  • 가격 문제와 관련해 U의 의견에 동의합니다.
  • 기술적인 관점에서 우회 방법이 있을까요???

물론이죠! .amazonaws.com 도메인 이름을 사용하는 다른 사람이 Let’s Encrypt를 사용하고 있는지 확인한 후 일주일 정도 기다려 보세요. 도메인을 등록하고 싶지 않다면, 다음으로 시도해 볼 방법입니다.