如何在Ubuntu 18.04上部署Rocket.Chat

Rocket.Chat是一个开源团队交流平台,是自托管的Slack替代方案。 它使用Meteor框架开发,并提供各种功能,包括服务台聊天,文件共享,视频会议,语音消息,API等。

对于希望托管自己的聊天系统的公司和社区,Rocket.Chat是一个完美的解决方案。

在本教程中,我们将向您展示如何在Ubuntu 18.04服务器上部署Rocket.Chat以及如何将Nginx配置为SSL反向代理。

先决条件

在继续本教程之前,请确保您具有以下先决条件。

  • Ubuntu 18.04服务器。 根据官方的Rocket.Chat系统要求,您至少需要1G的RAM。
  • 指向您的服务器IP地址的域名。 我们将使用 chat.example.com
  • 按照本教程安装Nginx。
  • 您已经为您的域安装了SSL证书。 您可以按照本教程生成免费的Let’s Encrypt SSL证书。

安装Node.js#

首先更新系统软件包列表:

sudo apt update

安装Node.js,npm以及从源代码构建npm软件包所需的所有其他依赖项:

sudo apt install nodejs npm build-essential curl software-properties-common graphicsmagick

在撰写本文时,建议的Rocket.Chat Node.js版本是Node.js v8.11.3。

我们将使用 n,这是一个npm软件包,可让我们以交互方式管理Node.js版本。

发出以下命令进行安装 n 以及推荐的Node.js版本:

sudo npm install -g inherits nsudo n 8.11.3

安装MongoDB#

MongoDB是一个NoSQL面向文档的数据库,被Rocket.Chat用作数据存储。

我们将从官方的MongoDB存储库安装MongoDB。

导入MongoDB公钥,并使用以下命令启用正式的MongoDB存储库:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4sudo add-apt-repository 'deb [arch=amd64] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse'

启用apt信息库后,更新软件包列表并通过键入以下命令安装MongoDB:

sudo apt updatesudo apt install mongodb-org

安装完成后,启用并启动MongoDB服务:

sudo systemctl start mongodsudo systemctl enable mongod

创建新的系统用户号

创建一个名为的新用户和组 rocket,它将运行Rocket.Chat实例,键入:

sudo useradd -m -U -r -d /opt/rocket rocket

添加 www-data 用户到新用户组并更改 /opt/rocket 目录权限,以便Nginx可以访问Rocket.Chat安装:

sudo usermod -a -G rocket www-datasudo chmod 750 /opt/rocket

安装Rocket.Chat#

切换到用户 rocket

sudo su - rocket

以下命令假定您当前以用户身份运行 rocket

下载带有curl的最新稳定版Rocket.Chat:

curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz

下载完成后,解压缩存档并将目录重命名为 Rocket.Chat

tar zxf rocket.chat.tgzmv bundle Rocket.Chat

换成 Rocket.Chat/programs/server 目录并安装所有必需的npm软件包:

cd Rocket.Chat/programs/servernpm install

为了在创建systemd单元和使用Nginx设置反向代理之前测试我们的安装,我们将设置所需的环境变量并启动Rocket.Chat服务器

export PORT=3000export ROOT_URL=http://0.0.0.0:3000/export MONGO_URL=mongodb://localhost:27017/rocketchat

改回 Rocket.Chat 目录并启动 Rocket.Chat 通过发出以下命令来启动服务器:

cd ../../node main.js

如果没有错误,您应该看到以下输出:

➔ +---------------------------------------------+
➔ |                SERVER RUNNING               |
➔ +---------------------------------------------+
➔ |                                             |
➔ |  Rocket.Chat Version: 0.71.1                |
➔ |       NodeJS Version: 8.11.3 - x64          |
➔ |             Platform: linux                 |
➔ |         Process Port: 3000                  |
➔ |             Site URL: http://0.0.0.0:3000/  |
➔ |     ReplicaSet OpLog: Disabled              |
➔ |          Commit Hash: e73dc78ffd            |
➔ |        Commit Branch: HEAD                  |
➔ |                                             |
➔ +---------------------------------------------+

使用以下命令停止Rocket.Chat服务器 CTRL+C

通过键入切换回您的sudo用户 exit 并继续下一步。

创建一个系统单位

要将Rocket.Chat作为服务运行,我们将创建一个 rocketchat.service 单位文件 /etc/systemd/system/ 目录。

sudo nano /etc/systemd/system/rocketchat.service

粘贴以下内容:

/etc/systemd/system/rocketchat.service

[Unit]
Description=Rocket.Chat server
After=network.target nss-lookup.target mongod.target

[Service]
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocket
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat ROOT_URL=https://chat.example.com PORT=3000
ExecStart=/usr/local/bin/node /opt/rocket/Rocket.Chat/main.js

[Install]
WantedBy=multi-user.target

通知systemd我们已经创建了一个新的单元文件,并通过执行以下命令启动Rocket.Chat服务:

sudo systemctl daemon-reloadsudo systemctl start rocketchat

通过键入以下命令检查服务状态:

sudo systemctl status rocketchat
* rocketchat.service - Rocket.Chat server
   Loaded: loaded (/etc/systemd/system/rocketchat.service; disabled; vendor preset: enabled)
   Active: active (running) since Wed 2018-11-07 14:36:24 PST; 5s ago
 Main PID: 12693 (node)
    Tasks: 10 (limit: 2319)
   CGroup: /system.slice/rocketchat.service
           `-12693 /usr/local/bin/node /opt/rocket/Rocket.Chat/main.js

最后,使用以下命令启用在启动时自动启动Rocket.Chat服务:

sudo systemctl enable rocketchat

使用Nginx设置反向代理

如果您遵循我们如何在Ubuntu 18.04上安装Nginx以及如何在Ubuntu 18.04上使用Let’s Encrypt来保护Nginx指南,则您应该已经安装了Nginx并配置了SSL证书。

现在,我们需要为Rocket.Chat安装创建一个新的Nginx服务器块。

打开您的文本编辑器并创建以下文件:

sudo nano /etc/nginx/sites-available/chat.example.com.conf

/etc/nginx/sites-available/chat.example.com.conf

upstream rocketchat_backend {
  server 127.0.0.1:3000;
}

server {
    listen 80;
    server_name chat.example.com;

    include snippets/letsencrypt.conf;
    return 301 https://chat.example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name chat.example.com;

    ssl_certificate /etc/letsencrypt/live/chat.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/chat.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/chat.example.com/chain.pem;
    include snippets/ssl.conf;

    access_log /var/log/nginx/chat.example.com-access.log;
    error_log /var/log/nginx/chat.example.com-error.log;

    location / {
        proxy_pass http://rocketchat_backend/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forward-Proto http;
        proxy_set_header X-Nginx-Proxy true;

        proxy_redirect off;
    }
}

通过创建从文件到启用站点的目录的符号链接来启用新服务器块:

sudo ln -s /etc/nginx/sites-available/chat.example.com.conf /etc/nginx/sites-enabled/

重新加载Nginx服务以使更改生效:

sudo systemctl reload nginx

配置Rocket.Chat#

打开浏览器并输入: http://chat.example.com

假设安装成功,将为您提供Rocket.Chat设置向导,该向导将指导您设置第一个管理员用户,配置组织和注册服务器以接收免费的推送通知等。

初始设置向导的第一部分将要求您设置管理员用户:

输入管理员信息后,请点击 Continue 按钮,然后在下一步中输入您的组织信息:

Rocket.Chat设置向导-步骤2

初始设置向导的第三部分将提示您输入服务器信息:

Rocket.Chat设置向导-步骤3

在下一步中,将询问您是否要使用Rocket.Chat的预配置网关和代理。 选择此选项将使您可以访问Rocket.Chat Apps市场,而其他功能(如推送通知)也将立即可用。

Rocket.Chat设置向导-步骤4

做出选择,点击 Continue 按钮,您将被重定向到以下页面,表明您的工作区已准备就绪,可以使用:

Rocket.Chat设置向导-步骤4

点击 Go to your workspace 按钮,您将被重定向到以admin用户身份登录的Rocket.Chat仪表板。

结论#

在本教程中,您学习了如何在Ubuntu 18.04上安装Rocket.Chat以及如何将Nginx设置为反向代理。

现在,您应该访问Rocket.Chat文档页面,并详细了解新的聊天系统。

如果您在安装过程中遇到任何问题,请随时发表评论。

火箭聊天nodejs Ubuntu的MongoDB的

Sidebar