Discourse - 수동으로 설치하기

graph TB;

public-ip["공인 IP"]

subgraph router["공유기"]
  router-80["80"]
  router-443["443"]
end;

subgraph server["서버"]
  subgraph reverse-proxy["리버스 프록시"]
    reverse-proxy-80["80"];
    reverse-proxy-443["443"];
  end

  discourse["Discourse"]
  reverse-proxy <--> discourse;
end;

public-ip <--> router-80;
public-ip <--> router-443;
router-80 <--> reverse-proxy-80;
router-443 <--> reverse-proxy-443;

이 가이드는 서버에 리버스 프록시가 설치되어 있고, 해당 서버에 Discourse 를 설치해 리버스 프록시와 연동하려는 경우 사용할 수 있는 설치 방법이에요.

이 방식은 설치가 조금 복잡할 수 있지만, 서버를 Discourse 전용으로 만들지 않고 여러 서비스와 같이 운용할 수 있다는 장점을 가지고 있어요. 제가 권장드리는 설치 방식이기도 해요.


설치 파일 다운로드하기

이전 간편 설치 가이드에서 2번 항목까지 그대로 진행해 주세요.


기본 설정 파일 복사하기

/var/discourse 경로에서 ls 명령어를 사용해 보세요 그럼 다음과 같은 파일과 폴더 목록이 출력될 거예요.

파일 목록이 잘 보인다면 다음의 명령어를 실행해 주세요.

cp samples/standalone.yml containers/app.yml

이 명령어는 설치 파일에 포함된 샘플 설정 파일(app.yml)을 Discourse가 사용하도록 복사해주는 작업이에요.

그런 다음 nano 에디터로 복사한 파일을 열어주세요.

nano containers/app.yml

이제 이곳에서 필요한 설정을 바꾸게 될 거예요.


설정 파일 수정하기

SSL 인증서 발급 기능 해제하기

SSL 인증서는 리버스 프록시 서버에서 관리할 것이기 때문에 먼저 이 기능을 해제해야 해요. 다음의 항목을 찾아 주세요.

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Uncomment these two lines if you wish to add Lets Encrypt (https)
  #- "templates/web.ssl.template.yml"
  #- "templates/web.letsencrypt.ssl.template.yml"

여기에서 templates/web.ssl.template.ymltemplates/web.letsencrypt.ssl.template.yml 앞에 # 이라는 기호가 없다면 추가해 주세요. 이는 설치 중 해당 줄을 무시하겠다는 의미에요.

포트 변경하기

다음은 Discourse 가 서버의 80, 443번 포트를 사용하지 않도록 수정해야 해요. 다음의 항목을 찾아주세요.

expose:
- "80:80"   # http
- "443:443" # https

그리고 이를 다음과 같이 변경해 주세요.

expose:
- "8080:80"
# - "433:443"

이렇게 하면 이제 Discourse 는 서버의 8080 포트만 사용하게 돼요. 이 포트는 마음에 드는 다른 것으로 변경해도 괜찮아요.

도메인 변경하기

다음은 사용할 도메인 주소를 변경할 차례에요. 다음의 항목을 찾아 주세요.

env:
  ## TODO: The domain name this Discourse instance will respond to
  ## Required. Discourse will not work with a bare IP number.
  DISCOURSE_HOSTNAME: 'discourse.example.com'

그리고 이를 서버와 연결할 도메인 주소로 변경해 주세요. 예시는 다음과 같아요.

env:
  DISCOURSE_HOSTNAME: 'forum.tinyrackdns.duckdns.org'

메일 서버 정보 입력하기

다음은 메일 서버 정보를 수정해야 해요. 다음의 항목을 찾아 주세요.

env:
  ## TODO: The SMTP mail server used to validate new accounts and send notifications
  # SMTP ADDRESS is required
  # WARNING: SMTP password should be wrapped in quotes to avoid problems
  DISCOURSE_SMTP_ADDRESS: smtp.example.com
  #DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: user@example.com
  DISCOURSE_SMTP_PASSWORD: "pa$$word"

이를 사용중인 메일 서비스의 가이드에 따라 변경해 주세요. 예시는 다음과 같아요.

env:
  DISCOURSE_SMTP_ADDRESS: mail.winetree94.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: admin@tinyrack.net
  DISCOURSE_SMTP_PASSWORD: "비밀번호"

어드민 유저 정보 입력하기

다음은 관리자 계정의 이메일 주소를 할당할 차례에요. 다음의 항목을 찾아 주세요.

env:
  ## TODO: List of comma delimited emails that will be made admin and developer
  ## on initial signup example 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'me@example.com,you@example.com'

이를 원하는 이메일로 변경해 주세요. 예시는 다음과 같아요.

env:
  ## TODO: List of comma delimited emails that will be made admin and developer
  ## on initial signup example 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'admin@tinyrack.net'

https 강제하기

마지막으로 Discourse 가 강제로 https 를 사용하도록 지정할 차례에요. env 하위에 다음의 항목을 추가해 주세요.

env:
  DISCOURSE_FORCE_TLS: true
  DISCOURSE_FORCE_HTTPS: true

설치하기

이제 만들어진 설정 파일을 토대로 Discourse 를 설치할 차례에요. 다음의 명령어를 입력해 주세요.

./launcher rebuild app

이 작업은 시간이 꽤 걸릴 수 있어요.

설치가 완료된 모습이 위와 같아요. 설치와 동시에 알아서 실행되기 때문에 이제 특별한 일이 없다면 건드릴 필요가 없을 거예요.


리버스 프록시 설정하기

이제 도메인을 할당하고 SSL 인증서를 발급받을 차례에요. Nginx Proxy Manager 에서 위와 같이 라우팅을 생성해 주세요. 이를 잘 모르겠다면 리버스 프록시 가이드를 참고해 주세요.

다음은 SSL 탭에서 Request a new SSL Certificate 를 선택하고 저장해 주세요. 그럼 자동으로 인증서를 발급받고 할당될 거예요.


접속 확인하기

이제 끝이에요! 이제 할당한 도메인에 접속해 정상적으로 동작하는지 확인해 주세요.

위와 같이 나온다면 성공이에요! 이제 초기 설정에 대해서는 다음 가이드에서 다룰게요.