RocketChat.Server
Rocket.Chat

使用 Ansible 部署 Rocket.Chat,最佳的开源网页聊天平台!
注意事项
master
已经在v2.0
上进行了变基,现在是该角色的最新代码(而不再是与 1.9 兼容的版本)。如果你想要最新的代码,不需要指定版本,ansible-galaxy
会自动拉取最新标签,或者可以指定version: master
永远保持跟进开发。v1.9
用户可以继续使用标签v1.9
和v1.9.0
,并且ansible_1.9
分支仍然存在,不过几乎不会再有任何回补。
特点
可选的完整栈部署: 完全部署 Rocket.Chat,包括 MongoDB 和 Nginx 反向 SSL 代理。 或者,只部署 Rocket.Chat,并与现有的 MongoDB 和/或 Nginx 实例/部署方法集成。
可选的自动 SSL 证书生成: 通过 Nginx 反向代理自动生成 HTTPS 连接的 SSL 证书。 或者,使用你自己的 SSL 证书!
可选的自动升级 [需要 Ansible 2.0]: 如果发布了新版本的 Rocket.Chat,或者你想跟进开发进行测试,只需更新
rocket_chat_version
为你希望部署的版本(请查看 Rocket.Chat 发布页面),将rocket_chat_automatic_upgrades
设置为true
,其余交给该角色处理! 如果你在 Rocket.Chat 服务器上部署的代码发生变化(比如跟踪的rocket_chat_version
有变化,或设置了一个新的rocket_chat_version
),该角色将负责升级和重新部署 Rocket.Chat 服务,确保你的数据安全。 注意:此功能需要 Ansible 2.0。有关如何获取此角色的 2.0 版本的信息,请参见 从 Ansible Galaxy 安装部分
支持的平台
Debian
- Strect (9)
- Buster (10)
Ubuntu
- Bionic Beaver: 18.04 LTS
- Xenial: 16.04 LTS
- Trusty: 14.04 LTS
EL (RHEL/CentOS)
- 7
如果你希望看到你的发行版/操作系统得到支持,请 提交问题!
遇到问题?
请在提交问题之前确保已阅读 常见问题解答 和所有文档。
角色变量
所有变量都在 defaults/main.yml
中设置了合理的默认值。
默认值
名称 | 默认值 | 描述 |
---|---|---|
rocket_chat_automatic_upgrades |
false | 确定是否在源代码更改时升级 Rocket.Chat 的布尔值 |
rocket_chat_upgrade_backup |
true | 确定在升级时是否备份当前 Rocket.Chat 版本的布尔值 |
rocket_chat_upgrade_backup_path |
"{{ rocket_chat_application_path }}" |
备份 Rocket.Chat 的路径,当 rocket_chat_upgrade_backup 为 true 时 |
rocket_chat_application_path |
/var/lib/rocket.chat |
部署 Rocket.Chat 的文件系统目标路径 |
rocket_chat_version |
latest |
要部署的 Rocket.Chat 版本;可在 Rocket.Chat 发布页面 查看可用选项 |
rocket_chat_tarball_remote |
见 defaults/main.yml |
远程地址,用于获取 Rocket.Chat 压缩包(使用 rocket_chat_version ) |
rocket_chat_tarball_sha256sum |
见 defaults/main.yml |
被获取的 Rocket.Chat 压缩包的 SHA256 哈希值 |
rocket_chat_tarball_fetch_timeout |
100 | 获取 Rocket.Chat 压缩包失败前的超时时间(秒) |
rocket_chat_tarball_validate_remote_cert |
true | 确定是否验证 Rocket.Chat 压缩包远程的 SSL 证书的布尔值 |
rocket_chat_service_user |
rocketchat |
运行 Rocket.Chat 服务器进程的用户名称 |
rocket_chat_service_group |
rocketchat |
rocket_chat_service_user 用户的主要组名称 |
rocket_chat_service_host |
"{{ ansible_fqdn }}" |
Rocket.Chat 系统的完全限定域名 |
rocket_chat_service_port |
3000 | Rocket.Chat 监听的 TCP 端口 |
rocket_chat_service_extra_instances |
[] |
附加的 rocketchat 服务实例的 TCP 端口列表,以便在一台机器上处理更多用户 |
rocket_chat_node_version |
4.5.0 |
n 理解的要安装的 NodeJS 版本 |
rocket_chat_node_prefix |
/usr/local/n/versions/node/{{ rocket_chat_node_version }} |
n 安装的 node 二进制目录路径 |
rocket_chat_npm_dist |
/usr/bin/npm |
在 n 安装任何 Node 版本之前的原始 npm 二进制文件路径 |
rocket_chat_include_mongodb |
true | 确定是否部署 MongoDB 的布尔值 |
rocket_chat_mongodb_keyserver |
keyserver.ubuntu.com | 导入 MongoDB 仓库密钥时使用的 GPG 密钥服务器 |
rocket_chat_mongodb_gpg_key |
7F0CEB10 |
要导入的 MongoDB 仓库的 GPG 密钥指纹 |
rocket_chat_mongodb_user |
默认不使用 | 连接到 MongoDB 时使用的用户名。如果设置,则应该同时定义 rocket_chat_mongodb_password ,否则不使用用户/密码连接到 MongoDB |
rocket_chat_mongodb_password |
默认不使用 | 连接到 MongoDB 时使用的密码。如果设置,则应该同时定义 rocket_chat_mongodb_user ,否则不使用用户/密码连接到 MongoDB |
rocket_chat_mongodb_server |
127.0.0.1 | MongoDB 主机的 IP/完全限定域名 |
rocket_chat_mongodb_port |
27017 | 与 MongoDB 主机交互的 TCP 端口 |
rocket_chat_mongodb_database |
rocketchat | 用于 Rocket.Chat 的 MongoDB 数据库 |
rocket_chat_mongodb_use_tls |
false | 是否使用 TLS 连接到 MongoDB 数据库 |
rocket_chat_mongodb_packages |
mongodb |
要安装的 MongoDB 包的名称(不同发行版可能有所不同 - 请参见 vars/ ) |
rocket_chat_mongodb_config_template |
mongod.conf.j2 |
要部署的 /etc/mongod.conf 模板 |
rocket_chat_mongodb_org_pkgs |
false | true (Debian/Ubuntu) | 是否使用官方 MongoDB.org 社区版包 |
rocket_chat_mongodb_org_version |
3.4 | 要安装的官方包的版本字符串 |
rocket_chat_mongodb_service_name |
mongod |
在 /etc 中的系统服务单元和 mongodb 配置文件名称 |
rocket_chat_include_nginx |
true | 确定是否部署 Nginx 的布尔值 |
rocket_chat_ssl_generate_certs |
true | 确定是否生成 Nginx SSL 证书的布尔值 |
rocket_chat_ssl_key_path |
/etc/nginx/rocket_chat.key |
Nginx SSL 私钥的目标路径 |
rocket_chat_ssl_cert_path |
/etc/nginx/rocket_chat.crt |
Nginx SSL 证书的目标路径 |
rocket_chat_ssl_deploy_data |
false | 确定是否部署自定义 SSL 数据(证书/密钥文件)的布尔值 |
rocket_chat_ssl_key_file |
~ |
如果不使用 SSL 证书生成,这是 Ansible 控制节点上 Nginx SSL 私钥的路径,用于部署 |
rocket_chat_ssl_cert_file |
~ |
如果不使用 SSL 证书生成,这是 Ansible 控制节点上 Nginx SSL 证书的路径,用于部署 |
rocket_chat_nginx_enable_pfs |
true | 确定在部署 Nginx 时是否启用 PFS 的布尔值 |
rocket_chat_nginx_generate_pfs_key |
true | 确定是否生成 PFS 密钥文件的布尔值 |
rocket_chat_nginx_pfs_key_numbits |
2048 | 生成 PFS 密钥文件时传递给 OpenSSL 的位数 |
rocket_chat_nginx_pfs_key_path |
/etc/nginx/rocket_chat.pem |
Nginx PFS 密钥文件的目标路径 |
rocket_chat_nginx_pfs_file |
~ |
如果不使用 PFS 密钥生成,这是 Ansible 控制节点上 Nginx PFS 密钥的路径,用于部署 |
rocket_chat_nginx_listen_ssl_port |
443 |
Nginx 监听的 SSL 端口 |
rocket_chat_nginx_listen_port |
80 |
Nginx 监听的端口 |
某些变量在操作系统/发行版之间有所差异。
这些变量在 vars/
目录中设置,通常以发行版名命名的文件中。
RHEL/CentOS 变量
设置在 vars/RedHat.yml
名称 | 默认值 | 描述 |
---|---|---|
rocket_chat_dep_packages |
- git | 要安装的 Rocket.Chat 依赖项列表 |
- GraphicsMagick | ||
- nodejs | ||
- npm | ||
- make | ||
rocket_chat_mongodb_packages |
- mongodb | 要安装的 MongoDB 服务器包列表 |
- mongodb-server | ||
rocket_chat_mongodb_repl_lines |
'replSet=001-rs' |
MongoDB 副本集的值 |
rocket_chat_mongodb_fork |
true |
确定是否分叉 MongoDB 服务器进程的布尔值 |
rocket_chat_mongodb_pidfile_path |
/var/run/mongodb/mongodb.pid |
MongoDB 服务器进程的 pidfile 路径 |
rocket_chat_mongodb_logpath |
/var/log/mongodb/mongod.log |
MongoDB 服务器的日志文件路径 |
rocket_chat_mongodb_unixsocketprefix |
/var/run/mongodb |
MongoDB UNIX 套接字前缀的路径 |
rocket_chat_mongodb_dbpath |
/var/lib/mongodb |
MongoDB 存储其数据库的路径 |
rocket_chat_nginx_process_user |
nginx |
用于生成 Nginx 服务器进程的用户 |
RHEL/CentOS 7 变量
名称 | 默认值 | 描述 |
---|---|---|
rocket_chat_service_update_command |
systemctl daemon-reload ; systemctl restart rocketchat |
当服务清单更改时,通知服务管理系统使用的命令 |
rocket_chat_service_template |
||
src |
rocketchat.service.j2 |
要部署的 Rocket.Chat 服务清单的源模板 |
dest |
/usr/lib/systemd/system/rocketchat.service |
要部署的 Rocket.Chat 服务清单的目标位置 |
rocket_chat_tarball_validate_remote_cert |
false | 确定是否验证 Rocket.Chat 压缩包远程的 SSL 证书的布尔值 |
Debian 变量
设置在 vars/Debian.yml
名称 | 默认值 | 描述 |
---|---|---|
rocket_chat_dep_packages |
- git | 要安装的 Rocket.Chat 依赖项列表 |
- graphicsmagick | ||
- nodejs | ||
- npm | ||
- make | ||
rocket_chat_mongodb_packages |
- mongodb-server | 要安装的 MongoDB 服务器包列表 |
- mongodb-shell | ||
rocket_chat_mongodb_repl_lines |
replication: |
MongoDB 副本集的值 |
replSetName: "001-rs" |
||
rocket_chat_nginx_process_user |
www-data |
用于生成 Nginx 服务器进程的用户 |
Debian 8 变量
名称 | 默认值 | 描述 |
---|---|---|
rocket_chat_service_update_command |
systemctl daemon-reload ; systemctl restart rocketchat |
当服务清单更改时,通知服务管理系统使用的命令 |
rocket_chat_service_template |
||
src |
rocketchat.service.j2 |
要部署的 Rocket.Chat 服务清单的源模板 |
dest |
/etc/systemd/system/rocketchat.service |
要部署的 Rocket.Chat 服务清单的目标位置 |
rocket_chat_mongodb_apt_repo |
deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.0 main |
MongoDB 的 APT 仓库 |
Ubuntu 变量
设置在 vars/Ubuntu.yml
名称 | 默认值 | 描述 |
---|---|---|
rocket_chat_dep_packages |
- git | 要安装的 Rocket.Chat 依赖项列表 |
- graphicsmagick | ||
- nodejs | ||
- npm | ||
- make | ||
rocket_chat_mongodb_packages |
- mongodb-server | 要安装的 MongoDB 服务器包列表 |
- mongodb-shell | ||
rocket_chat_mongodb_repl_lines |
replication: |
MongoDB 副本集的值 |
replSetName: "001-rs" |
||
rocket_chat_nginx_process_user |
www-data |
用于生成 Nginx 服务器进程的用户 |
Ubuntu 16 变量
名称 | 默认值 | 描述 |
---|---|---|
rocket_chat_service_update_command |
systemctl daemon-reload ; systemctl restart rocketchat |
当服务清单更改时,通知服务管理系统使用的命令 |
rocket_chat_service_template |
||
src |
rocketchat.service.j2 |
要部署的 Rocket.Chat 服务清单的源模板 |
dest |
/etc/systemd/system/rocketchat.service |
要部署的 Rocket.Chat 服务清单的目标位置 |
rocket_chat_mongodb_apt_repo |
deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.0 main |
MongoDB 的 APT 仓库 |
Ubuntu 14 变量
名称 | 默认值 | 描述 |
---|---|---|
rocket_chat_service_update_command |
initctl reload-configuration ; service rocketchat restart |
当服务清单更改时,通知服务管理系统使用的命令 |
rocket_chat_service_template |
||
src |
rocketchat_upstart.j2 |
要部署的 Rocket.Chat 服务清单的源模板 |
dest |
/etc/init/rocketchat.conf |
要部署的 Rocket.Chat 服务清单的目标位置 |
rocket_chat_mongodb_apt_repo |
deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.0 multiverse |
MongoDB 的 APT 仓库 |
rocket_chat_tarball_validate_remote_cert |
false | 确定是否验证 Rocket.Chat 压缩包远程的 SSL 证书的布尔值 |
从 Ansible Galaxy 安装此角色
此角色可以从 Ansible Galaxy 下载。
要安装此角色并在 Ansible 代码库中跟踪它,可以在 requirements.yml
中使用类似以下的内容:
- src: RocketChat.Server
version: v1.9.0
path: roles/external/
注意:如果你仍在使用 Ansible 1.9.4,必须将 version
指定为 v1.9.0
安装此角色的 Ansible 2.0 版本
随着 Ansible 2.0 的发布,此角色正式支持,并包含一些性能增强和额外功能(例如自动升级)。
要使用此角色的 Ansible 2.0 版本,可以使用 ansible-galaxy
命令行工具使用 requirements.yml
安装(上文提到的两个内容)来指定你希望使用的版本。
以下是通过 ansible-galaxy
安装的 requirements.yml
文件示例,将获取 Ansible 2.0 代码:
- src: RocketChat.Server
path: roles/external
注意:master
已经在 v2.0 上重新基于,现在是此角色的最新代码。如果你想要最新的,只需不包含任何版本,ansible-galaxy
会自动拉取最新标签,或者你可以包含 version: master
来始终保持最新。
示例剧本
一个简单的剧本,在所有 chat_servers
系统上运行此角色:
- hosts: chat_servers
roles:
- RocketChat.Server
一个部署 Rocket.Chat 到 chat_servers
但排除 MongoDB 部署并使用外部实例的剧本。同时允许 Rocket.Chat 的自动升级(rocket_chat_automatic_upgrades
需要 Ansible 2.0!请参阅 从 Ansible Galaxy 安装部分):
- hosts: chat_servers
vars:
rocket_chat_automatic_upgrades: true
rocket_chat_include_mongodb: false
rocket_chat_mongodb_server: 10.19.3.24
roles:
- RocketChat.Server
常见问题解答
- 当我尝试使用此角色部署时,在
获取 Rocket.Chat 二进制文件压缩包
任务上失败 如果部署失败并出现类似以下的信息,那是因为该角色尚未更新以反映最新 Rocket.Chat 发布压缩包的 SHA256 哈希值
TASK [RocketChat.Server : 获取 Rocket.Chat 二进制文件压缩包] ****************
fatal: [chat1]: FAILED! => {"changed": false, "failed": true, "msg": "The checksum for /var/lib/rocket.chat/rocket.chat-latest.tgz did not match e6caca890c86f79595da14398dd3ab0c0d3222932d6a8a1b38c6e5082531acd2; it was 21ef5ee220671e5f514f240d1423514c5780d81d6ffba8720d19660079099925."}
目前,维护此变量的任务是手动的。在此期间,你可以通过 host_vars
、group_vars
、剧本中的 vars
,或者在运行 ansible-playbook
时使用 -e
等,直接自行设置该变量的值。
可用标签
要使用 --tags
标志运行特定的任务集,可用标签有:
vars
build
mongodb
repo
nginx
upgrade
service
Rocket.Chat 服务的管理
此角色将部署名为 rocketchat
的服务。
你可以使用你的本地服务管理系统来启动/停止/重新加载/重启该服务。
通过 Vagrant 测试
要测试此角色,你将在 tests/
目录中找到一个 Vagrantfile
和 provision.yml
剧本。
如你所料,这是用于通过 Vagrant 运行测试部署的。
如果你想测试一些更改,或仅仅想看看角色是如何工作的/在本地配置一个 Rocket.Chat 服务器,
可以 cd
进入 tests/
并运行 vagrant up
(前提是你已经安装了 Vagrant 和 VirtualBox)。
如果你查看 Vagrantfile
,你会看到为每个当前支持的平台都有一个部署 - 只需注释掉你不想部署的部分(别忘了在底部的 Ansible 配置)!
一旦部署完成,如果你想试用 Rocket.Chat,可以在浏览器中访问 http://localhost:4000
(端口 4000
可能会根据部署的平台不同而变化,查看你的平台的 forwarded_port
值)。
TODO
- 使用 Let's Encrypt 进行 SSL
许可证
MIT