企业内部沟通如果完全依赖第三方即时通讯云服务,数据往往不在自己手里,安全审计和合规都会成为问题。Rocket.Chat 是一款成熟的开源团队协作聊天软件,功能上覆盖频道群聊、私信、文件传输、屏幕共享、Webhook 机器人接入等,社区版即可满足大部分团队需求。本文以 Debian 系统为例,手把手演示从零开始部署一套可对外服务的 Rocket.Chat,包含数据库、运行环境、主程序、反向代理和 HTTPS 的全流程配置。

一、部署前的系统准备
在动手安装之前,先把服务器的基础环境准备好,这一步做扎实能避免后面大量的诡异报错。假设你使用的是 Debian 11 或 Debian 12,首先以 root 身份登录(或使用具有 sudo 权限的普通用户),执行系统更新:
apt update && apt upgrade -y apt install -y curl gnupg build-essential software-properties-common
接着需要确认服务器的内存情况。Rocket.Chat 官方建议最低 1GB 内存,但实际运行中 MongoDB 加上 Node.js 进程很容易把 1GB 吃满,如果条件允许,2GB 及以上内存会更从容。内存紧张的服务器可以额外添加 2GB 的 swap 分区作为缓冲:
fallocate -l 2G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile echo '/swapfile none swap sw 0 0' >> /etc/fstab
另外建议提前规划好域名。生产环境几乎必然要通过 HTTPS 访问,你需要把一个域名(例如 chat.example 的形式)解析到服务器公网 IP,后面申请 Let's Encrypt 证书时会用到。防火墙方面,记得放行 80、443 端口,Rocket.Chat 默认监听的 3000 端口则不需要对外暴露,后面会用 Nginx 做反向代理。
二、安装 MongoDB 数据库
Rocket.Chat 的所有消息、用户、频道数据都存储在 MongoDB 中,数据库是整个部署的核心依赖。Debian 官方源里的 MongoDB 版本通常过旧,而 Rocket.Chat 对 MongoDB 版本有明确要求,4.x 系列 Rocket.Chat 推荐 MongoDB 5.0 或 6.0,因此需要从 MongoDB 官方仓库安装。
以 Debian 11 安装 MongoDB 6.0 为例,先添加官方 GPG 密钥和仓库源:
curl -fsSL https://www.mongodb.org/static/pgp/server-6.0.asc | gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg --dearmor echo "deb [signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg] http://repo.mongodb.org/apt/debian bullseye/mongodb-org/6.0 main" > /etc/apt/sources.list.d/mongodb-org-6.0.list apt update apt install -y mongodb-org
注意 Debian 12 的代号为 bookworm,写源地址时要把 bullseye 替换成对应代号。安装完成后启动 MongoDB 并设置开机自启:
systemctl enable --now mongod systemctl status mongod
看到 active (running) 即说明数据库正常。出于安全考虑,还建议修改 MongoDB 的监听配置,编辑 /etc/mongod.conf,将 bindIp 保持为 127.0.0.1,确保数据库只接受本机连接,避免数据库裸奔在公网上。Rocket.Chat 5.0 及以上版本还要求 MongoDB 开启副本集模式,在 mongod.conf 中添加如下配置后重启 mongod 服务:
replication: replSetName: "rs0"
然后进入 mongo shell 执行一次初始化:
mongosh --eval 'rs.initiate()'
三、安装 Node.js 与 Rocket.Chat 主程序
Rocket.Chat 基于 Node.js 运行时开发,官方对 Node 版本同样有要求,不同版本的 Rocket.Chat 对应不同的 Node 大版本,例如 Rocket.Chat 6.x 需要 Node 14.21.3。这里推荐使用 nvm 来管理 Node 版本,方便后续升级和切换:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc nvm install 14.21.3 node -v
接下来创建一个专用运行用户,避免以 root 身份跑服务带来的安全隐患:
useradd -m -s /bin/bash rocketchat su - rocketchat
切换到 rocketchat 用户后,下载 Rocket.Chat 的发布包并解压安装:
curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz tar -xzf /tmp/rocket.chat.tgz -C /home/rocketchat cd /home/rocketchat/bundle/programs/server npm install
npm install 这一步耗时较长,耐心等待即可。安装完成后先手动验证一次能否正常启动:
cd /home/rocketchat/bundle export ROOT_URL=https://你的域名 export PORT=3000 export MONGO_URL=mongodb://127.0.0.1:27017/rocketchat?replicaSet=rs0 export MONGO_OPLOG_URL=mongodb://127.0.0.1:27017/local?replicaSet=rs0 node main.js
如果终端输出 Server is running 之类的提示,说明程序启动成功,浏览器访问 http://服务器IP:3000 就能看到初始化向导了。确认无误后按 Ctrl+C 停掉,接着把服务交给 systemd 管理。
退回 root 用户,创建服务文件 /etc/systemd/system/rocketchat.service:
[Unit] Description=Rocket.Chat server After=network.target mongod.service [Service] User=rocketchat WorkingDirectory=/home/rocketchat/bundle Environment=ROOT_URL=https://chat.ipipp.com Environment=PORT=3000 Environment=MONGO_URL=mongodb://127.0.0.1:27017/rocketchat?replicaSet=rs0 Environment=MONGO_OPLOG_URL=mongodb://127.0.0.1:27017/local?replicaSet=rs0 ExecCommand=/home/rocketchat/.nvm/versions/node/v14.21.3/bin/node main.js Restart=always RestartSec=10 [Install] WantedBy=multi-user.target
写好后执行 systemctl daemon-reload 和 systemctl enable --now rocketchat,之后就可以用 journalctl -u rocketchat -f 实时观察日志,排查启动问题非常方便。
四、Nginx 反向代理与 HTTPS 配置
直接暴露 3000 端口既不安全也不专业,标准做法是用 Nginx 在前面做一层反向代理,再配合 Let's Encrypt 免费证书实现 HTTPS。先安装 Nginx:
apt install -y nginx certbot python3-certbot-nginx
创建站点配置文件 /etc/nginx/sites-available/rocketchat:
server {
listen 80;
server_name chat.ipipp.com;
location / {
proxy_pass http://127.0.0.1:3000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache off;
proxy_read_timeout 600s;
}
}这里的 Upgrade 和 Connection 两个头是关键,Rocket.Chat 的实时消息依赖 WebSocket 长连接,缺少这两行会导致消息收不到实时推送,只能刷新页面才能看到新消息,这是部署时最常见的问题之一。启用站点并重载 Nginx:
ln -s /etc/nginx/sites-available/rocketchat /etc/nginx/sites-enabled/ nginx -t && systemctl reload nginx
最后用 certbot 一键签发证书并自动改写 HTTPS 配置:
certbot --nginx -d chat.ipipp.com
证书有效期 90 天,certbot 会自动安装定时任务续期,无需人工干预。完成这一步后,通过域名访问 Rocket.Chat,注册第一个管理员账号,整个部署就大功告成了。
五、常见问题与优化建议
部署过程中最容易踩的坑有三个。第一是 MongoDB 没开副本集,表现为 Rocket.Chat 启动时报 MongoDB oplog must be enabled 之类的错误,按照前文配置 replicaSet 并执行 rs.initiate() 即可解决。第二是 WebSocket 代理头缺失导致消息不实时,检查 Nginx 配置中的 Upgrade 头。第三是 Node 版本不匹配引发各种运行时错误,务必以官方文档标注的版本为准。
日常运维方面,建议定期用 mongodump 备份数据库,把备份文件存放到异机;同时关注 Rocket.Chat 的版本更新,新版本通常包含安全修复。如果团队规模扩大导致负载升高,可以把 MongoDB 迁移到独立服务器,或者在 Nginx 层做多实例负载均衡。数据在自己服务器上,配合定期备份,这套私有化聊天系统就能长期稳定地服务团队了。
DebianRocket.Chat部署修改时间:2026-09-15 09:34:41