当前位置: 首页 > news >正文

如何在Ubuntu 14.04上安装、配置和部署Rocket.Chat

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

简介

Rocket.Chat 是一个使用 Meteor 构建的开源消息应用程序。它支持视频会议、文件共享、语音消息,具有完整的 API 等功能。Rocket.Chat 非常适合那些希望对其通信拥有完全控制权的用户。

在本教程中,我们将在全新的 Ubuntu 服务器上安装和配置 Rocket.Chat,并设置 Nginx 作为反向代理,以提高安全性并使访问 Rocket.Chat 变得更加容易。完成后,您将拥有一个可以从几乎任何地方访问的可用的 Rocket.Chat 实例。

先决条件

要按照本教程操作,您需要:

  • 一个 Ubuntu 14.04 服务器,建议至少具有 1GB 的 RAM
  • 一个具有 sudo 权限的非 root 用户(《使用 Ubuntu 14.04 初始服务器设置》解释了如何设置此权限)
  • 一个完全注册的域名。您可以在 Namecheap 购买,或在 Freenom 免费获取。
  • 确保您的域名配置指向您的服务器。如果需要帮助,请查看本教程。
  • 一个 SSL 证书。生成自签名证书,从 Let’s Encrypt 获取免费证书,或从其他提供商购买。

步骤 1 — 安装依赖项

在本节中,我们将安装 Rocket.Chat 的一些依赖项,如 MongoDB 和 NodeJS。

首先,让我们启动 MongoDB。首先,我们需要添加一个密钥服务器,以便访问软件包。

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

然后,我们需要设置仓库。

echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list

现在,更新软件包列表。

sudo apt-get update

现在,我们可以继续安装 npmmongodb-orgcurlgraphicsmagick,这些都是 Rocket.Chat 的依赖项。

sudo apt-get install npm mongodb-org curl graphicsmagick

我们需要使用 NPM 安装一个软件包,以允许我们更改 Node 版本:

sudo npm install -g n

使用该软件包将 Node 版本更改为 0.10.40

sudo n 0.10.40

接下来,我们将安装 Rocket.Chat 本身并进行一些配置。

步骤 2 — 安装 Rocket.Chat

首先,使用 curl 下载最新稳定版本的 Rocket.Chat。

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

使用 tar 命令展开我们刚刚下载的存档。

tar zxvf rocket.chat.tgz

这将整个存档展开到一个名为 bundle 的目录中。让我们将 bundle 目录的内容移动到一个更容易记住的位置。

mv bundle Rocket.Chat

切换到我们将使用 NPM 安装 Rocket.Chat 的目录。

cd Rocket.Chat/programs/server

安装 Rocket.Chat。

npm install

返回到父级 Rocket.Chat 目录。

cd ../..

我们需要设置一些环境变量,以帮助 Rocket.Chat 跟踪诸如 URL、端口等信息。

首先,将 ROOT_URL 变量设置为您的域名。这必须是 URL 的形式。

export ROOT_URL=https://example.com/

将 MongoDB 的 URL 设置为 MONGO_URL 变量。

export MONGO_URL=mongodb://localhost:27017/rocketchat

PORT 变量设置为 3000

export PORT=3000

现在,您可以使用以下命令运行 Rocket.Chat:

node main.js

如果没有错误,它就可以工作了!不过,现在停止 Rocket.Chat 使用 CTRL+C。现在 Rocket.Chat 已安装,我们需要设置 Nginx 使用反向代理来代理其所有流量,从而使访问 Rocket.Chat 更加容易,并使用 SSL 证书加密所有通信。

步骤 3 — 使用 Nginx 设置反向代理

首先,安装 Nginx。

sudo apt-get install -y nginx

将您的证书私钥移动到 /etc/nginx/certificate.key

sudo cp /path/to/your/key /etc/nginx/certificate.key

例如,如果您创建了 Let’s Encrypt 证书,您将使用 sudo cp /etc/letsencrypt/live/your_domain_name/privkey.pem /etc/nginx/certificate.key

修改密钥的权限,以防止未经授权的人获取访问权限。

sudo chmod 400 /etc/nginx/certificate.key

将证书本身复制到 /etc/nginx/certificate.crt

sudo cp /path/to/your/cert /etc/nginx/certificate.crt

如果您创建了 Let’s Encrypt 证书,命令将类似于 sudo cp /etc/letsencrypt/live/your_domain_name/cert.pem /etc/nginx/certificate.crt

我们将为 Rocket.Chat 创建一个全新的配置,因此您可以删除默认配置以使其变得更加容易。

sudo rm /etc/nginx/sites-enabled/default

如果将来需要该文件,您仍然可以在 /etc/nginx/sites-available/default 中找到它。

使用 nano 或您喜欢的文本编辑器创建一个新的 /etc/nginx/sites-enabled/default

sudo nano /etc/nginx/sites-enabled/default

首先,我们将添加一个 upstream 块:


# 上游服务器

upstream backend {
server 127.0.0.1:3000;
}


在下面,让我们创建一个 `server` 块。第一部分告诉 Nginx 监听连接的端口,在本例中是 `:443`。它还让 Nginx 知道我们的主机名是什么。不要忘记用你的域名替换 `example.com`。

server {
listen 443;
server_name example.com;


在此之下,我们告诉 Nginx 存储 Rocket.Chat 的访问日志,并指向我们放置在 `/etc/nginx/certificate.key` 和 `/etc/nginx/certificate.crt` 的 SSL 证书和密钥。
error_log /var/log/nginx/rocketchat.access.log;ssl on;
ssl_certificate /etc/nginx/certificate.crt;
ssl_certificate_key /etc/nginx/certificate.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 不使用 SSLv3 参考:POODLE

现在我们用一个 `location` 块完成配置:
location / {proxy_pass http://example.com:3000/;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;
}

}


以下是完整的文件供参考:

server {
listen 443;
server_name example.com;
error_log /var/log/nginx/rocketchat.access.log;

ssl on;
ssl_certificate /etc/nginx/certificate.crt;
ssl_certificate_key /etc/nginx/certificate.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 不使用 SSLv3 参考:POODLElocation / {proxy_pass http://example.com:3000/;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;
}

}


保存并退出文件。最后,重新启动 Nginx 完成工作。```command
sudo service nginx restart

检查 Nginx 是否正在运行。

sudo service nginx status

如果你看到以下消息,表示 Nginx 正在运行:

 * nginx is running

如果你看到错误消息,请检查 /var/log/nginx/rocketchat.access.log/var/log/nginx/access.log 的日志,或者 /var/log/nginx/error.log 的错误日志。你也可以运行 nginx -t 来验证你的 Nginx 配置文件,大多数错误都会在这里显示。

确保你仍然在 Rocket.Chat 文件夹中。

cd ~/Rocket.Chat

然后运行以下命令重新启动 Rocket.Chat。

node main.js

Rocket.Chat 现在应该在 https://example.com 上线。你可以通过在你喜欢的浏览器中访问该地址来验证。

在下一节中,我们将配置 Rocket.Chat 以使用一个名为 forever-service 的 node 模块在启动时自动运行。

步骤 4 —— 配置 Rocket.Chat 为服务

forever-service 自动为 Rocket.Chat 等 node 应用程序生成 init 脚本。首先,我们需要安装 forever 本身,forever-service 依赖于它。

sudo npm install -g forever

然后,安装 forever-service

sudo npm install -g forever-service

使用 forever-service 创建一个服务:

sudo forever-service install -s main.js -e "ROOT_URL=https://example.com/ MONGO_URL=mongodb://localhost:27017/rocketchat PORT=3000" rocketchat
  • -s 标志后跟 main.js 告诉 forever-service 我们的脚本名为 main.js,而不是默认的 app.js
  • -e 标志后跟着 "ROOT_URL=https://example.com/ MONGO_URL=mongodb://localhost:27017/rocketchat PORT=3000" 将我们的环境变量传递给 forever-service。
  • 最后,rocketchat 告诉 forever-service 服务的名称。

要获取有关 forever-service 语法的更详细信息,请运行 forever-service --help

现在我们可以启动 Rocket.Chat。这将初始化由 forever-service 创建的 rocketchat 服务。

sudo start rocketchat

Rocket.Chat 现在应该在你在步骤 2 中设置的 URL 上线。确保你在这里使用 HTTPS。

Rocket.Chat 现在已经准备就绪。在下一节中,我们将向 Rocket.Chat 添加我们的第一个管理员用户,并在界面周围进行一次导览。

第五步 — 配置和使用 Rocket.Chat

访问之前设置 Rocket.Chat 的 URL。你应该会看到类似这样的页面:

!Rocket.Chat 登录页面

点击 注册新账户,然后输入你的第一个管理员用户信息。

!Rocket.Chat 注册

点击 提交,然后为你的新用户选择一个用户名:

!为新用户设置用户名

点击 使用此用户名,你将被带到主页:

!Rocket.Chat 主页

就是这样!你会看到右侧已经为你创建了一个 #general 频道。如果你点击它,你将被带到聊天室。随意尝试一下。

!默认的 #general 聊天室

现在让我们来看一下界面。首先,让我们通过点击 频道 旁边的小加号按钮来创建一个新频道:

!创建一个新频道

随意给它取一个名字:

!输入图片描述

现在点击 保存,你将被带到你的新频道。

要访问管理界面,点击你的用户名旁边的小箭头。它会拉出一个菜单:

!使用这个菜单,你可以设置你的状态,以及访问像管理菜单这样的东西。

点击 管理。它会弹出第二个菜单:

!这是管理菜单。

使用这个菜单,我们可以配置和管理 Rocket.Chat 安装的每个方面。在 用户 部分,我们可以管理单个用户的权限,甚至邀请新用户。我们还可以使用 集成 视图为我们的安装添加更多功能。

结论

恭喜!你现在拥有了自己的聊天解决方案:Rocket.Chat,在运行 Ubuntu 14.04 服务器上。它已经设置为使用 forever-service 在启动时自动启动,并且通过 Nginx 反向代理完全配备了 SSL。你现在可能想要添加更多成员,创建更多频道,或者可能查看管理菜单的集成部分。玩得开心!

相关文章:

如何在Ubuntu 14.04上安装、配置和部署Rocket.Chat

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 Rocket.Chat 是一个使用 Meteor 构建的开源消息应用程序。它支持视频会议、文件共享、语音消息,具有完整的 API 等功能…...

ISO 26262中的失效率计算:IEC TR 62380-Section 15-Switches and keyboards

目录 概要 1 开关和键盘的分类 2 开关和键盘失效率的计算 2.1 Switches and keyboards 2.1.1 Base失效率 2.1.2 接触数量 2.1.3 温度循环De-rating系数 概要 IEC TR 62380《电子组件、PCBs和设备的可靠性预计通用模型》是涵盖电路、半导体分立器件、光电组件、电阻器、电…...

Linux安全与高级应用(五)深入探讨Linux Shell脚本应用:从基础到高级

文章目录 深入探讨Linux Shell脚本应用:从基础到高级引言一、Shell脚本基础知识1. Shell的作用与分类2. 编写第一个Shell脚本 二、Shell变量的使用1. 变量的类型与定义2. 引号的使用3. 位置变量与预定义变量 三、重定向与管道操作1. 重定向操作2. 管道操作 四、计划…...

Java中等题-解码方法(力扣)

一条包含字母 A-Z 的消息通过以下映射进行了 编码 : "1" -> A "2" -> B ... "25" -> Y "26" -> Z 然而,在 解码 已编码的消息时,你意识到有许多不同的方式来解码,因为有些…...

【Git】git 从入门到实战系列(二)—— Git 介绍以及安装方法

文章目录 一、前言二、git 是什么三、版本控制系统是什么四、本地 vs 集中式 vs 分布式本地版本控制系统集中式版本控制系统分布式版本控制系统 五、安装 git 一、前言 本系列上一篇文章【Git】git 从入门到实战系列(一)—— Git 的诞生,Lin…...

【QT 5 QT 6 构建工具qmake-cmake-和-软件编译器MSVCxxxvs MinGWxxx说明】

【QT 5报错:/xxx/: error: ‘class Ui::frmMain’ has no member named ‘xxx’-和-软件编译器MSVCxxxvs MinGWxxx说明】 1、前言2 、qt 中 Qmake CMake 和 QBS1-qmake2-Cmake3-QBS4-官网一些说法5-各自特点 3、软件编译套件1-Desktop Qt 6.7.2 llvm-mingw 64-bit2-…...

SD卡参数错误:深度解析与数之寻软件恢复实战

一、SD卡参数错误:数据与设备的隐形杀手 在数字化时代,SD卡作为便携存储设备,广泛应用于相机、手机、无人机及各类电子设备中,承载着人们珍贵的照片、视频、文档等重要数据。然而,SD卡在使用过程中,有时会…...

深入理解和应用RabbitMQ的Work Queues模型

文章目录 1. 场景模拟2. 消息发送3. 消息接收4. 测试5. 能者多劳6. 总结 当你在处理消息时,可能会遇到这样的问题:消息的生产速度远远大于消费速度,导致消息堆积。这时候,Work Queues(工作队列)模型就能派上…...

嵌入式面试八股文(三)·野指针产生原因和解决方法、指针函数和函数指针的区别

目录 1. 野指针产生原因和解决方法 1.1 产生的原因 1.1.1 指针未能初始化 1.1.2 指针指向的内存被释放 1.1.3 指针指向的对象被重复释放 1.2 解决方法 1.2.1 初始化指针 1.2.2 指针空置 1.2.3 避免悬挂指针 2. 指针函数和函数指针的区别 2.1 定义不同 2…...

OpenCV 中 CV_8UC1,CV_32FC3,CV_32S等参数的含义

在OpenCV中,创建图像时需要指定图像的类型,这些类型通常通过常量来表示,例如 CV_8UC1、CV_32FC3、CV_32S 等。这些常量定义了图像的数据类型和通道数,具体含义如下: CV_8UC1: CV_8U 表示每个像素由一个8位无…...

v 3 + vite + ts 自适应布局(postcss-pxtorem)

1、 当pc端、移动端H5等项目中,需要根据当前浏览器窗口或屏幕尺寸,来自适应的改变页面内元素尺寸时,就可以借助下述插件和相关配置来实现。 2、适用范围:vue3 vite ts 步骤一:相关依赖下载下载相关依赖 npm inst…...

(MTK)java文件添加简单接口并配置相应的SELinux avc 权限笔记2

文章简介 承接上一篇笔记,该份笔记是笔者深思熟虑后根据实战应用所总结出来的精华内容,该文章内容主要包括配置avc权限的使用场景以及其上下环节所需的准备。 使用场景 1.底层驱动有无配置好相应的串口 2.开启相应的selinux avc 权限 3.在framework层配置相应的 (config…...

Linux安全与高级应用(六)Linux Shell脚本编程的高级应用:条件测试与if语句的妙用

文章目录 Linux Shell脚本编程的高级应用:条件测试与if语句的妙用一、条件测试操作详解1. 字符串比较2. 整数比较3. 文件测试4. 逻辑测试 二、if语句的结构与应用1. 单分支结构2. 双分支结构3. 多分支结构 三、实际应用案例1. 需求描述2. 实现思路3. 代码实现4. 设置…...

升级MacOS(Mojave)后使用git问题

将MacOS升级到Mojave版本后,使用git工具时,出现如下错误提示: guochongxindeMacBook-Pro:study guochongxin$ git status . xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Librar…...

基于PFC和ECN搭建无损RoCE网络的工作流程分析

无损RoCE网络概念 RDMA(Remote Direct Memory Access,远程直接内存访问)是一种为了解决网络传输中服务器端数据处理延迟而产生的技术。RDMA 将用户应用中的数据直接传入服务器的存储区,通过网络将数据从一个系统快速传输到远程系…...

射频功率放大器调测简略

射频功率放大器除了在设计时的难度外,其次就是调测阶段,设计时仿真可以通过不断更改仿真参数来达到理想状态,更关键的是不用提心吊胆的把烧器件,而处于调测阶段则很容易出现烧坏器件的情况,特别是功率大的射频功率放大…...

Linux使用docker搭建Redis 哨兵模式

1. Redis Sentinel 简介 Redis Sentinel 是 Redis 高可用解决方案的一部分。它提供了监控、通知和自动故障转移功能,确保 Redis 集群在主节点发生故障时仍然可以继续工作。以下是 Redis Sentinel 的主要功能和作用:监控: Sentinel 会不断检查…...

springboot给类进行赋初值的四种方式

目录 1. 使用Value和ConfigurationProperties2. 使用PropertySource创建Person.java写一个测试类 3. 使用ImportResourceStudent类创建beans.xml在主类中引入测试 其他心得 1. 使用Value和ConfigurationProperties 这里不加赘述了,前面我也发过,这里就放…...

Day32 | 1049. 最后一块石头的重量 II 494. 目标和 474.一和零

语言 Java 1049. 最后一块石头的重量 II 最后一块石头的重量 II 题目 有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 …...

linux 查看一个端口是否被占用

1 linux命令 要在Linux中查看一个端口是否被占用,可以按照以下步骤进行操作: 打开终端(Terminal)。 运行以下命令来列出系统上所有正在监听的端口及其对应的进程: sudo netstat -tuln | grep LISTEN这将显示所有正在…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则&#xf…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...

Go语言多线程问题

打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

【网络安全】开源系统getshell漏洞挖掘

审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

HTML前端开发:JavaScript 获取元素方法详解

作为前端开发者,高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法,分为两大系列: 一、getElementBy... 系列 传统方法,直接通过 DOM 接口访问,返回动态集合(元素变化会实时更新)。…...