RocketChat.Server

Rocket.Chat Ansible Galaxy Travis-CI

使用 Ansible 部署 Rocket.Chat,最佳的开源网页聊天平台!

注意事项

  • master 已经在 v2.0 上进行了变基,现在是该角色的最新代码(而不再是与 1.9 兼容的版本)。如果你想要最新的代码,不需要指定版本,ansible-galaxy 会自动拉取最新标签,或者可以指定 version: master 永远保持跟进开发。
  • v1.9 用户可以继续使用标签 v1.9v1.9.0,并且 ansible_1.9 分支仍然存在,不过几乎不会再有任何回补。

特点

  • 可选的完整栈部署: 完全部署 Rocket.Chat,包括 MongoDBNginx 反向 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_backuptrue
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 变量

设置在 vars/RedHat_7.yml

名称 默认值 描述
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 变量

设置在 vars/Debian_8.yml

名称 默认值 描述
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 变量

设置在 vars/Ubuntu_15.yml

名称 默认值 描述
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 变量

设置在 vars/Ubuntu_14.yml

名称 默认值 描述
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_varsgroup_vars、剧本中的 vars ,或者在运行 ansible-playbook 时使用 -e 等,直接自行设置该变量的值。

可用标签

要使用 --tags 标志运行特定的任务集,可用标签有:

  • vars
  • build
  • mongodb
  • repo
  • nginx
  • upgrade
  • service

Rocket.Chat 服务的管理

此角色将部署名为 rocketchat 的服务。 你可以使用你的本地服务管理系统来启动/停止/重新加载/重启该服务。

通过 Vagrant 测试

要测试此角色,你将在 tests/ 目录中找到一个 Vagrantfileprovision.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

问题/贡献

欢迎: 提交问题 贡献代码

安装
ansible-galaxy install RocketChat.Server
许可证
mit
下载
12.5k
拥有者
The communications platform that puts data protection first.