공식 GitHub 페이지에서 Discourse를 설치하려고 합니다. 사용 중인 환경은 최신 AWS AMI 기반의 Ubuntu 22.04 Server LTS입니다. 네트워크는 구성되어 있으며, 호스트에 FQDN이 연결되고 탄력적 IP(Elastic IP)가 할당되어 있습니다.
모든 배포는 정상적으로 완료되며, 포트 80의 nginx 인스턴스에 연결할 수도 있습니다. 하지만 포트 443으로 연결할 수 없고, nginx error.log에 다음과 같은 오류가 반복적으로 표시됩니다:
discourse-setup을 실행해 보셨나요? 이 명령은 DNS가 서버를 가리키는지, 포트가 열려 있는지 확인하기 위해 자체적으로 연결을 시도하지만, 상당히 거친 테스트입니다.
DNS와 포트가 올바르게 설정되지 않은 상태에서 rebuild를 몇 번 이상 실행하면 Let’s Encrypt의 속도 제한(rate limit)에 도달하게 됩니다. 만약 그런 상황이라면(그렇게 추정됩니다), 일주일간 기다리거나 다른 서브도메인을 사용해야 합니다. (원하는 서브도메인과 다른 도메인에 대해 인증서를 요청하는 복잡한 지침을 따르는 것도 방법입니다.)
docker logs app을 실행하면 acme가 인증서를 가져오지 못하는 부분이 어디인지 확인할 수 있을 것입니다.
저도 같은 문제에 부딪혔는데, 무엇이 잘못되었고 어떻게 수정해야 하는지 파악하는 데 며칠과 수많은 시간이 걸렸습니다. 따라서 이 정보가 제이슨님과 같은 문제를 겪고 있는 다른 분들에게 도움이 되기를 바랍니다.
./discourse-setup 실행 중에 다음과 같은 오류가 발생했습니다:
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error
이 오류를 수정하기 위해 여러 차례 시도했는데, 다음과 같은 방법들을 사용했습니다: ./discourse-doctor를 실행했지만 성공하지 못했습니다. ./launcher rebuild app를 실행했지만 성공하지 못했습니다. docker exec -it app /bin/bash를 사용하여 컨테이너 내에서 트러블슈팅을 시도했습니다.
컨테이너 이미지에는 트러블슈팅에 사용할 도구가 제한되어 있어, 다음 명령어로 로그를 읽는 것만 수행했습니다: less /var/log/nginx/error.log
여기서 [emerg] 2832#2832: cannot load certificate라는 메시지가 포함된 수많은 로그를 확인했습니다.
어떤 이유에서인지 결정적 증거(smoking gun)를 찾지 못했지만, 컨테이너를 종료하고 호스트에서 다음 명령어를 입력했을 때: ./launcher logs app
더 많은 데이터를 볼 수 있었고, 갑자기 다음과 같은 오류를 발견했습니다: “Error creating new order :: too many certificates (5) already issued for this exact set of domains in the last 168 hours , retry after 2024-08-10T12:58:12Z:”
이 문제에 대한 우회책을 검색해 보았지만, 결국 지정된 시간 동안 기다리기로 결정했습니다.
대기 시간이 지난 후 다시 시도했습니다: ./launcher rebuild app
이번에는 성공적으로 실행되어 SSL 인증서(*.cer)가 정상적으로 생성되었고, 제 사이트도 정상적으로 구동되었습니다.
이 이야기의 교훈은, 빈 *.cer 인증서가 생성되는 경우 호스트에서 다음 명령어를 사용하여 컨테이너 로그를 확인해야 한다는 것입니다: root@host:/var/discourse# ./launcher logs app
로그를 스크롤하여 **“too many certificates”**를 검색해 보세요.
이걸早知道했다면 며칠 간의 조사 시간을 절약할 수 있었을 텐데