如何在 Ubuntu 18.04 上部署 Rocket.Chat

2023-10-22

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 使用它作为数据存储。

We will 安装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

Add the 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.

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

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

下载完成后提取存档 and 重命名目录 to 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并继续执行后续步骤。

创建一个 Systemd 单元#

为了将 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 and 如何在 Ubuntu 18.04 上使用 Let’s Encrypt 保护 Nginx指南中您应该已经安装了 Nginx 并配置了 SSL 证书。

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

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

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 的预配置网关和代理。 选择此选项将使您能够访问 Rocket.Chat Apps 市场,并且推送通知等其他功能将开箱即用。

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

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

结论#

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

您现在应该访问Rocket.Chat 文档页面并了解有关新聊天系统的更多信息。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 18.04 上部署 Rocket.Chat 的相关文章

随机推荐

  • 关于 Linux 导出命令您需要了解的一切

    The exportLinux中的命令是一个内置的shell命令 用于设置环境变量在当前 shell 会话中 通过标记变量或函数以便随后导出到子进程的环境中 export命令确保这些变量对子进程的可用性 目录 hide 1 导出命令的语法
  • 安装、配置和使用 Linux NIS 服务器

    我们使用 Linux NIS 服务器 网络信息服务 用于在网络上的系统之间共享存储在平面文件中的关键数据 通常理想的做法是使用共享存储库 例如 NIS 来存储用户和组信息 而不是将它们存储在 etc passwd 等平面文件中 那么这样做有
  • NumPy Meshgrid 从零到英雄

    Python 的 NumPy是处理数组 矩阵数据最常用的库 矩阵可以被视为二维值 网格 其中网格中每个值的位置由一对值 i j 给出 这些值表示该值在网格中的行号和列号 在本教程中 我们将了解如何使用 Python 中的 NumPy 库创建
  • Python 中的快速排序算法(逐步)

    在编程世界中 大多数问题的答案都可以在存储在各种数据结构中的数据中并借助一些标准算法找到 今天 我们将讨论快速排序算法以及如何在 Python 中实现它 在开始确定这些答案之前 您将需要一组数据 在许多情况下是排序数据 来执行进一步的计算
  • Python 优先级队列(分步指南)

    队列是一种按称为 FIFO 的顺序检索数据项的数据结构 先进先出 在 FIFO 中 第一个插入的元素将首先从队列中弹出 优先级队列是队列数据结构的高级版本 具有最高优先级的元素被放置在优先级队列的最顶部 并且是第一个被出列的元素 有时 队列
  • 如何检查 MySQL 数据库和表的大小

    MySQL是一种关系型数据库管理系统 广泛用作Linux系统的数据库系统 本文将帮助您通过 SQL 查询计算 MySQL 或 MariaDB 服务器中表和数据库的大小 MySQL将与数据库中的表相关的所有信息存储在information s
  • 如何更改 Azure 应用服务中的时区

    TimeZone 对于时间关键的应用程序起着重要作用 在这种情况下 您必须为正在运行的操作系统设置正确的时区 我们的一位用户询问有关在 Azure 应用服务中设置时区的问题 在本教程中 您将学习如何为运行的应用程序设置时区Azure 应用服
  • 如何在 Bash 中将标准错误存储到变量

    在 Bash 中 您可以使用以下命令将命令的标准错误输出存储到变量中 2 gt 1 运营商和 命令替换语法 这里 2 gt 将错误消息重定向到 1 代表标准输出 在 bash shell 的情况下 它作为标准输出设备 For example
  • C 程序求三个数字中最大的

    在本文中 我们将探讨计算机编程中一个常见且简单的问题 找到三个给定数字中最大的数字 我们用来解决这个问题的语言是 C 一种通用的过程计算机编程语言 C 提供了有效映射到典型机器指令所需的结构 换句话说 它是一种流行的系统编程语言 尽管它也用
  • 如何使用 DNF 将 Fedora 23 升级到 Fedora 24

    软呢帽24最终版本已发布于2016 年 6 月 21 日 Fedora 工作站用户可能需要升级工作站才能使用最新版本 本教程将帮助您将 Fedora 23 升级到 Fedora 24 工作站使用命令行实用程序 DNF 这是升级 Fedora
  • RDBMS 与 NoSQL:为您的项目选择正确的数据库

    为项目选择正确的数据库可能是一个关键决策 会极大地影响项目的成功 最流行的两类数据库是关系数据库管理系统 RDBMS 和 NoSQL 数据库 每种都有其优点和缺点 选择最终取决于项目的具体要求 本文将对 RDBMS 和 NoSQL 数据库进
  • 如何在 Linux 上设置 LogMeIn (Hamachi) VPN

    Hamachi 用于使用或设置 VPN 并通过 VPN 网络连接系统 这提供了一种快速 更简单的方法来创建 VPN 网络和连接系统 您可以在 logmein com 上创建免费帐户并创建网络 您可以使用免费帐户在每个网络中添加最多 5 个系
  • Java 技巧:将字符串转换为日期

    在 Java 编程领域 日期和时间操作是一项基本技能 但是 日期通常作为字符串传递 这需要将这些字符串转换为 Date 对象以进行有效操作 在本综合指南中 我们将详细介绍在 Java 中将字符串转换为日期的过程 了解基础知识 表示日期的字符
  • UFW:通用防火墙规则和命令

    防火墙是一种安全系统 它根据预定义的安全规则监视和控制传入和传出的网络流量 它是任何安全网络的重要组成部分 无论是个人计算机还是大型企业网络 Uncomplicated Firewall UFW 是一个用户友好的命令行界面 用于管理 ipt
  • 编辑 crontab 文件的要点

    在系统管理领域 有一种强大的工具可以让您高效地安排任务 crontab 使用 crontab 您可以在指定的日期和时间执行脚本和命令 这使其成为基于 Unix 的系统中非常有用的实用程序 但是 要充分利用其潜力 您需要了解编辑 cronta
  • 如何在 Linux 中创建交换文件

    交换文件是 Linux 操作系统的重要组件 它通过提供额外的虚拟内存来帮助提高性能 它是在系统物理内存 RAM 填满时保留用作虚拟内存的磁盘空间 在 Linux 中创建交换文件有助于防止系统崩溃和不稳定 在本文中 我们将逐步讨论如何在 Li
  • 如何在 phpMyAdmin 中添加多个主机

    phpMyAdmin 默认配置仅允许连接到本地 MySQL 服务器 但是如果我们运行多个数据库服务器 那么如果我们可以从单个 phpMyAdmin 安装中选择需要连接的服务器 那就太好了 本操作指南将帮助您在 phpMyAdmin 中添加多
  • Bash 选择(制作菜单)

    在本教程中 我们将介绍以下基础知识select在 Bash 中构建 The select构造允许您生成菜单 Bash select构造 The select构造从项目列表生成菜单 它的语法几乎与for loop select ITEM in
  • 如何在 CentOS 7 上安装和配置 Redmine

    Redmine 是最流行的开源项目管理和问题跟踪软件工具之一 它是跨平台和跨数据库的 构建在 Ruby on Rails 框架之上 Redmine包括对多个项目 wiki 问题跟踪系统 论坛 日历 电子邮件通知等的支持 在本教程中 我们将介
  • 如何在 Ubuntu 18.04 上部署 Rocket.Chat

    Rocket Chat 是一个开源团队交流平台 是自托管的 Slack 替代品 它使用 Meteor 框架开发 提供各种功能 包括帮助台聊天 文件共享 视频会议 语音消息 API 等 对于想要托管自己的聊天系统的公司和社区来说 Rocket