Discourse Chat - Rocket.Chat 통합

사이트에 Rocket.Chat Community Version을 설치한 후 Rocket.Chat용 Discourse Chat 통합 기능을 사용하려고 합니다. OpenAI O3와의 대화를 통해 이 가이드를 작성했습니다. Docker Rocket.Chat 인스턴스가 올바르게 배포되는지 이 단계들이 정확한지 확인해 주실 수 있을까요? 올바르게 수행하는 방법을 몰라서 예상치 못한 결과를 초래하고 싶지 않아서입니다.

감사합니다!


단계 1: Cloudflare에서 DNS 설정

  1. Cloudflare에 로그인하고 chat.website.com에 대한 A 레코드(또는 CNAME)를 추가하여 서버의 IP 주소로 포인팅하세요.
  2. 보안 및 성능 기능을 사용하려면 Cloudflare 프록시가 활성화되어 있는지 확인하세요.

단계 2: Rocket.Chat 배포 설정

  1. 서버에 SSH로 접속하여 Rocket.Chat용 디렉터리를 생성하세요(아직 생성하지 않은 경우):
    bash
    Copy
    mkdir -p /opt/rocket.chat
    cd /opt/rocket.chat
  2. 이 디렉터리에 다음 내용을 가진 docker-compose.yml 파일을 생성하세요:
    yaml
    Copy
    version: “3.8”

services:
rocketchat:
image: rocket.chat:latest
restart: unless-stopped
environment:
- PORT=3000
- ROOT_URL=http://chat.website.com
- MONGO_URL=mongodb://mongo:27017/rocketchat?replicaSet=rs0
- MONGO_OPLOG_URL=mongodb://mongo:27017/local?replicaSet=rs0
depends_on:
- mongo
ports:
- “3000:3000”
volumes:
- rocketchat_data:/app/uploads
networks:
- common

mongo:
image: mongo:4.0
restart: unless-stopped
command: mongod --smallfiles --oplogSize 128 --replSet rs0
volumes:
- mongo_data:/data/db
networks:
- common

volumes:
rocketchat_data:
mongo_data:

networks:
common:
external: false
참고:
• ROOT_URL은 서브도메인으로 설정됩니다(여기서는 Cloudflare와 Caddy가 외부에서 TLS를 처리하므로 HTTP를 사용함).
• 두 서비스 모두 common이라는 이름의 커스텀 네트워크에 연결됩니다. 이를 통해 Caddy 컨테이너가 요청을 프록시할 때 rocketchat 서비스 이름을 해석할 수 있습니다.


단계 3: MongoDB 리플리카 세트 초기화

  1. Rocket.Chat 스택을 시작하세요:
    bash
    Copy
    docker-compose up -d
  2. MongoDB의 컨테이너 ID 또는 이름을 가져오세요:
    bash
    Copy
    docker ps
  3. MongoDB에 연결하세요:
    bash
    Copy
    docker exec -it <mongo_container_id_or_name> mongo
  4. Mongo 셸에서 다음을 실행하세요:
    js
    Copy
    rs.initiate()
  5. exit를 입력하여 셸을 종료하세요.
    이 단계는 실시간 작업에 사용되는 Rocket.Chat의 리플리카 세트를 초기화합니다.

단계 4: Caddy 구성 업데이트
Caddy가 이미 자체 컨테이너에서 실행 중이므로, Rocket.Chat용 새 사이트 블록을 포함하도록 Caddyfile을 업데이트해야 합니다. Caddyfile(예: /path/to/your/Caddyfile)을 편집하여 다음을 추가하세요:
caddy
Copy
http://chat.website.com {
reverse_proxy rocketchat:3000
}
중요:
• reverse_proxy 지시문은 rocketchat 서비스 이름을 사용합니다. 이는 Caddy 컨테이너가 Rocket.Chat 컨테이너와 동일한 Docker 네트워크에 있어야 함을 의미합니다.
• Caddy 컨테이너가 Docker Compose를 통해 관리되는 경우, 동일한 common 네트워크에 연결할 수 있습니다. 예를 들어, Caddy 컨테이너의 docker-compose 파일에 다음을 추가하세요:
yaml
Copy
networks:

  • common
    그리고 네트워크가 선언되어 있는지(또는 컨테이너를 수동으로 연결했는지) 확인하세요.
    DNS와 Let’s Encrypt에 Cloudflare를 사용하고 있으며, 이메일 지시문 없이 작동하는 기존 구성을 가지고 있으므로 TLS에 대한 변경 사항은 필요하지 않습니다.

단계 5: Caddy 재로드 및 설정 확인

  1. Caddy를 재로드하세요:
    Docker를 통해 Caddy를 실행 중인 경우, 새 Caddyfile 구성을 적용하도록 컨테이너를 재시작하세요:
    bash
    Copy
    docker restart <caddy_container_name>
  2. 배포 테스트:
    웹 브라우저를 열고 http://chat.website.com으로 이동하세요. (Cloudflare가 HTTPS 인증서를 관리합니다.) Rocket.Chat 설정 페이지가 표시되어야 합니다.
  3. 설정 완료:
    화면의 안내에 따라 Rocket.Chat 설정을 마저 완료하세요.

추가 커스터마이징
추가 환경 변수(예: SMTP 설정 또는 커스텀 볼륨)가 필요하거나 특정 네트워크 요구 사항이 있다면 알려주세요. 가이드를 더 세밀하게 다듬을 수 있도록 하겠습니다.


이 가이드는 Cloudflare가 관리하는 서브도메인에서 Docker Compose를 사용하여 Rocket.Chat Community Edition을 배포하는 데 도움이 됩니다. 이때 Caddy(자체 컨테이너에서 실행)를 리버스 프록시로 사용합니다.