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のセキュリティおよびパフォーマンス機能を使用したい場合は、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はサブドメインに設定されています(ここではHTTPを使用しています。CloudflareとCaddyが外部でTLSを処理するため)。
• 両方のサービスは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. デプロイメントをテストします:
    Webブラウザを開き、http://chat.website.comにアクセスします。(CloudflareがHTTPS証明書を管理します。)Rocket.Chatセットアップページが表示されるはずです。
  3. セットアップを完了します:
    画面の指示に従って、Rocket.Chatの設定を完了します。

追加のカスタマイズ
SMTP設定やカスタムボリュームなどの追加の環境変数が必要な場合、または特定のネットワーク要件がある場合は、ガイドをさらに改善できるように教えてください。


このガイドは、Cloudflareで管理されるサブドメインにDocker Composeを使用してRocket.Chat Community Editionをデプロイし、リバースプロキシとしてCaddy(独自のコンテナ内)を使用するのに役立つはずです。