Discourse를 로컬에 설치하는 방법?

프로젝트에서 포럼 솔루션 후보로 Discourse를 검토하고 있습니다.
스택을 실제로 실행하는 과정이 생각보다 복잡해서 다소 놀랐습니다.

GitHub에는 이 문서가 있는데, SMTP 서버와 도메인이 필요합니다.

또한 호스트에 스택을 직접 설치하는 과정을 설명하는 다른 가이드도 확인했습니다. 저는 이러한 종속성들이 모두 설정되도록 Docker에 의존하는 방식을 선호합니다. :slight_smile:
또한 첫 번째 가이드에서는 SMTP 서버와 DNS가 필요하다는 점을 크게 강조했는데, 이 가이드에서는 전혀 언급하지 않아 혼란스러웠습니다.

모든 것이 Docker로 구성되었으므로, Docker Compose를 실행하기만 하면 Discourse와 데이터베이스(Postgresql로 보입니다) 컨테이너(+ Discourse에 필요한 경우 캐싱 등 기타 컨테이너)를 실행할 수 있을 것이라 생각했습니다. 그리고 프로덕션 환경에서는 Kubernetes에 호스팅할 계획인데(어떤 스레드에서 읽은 바로는 그렇게 쉽지는 않은 것 같습니다).

제가 놓치고 있는 것이 있을까요?

그리고 도커 없이 설치하는 방법 (관심 있으시거나 위에서 언급한 방법이 너무 느리다고 느끼실 경우):

개발용 설치인지, 운영용 설치인지 원하시나요? 후자라면 Discourse 공식 표준 설치 문서를 참고해 주세요. k8s에서 실행하는 것은 가능하지만, ./launcher를 사용하여 컨테이너를 빌드해야 하므로 바로바로 적용하기가 쉽지 않습니다. 그리고 완전한 무중단 업그레이드를 수행하려면 바로 이해하기 어려운 몇 가지 단계가 필요합니다. 쉽게 하려면 VM을 시작하는 것이 좋습니다 (Ubuntu나 Debian을 실행하는 경우 조금 더 쉽습니다).

네, 운영 환경에서는 이메일을 보낼 수 있어야 합니다. 개발 환경에서는 당연히 그럴 필요가 없습니다.

@merefield Docker 링크 감사합니다. 동작하더군요, 그리고 제가 상상했던 프로세스와 거의 비슷합니다. 다만, 모든 것이 하나의 컨테이너에 패키징되는 것이 약간 이상합니다. 그리고 네, 속도가 느리긴 합니다.

놀란 점은 git clone로 discourse를 클론하고 cd discourse로 이동하면, 제 셸이 정말로 느려진다는 것입니다. 처음 보는 현상입니다 :slight_smile: . 이 저장소에는 아마도 파일이 많거나 다른 문제가 있는 것 같은데, 왜 셸 성능에 영향을 미치는지 정확히 알 수는 없습니다.

@pfaffman 프로덕션 환경에 더 가까운 설치 방식도 시도해 보고 싶습니다. 프로세스가 어떻게 진행되는지 파악하기 위해서입니다. VM에 설치하는 것은 문제없습니다. 그런데 SMTP 서버와 도메인은 어떻게 되나요? 가이드는 이 부분에 대해 매우 엄격하게 서술되어 있으며, 반드시 이들을 갖춰야 한다고 합니다.

이것도 괜찮지만, 몇 가지 완전히 이해하지 못하는 부분이 있습니다:

  • 도메인이 실제로 왜 필요한가요? localhost만으로는 부족합니까?
  • 메일 서버가 Discourse에 사용하는 도메인과 동일한 도메인을 가리켜야 하나요?
  • 가이드에서는 서브도메인에 대해서도 언급하고 있는데, 왜 서브도메인이어야 하나요? 예를 들어, Azure에 VM을 설정하면 VM에 특정 DNS가 할당됩니다(예: myvm.westeurope.cloudapp.azure.com). 이 도메인만으로도 충분하지 않나요?

이것은 프로덕션 환경용이며 https가 필요하므로 도메인 이름이 필요합니다. Azure의 도메인을 사용하면 됩니다.

메일 서버에 호스트명과 동일한 도메인 이름을 사용할 필요는 없습니다. 얼마 전 discourse-setup을 수정하여 알림 이메일 주소를 입력하도록 프롬프트를 추가했습니다.

서브도메인은 x.com 대신 y.x.com을 사용한다는 뜻입니다. 이는 상당히 확립된 관행입니다.

마르친, 안녕하세요.

discourse의 도메인 이름에 대해 저도 같은 우려가 있습니다. 왜 로컬호스트만으로는 부족한가요?

저는 팀이 놀기 위해 discourse만 설치했는데, DNS 없이는 불가능합니다. 서버의 hosts 파일에 로컬호스트를 DNS 리소스로 추가해 해결하려고 시도했지만 성공하지 못했습니다.

공개 도메인 없이 discourse를 실행해 본 분이 있으신가요?

아니요. 개발용 설치를 하려면 호스트명이 필요하지 않지만, 로컬호스트에서만 작동합니다. 팀이 함께 사용하려면 호스트명이 필요합니다. 팀이 있다면 당연히 도메인 이름도 있을 텐데요. 회사에서 사용하는 도메인의 서브도메인을 하나 만들어 보시거나, 12달러를 내고 호스트명을 구매하시거나, 무료 체험을 이용해 보세요.

음, 우리 같은 경우 – discourse를 공개적으로 만들고 싶지 않아요. 내부용 토론 보드를 원하거든요. 다른 분들 의견에 동의하는데, localhost가 실패하고, 단순히 테스트용으로 실행해보려 해도 설치가 실패하네요. 정말 꺼림칙하고, 잘 알려진 표준적인 ‘docker-compose up -d --build’ 대신에 이상한 스크립트들을 사용한다는 건 최소한으로 표현해도 놀라운 일입니다. 이 제품을 사용하고 싶은지 모르겠어요. 너무 진지하게 받아들이는 것 같거든요… 아니면 적어도 런처를 작성한 누군가는 그렇다는 거죠.

아니면, docker-compose가 실행 가능한 유틸리티가 되기 전에 작성된 것일 수도 있습니다. 이 경우에도 수천 개의 사이트에서 여전히 작동하고 있으며, 엣지 케이스를 위해 변경을 시도하면 모든 사이트가 깨질 위험이 있습니다.

서버가 외부 세계에 접근할 수 있다면 HTTPS 관련 설정을 비활성화하는 것은 그리 어렵지 않습니다. 다만, 저는 꽤 오랜 기간 동안 그렇게 해본 적이 없습니다.

@pfaffman 2015년에 docker-compose가 출시되었을 때 정확히 그런 일이 일어났습니다. 당시에는 상당한 회의론이 따랐죠.

제 조직에는 공개 서버가 없습니다. 솔직히 .com 도메인 없이도 가장 좋은 솔루션인 discourse를 사용할 수 있을까요?

도메인 이름은 필요하지만, 공개 IP일 필요는 없습니다. 서버가 인터넷에 접근할 수 있다면(디스커스를 다운로드하고 필요한 구성 요소를 가져오기 위해) Let’s Encrypt 관련 설정을 끄면 작동할 것입니다. yml 파일에서 SSL과 Let’s Encrypt 템플릿을 삭제하기만 하면 될 것 같지만, 그렇게 하면 discourse-setup을 사용할 수 없게 됩니다. standalone 샘플을 복사해서 수동으로 수정하세요.

메일 서버는 여전히 필요합니다.

Mac M1에서 쉽게 할 수 있으면 좋겠다

저는 M1 Pro에서 개발 모드로 Discourse를 로컬에 실행 중이며, 문제가 없습니다.

여러 가지 이유가 있습니다. FreeNom에서 도메인을 무료로 얻을 수는 있지만, FreeNom이 데이터와 사용자 정보를 어떻게 처리하는지에 대해 많은 논란이 있으므로 해당 경로를 선택할 경우 주의하시기 바랍니다.