사이트에 Rocket.Chat Community Version을 설치한 후 Rocket.Chat용 Discourse Chat 통합 기능을 사용하려고 합니다. OpenAI O3와의 대화를 통해 이 가이드를 작성했습니다. Docker Rocket.Chat 인스턴스가 올바르게 배포되는지 이 단계들이 정확한지 확인해 주실 수 있을까요? 올바르게 수행하는 방법을 몰라서 예상치 못한 결과를 초래하고 싶지 않아서입니다.
감사합니다!
단계 1: Cloudflare에서 DNS 설정
- Cloudflare에 로그인하고 chat.website.com에 대한 A 레코드(또는 CNAME)를 추가하여 서버의 IP 주소로 포인팅하세요.
- 보안 및 성능 기능을 사용하려면 Cloudflare 프록시가 활성화되어 있는지 확인하세요.
단계 2: Rocket.Chat 배포 설정
- 서버에 SSH로 접속하여 Rocket.Chat용 디렉터리를 생성하세요(아직 생성하지 않은 경우):
bash
Copy
mkdir -p /opt/rocket.chat
cd /opt/rocket.chat - 이 디렉터리에 다음 내용을 가진 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 리플리카 세트 초기화
- Rocket.Chat 스택을 시작하세요:
bash
Copy
docker-compose up -d - MongoDB의 컨테이너 ID 또는 이름을 가져오세요:
bash
Copy
docker ps - MongoDB에 연결하세요:
bash
Copy
docker exec -it <mongo_container_id_or_name> mongo - Mongo 셸에서 다음을 실행하세요:
js
Copy
rs.initiate() - 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 재로드 및 설정 확인
- Caddy를 재로드하세요:
Docker를 통해 Caddy를 실행 중인 경우, 새 Caddyfile 구성을 적용하도록 컨테이너를 재시작하세요:
bash
Copy
docker restart <caddy_container_name> - 배포 테스트:
웹 브라우저를 열고 http://chat.website.com으로 이동하세요. (Cloudflare가 HTTPS 인증서를 관리합니다.) Rocket.Chat 설정 페이지가 표시되어야 합니다. - 설정 완료:
화면의 안내에 따라 Rocket.Chat 설정을 마저 완료하세요.
추가 커스터마이징
추가 환경 변수(예: SMTP 설정 또는 커스텀 볼륨)가 필요하거나 특정 네트워크 요구 사항이 있다면 알려주세요. 가이드를 더 세밀하게 다듬을 수 있도록 하겠습니다.
이 가이드는 Cloudflare가 관리하는 서브도메인에서 Docker Compose를 사용하여 Rocket.Chat Community Edition을 배포하는 데 도움이 됩니다. 이때 Caddy(자체 컨테이너에서 실행)를 리버스 프록시로 사용합니다.