Discourse Chat - Rocket.Chat 集成

我想在我的网站上安装 Rocket.Chat 社区版,然后使用 Discourse Chat 集成 Rocket.Chat。我通过与 OpenAI O3 的讨论创建了本指南。有人能确认这些步骤是否正确部署 Docker Rocket.Chat 实例吗?我只是想避免因不知道如何正确操作而造成任何意外后果。

谢谢!


第一步:在 Cloudflare 中配置您的 DNS

  1. 登录 Cloudflare 并为 chat.website.com 添加一个 A 记录(或 CNAME),指向您的服务器 IP 地址。
  2. 如果您想使用 Cloudflare 的安全和性能功能,请确保已启用 Cloudflare 代理。

第二步:设置 Rocket.Chat 部署

  1. SSH 进入您的服务器并创建一个 Rocket.Chat 目录(如果尚未创建):
    bash
    复制
    mkdir -p /opt/rocket.chat
    cd /opt/rocket.chat
  2. 在此目录中创建一个 docker-compose.yml 文件,内容如下:
    yaml
    复制
    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 服务名。


第三步:初始化 MongoDB 副本集

  1. 启动 Rocket.Chat 堆栈:
    bash
    复制
    docker-compose up -d
  2. 获取 MongoDB 的容器 ID 或名称:
    bash
    复制
    docker ps
  3. 连接到 MongoDB:
    bash
    复制
    docker exec -it <mongo_container_id_or_name> mongo
  4. 在 Mongo shell 中运行:
    js
    复制
    rs.initiate()
  5. 使用 exit 退出 shell。
    此步骤初始化 Rocket.Chat 用于实时操作的副本集。

第四步:更新您的 Caddy 配置
由于 Caddy 已在自己的容器中运行,请更新其 Caddyfile 以包含 Rocket.Chat 的新站点块。编辑您的 Caddyfile(例如,位于 /path/to/your/Caddyfile),然后添加:
caddy
复制
http://chat.website.com {
reverse_proxy rocketchat:3000
}
重要提示:
• reverse_proxy 指令使用 rocketchat 服务名 — 这要求 Caddy 容器与 Rocket.Chat 容器位于同一 Docker 网络上。
• 如果您的 Caddy 容器是通过 Docker Compose 管理的,您可以将其连接到同一个 common 网络。例如,在您的 Caddy 容器的 docker-compose 文件中,添加:
yaml
复制
networks:

  • common
    并确保网络已声明(或手动附加容器)。
    由于您使用 Cloudflare 进行 DNS 和 Let’s Encrypt,并且已经有了没有 email 指令的有效配置,因此在 TLS 方面无需进行更改。

第五步:重新加载 Caddy 并验证设置

  1. 重新加载 Caddy:
    如果您通过 Docker 运行 Caddy,请重启容器以使其加载新的 Caddyfile 配置:
    bash
    复制
    docker restart <caddy_container_name>
  2. 测试您的部署:
    打开网页浏览器并导航到 http://chat.website.com。(Cloudflare 将管理 HTTPS 证书。)您应该会看到 Rocket.Chat 设置页面。
  3. 完成设置:
    按照屏幕上的说明完成 Rocket.Chat 的配置。

附加自定义
如果您需要添加其他环境变量(例如,SMTP 设置或自定义卷)或有任何特定的网络要求,请告诉我,以便进一步完善本指南。


本指南应能帮助您在由 Cloudflare 管理的子域上使用 Docker Compose 部署 Rocket.Chat 社区版,并使用 Caddy(在其自己的容器中)作为反向代理。