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

devtools/2024/11/15 8:22:18/

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

简介

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。你现在可能想要添加更多成员,创建更多频道,或者可能查看管理菜单的集成部分。玩得开心!


http://www.ppmy.cn/devtools/88991.html

相关文章

全球实况天气预报接口,含空气六因子,支持多语言,返回json格式 (国外天气)

该接口支持全球20万城市,地图上有的几乎都可以返回天气数据,支持20余种语言。 包含基本天气信息、湿度、能见度、气压、降雨概率、日出日落、月初月落、空气质量指数、主要污染物等,可按地名、IP、经纬度坐标查询。 接口文档 请先注册账号获…

【autodl】stable-diffusion-3-medium快速部署

sd3m是一个文生图模型,支持英文提示词, 支持自然语言 stable diffusion 3 medium 是一个开源模型,本教程是在autodl上部署modelscope上的sd3模型。下面是运行的webui页面图 配置 充值autodl ,并且创建一个服务器:我的…

从根儿上学习spring 九 之run方法启动第四段(3)

图5 接着上一篇的从根儿上学习spring 四(2)--- run方法启动第四段,我们继续分析AbstractBeanFactory#doGetBean方法。 图5-263行 isPrototypeCurrentlyInCreation(beanName)是判断字符串beanName是否存在于线程变量prototypesCurrentlyInCreation中,如…

js强制刷新

在JavaScript中触发强制刷新通常指的是强制浏览器重新加载页面,忽略缓存。以下是几种实现强制刷新的方法: ### 使用 location.reload() 这是最简单的方法,它会重新加载当前页面。 javascript location.reload(true); // 传入true参数表示强制…

第128天:内网安全-横向移动IPCATSC 命令Impacket 套件CS 插件全自动

环境部署 案例一: 域横向移动-IPC-命令版-at&schtasks 首先是通过外网web访问到win2008,获得了win2008的权限,这一步不做演示 因为里面的主机都不出网,所以只能利用win2008进行正向或者反向连接 信息收集 域内用户信息&…

体系结构论文导读(三十一)(上):Soft errors in DNN accelerators: A comprehensive review

Soft errors in DNN accelerators: A comprehensive review DNN 加速器中的软错误:全面回顾 一、文章核心 深度学习任务覆盖了广泛应用。DNN算法被实现于不同系统上,从小型嵌入式设备到数据中心。DNN加速器(例如GPU、FPGA、ASIC&#xff0…

Springboot 3.x - Reactive programming (2)

This article mainly introduces the difference between Webflux and traditional MVC web,and how to integrate it into springboot3.x or 2.x. 一、WebFlux vs WebMVC Blocking Web (Servlet) and Reactive Web (WebFlux) are two paradigms in Spring Web development, …

6 定时器

6 定时器 1、基本概念2、使用库函数实现 1、基本概念 定时器的基本工作框架 STM32F103共支持8个定时器 假如分频器PSC的值0,则PSC分频系数1,表示输入1个时钟信号,CNT计数器加1,1S加1,当CNT计数器的值3,跟ARR自动重载寄存器的值21相等时,就…