用nginx和letsencrypt 在Ubuntu 16.04上安装Rocket.Chat

时间:2020-02-23 14:44:52  来源:igfitidea点击:

本教程将介绍在Ubuntu 16.04上安装Rocket.chat的步骤。
Rocket.Chat是一种使用Meteor Web框架构建的开源消息应用程序。

Rocket.Chat具有以下功能:视频会议Voice MessagesFile共享特色API

Rocket.Chat是Hipchat和Slack聊天平台的替代方案,适用于愿意完全控制他们的通信 - 语音,视频和文件共享。

在Ubuntu 16.04上安装Rocket.Chat

我们的Rocket.Chat安装将由Letsencrypt提供的Nginx Web服务器和SSL。
所以我们首先在我们设置Rocket.chat之前安装依赖项。

在Ubuntu 16.04上安装nginx和certbot-auto

让我们安装Nginx和Certbot客户端,我们将用于主机Rocket.chat。
我们还将使用UFW防火墙来保护我们的应用程序

$sudo apt-get install nginx ufw g++ build-essential

使用以下命令安装CERTBOT-AUTO。

# wget https://dl.eff.org/certbot-auto -P /usr/local/bin
# chmod a+x /usr/local/bin/certbot-auto

我假设我们有一个子域,我们将在nginx上使用Nginx来服务Rocket.Chat应用程序。

请求Letsencrypt SSL证书与Rocket.chat一起使用。

要获取LetSencrypt证书,我们使用该命令。

# export DOMAIN="chat.domain.com"
# export EMAIL_ALERT="Hyman@theitroad"
# /usr/local/bin/certbot-auto certonly --standalone -d $DOMAIN  \
--preferred-challenges http --agree-tos -n -m  $EMAIL_ALERT --keep-until-expiring

请记住将Chat.Domain.com与Rocket.chat和Hyman @ OniTor中的有效域/子域替换为Rocket.Chat @ OniTor,以便在SSL即将到期时接收警报。

成功的SSL生成应导致如下所示的消息:

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/chat.domain.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/chat.domain.com/privkey.pem
Your cert will expire on 2016-07-04. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew *all* of your certificates, run
"certbot-auto renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG/Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

chat.domain.com是真实域或者子域。

在Ubuntu上安装MongoDB 16.04

Rocket.Chat使用MongoDB存储其数据。
使用以下命令将其安装在Ubuntu上。

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
sudo apt-get update
sudo apt-get install -y mongodb-org curl

设置MongoDB副本集

Rocket.Chat使用MongoDB Replica可选择通过Meteor Oplog Tailing来提高性能。
使用yaml语法编辑文件/etc/mongod.conf。

replication:
   replSetName: "001-rs"

我们需要重新启动MongoDB服务:

# systemctl restart mongod
# systemctl enable mongod

启动MongoDB shell并启动副本集:

# mongo
> rs.initiate()

我们应该如下所示的

{
        "info2" : "no configuration specified. Using a default configuration for the set",
        "me" : "127.0.0.1:27017",
        "ok" : 1,
        "operationTime" : Timestamp(1522961588, 1),
        "$clusterTime" : {
                "clusterTime" : Timestamp(1522961588, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        }
}

注意"确定"值应该是1.任何其他值,例如:93,意味着出现问题

将Rocket.chat添加以下环境变量为~/.bashrc添加

export MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=001-rs

现在来源文件:

# source ~/.bashrc

在Ubuntu 16.04上安装GraphicsMagick

GraphicsMagick是一种强大的工具和库集合,用于读取,写入和操纵图像中的任何一种更流行的图像格式,包括GIF,JPEG,PNG,PDF和WebP。

$sudo apt-get install graphicsmagick

在Ubuntu 16.04上安装node.js

使用以下教程在Ubuntu 16.04上安装Node.js:

在CentOS 7/Ubuntu 16.04/Arch Linux/MacOS上安装Node.js

安装Rocket.chat.

现在下载稳定版本的Rocket.Chat:

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

然后untar二进制版本:

# tar zxvf rocket.chat.tgz

这会将所有内容扩展到Bundle目录中。
接下来,确保MongoDB服务器已启动并运行。
然后,设置环境变量并运行ROCKET.CHAT服务器:

mv bundle Rocket.Chat
cd Rocket.Chat/programs/server
npm install
cd ../..
export ROOT_URL=http://localhost:3000/
export PORT=3000
export MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=001-rs

现在,我们可以使用以下命令运行Rocket.chat:

$sudo node main.js

使用SSL配置nginx

我们现在需要为Rocket.chat服务配置nginx。
将以下内容添加到文件/etc/nginx/conf.d/rocker-chat.conf中

# Upstream definition

upstream backend {
    server 127.0.0.1:3000;
}

# http to https redirection
server {
  listen 80;
  server_name chat.domain.com;
  rewrite ^ https://$server_name$request_uri? permanent;
}

# HTTPS Server
server {
    listen 443;
    server_name chat.domain.com;
    error_log /var/log/nginx/rocket-chat.access.log;
    ssl on;
    ssl_certificate /etc/letsencrypt/live/chat.domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/chat.domain.com/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don’t use SSLv3 ref: POODLE

    location/{
        proxy_pass http://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;
    }
}

将Rocket.chat配置为服务

要使Rocker.chat启动服务器启动,我们需要永远使用它。
Forever NPM软件包提供Forever-Service,它会自动生成用于Rocket.chat等节点应用程序的Init脚本。

使用命令安装永远:

$sudo npm install -g forever

然后,安装Forever-Service。

$sudo npm install -g forever-service

现在使用Forever-Service创建服务:

# forever-service install -s main.js -e "ROOT_URL=https://localhost/\
MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=001-rs PORT=3000" rocket-chat

-s指定脚本名称,在这种情况下是main.js -e之后是环境变量我们使用的是火箭聊天是我们正在创建的服务名称

我们应该如下所示的

Platform - Ubuntu 16.04 LTS
rocket-chat provisioned successfully

Commands to interact with service rocket-chat
Start   - "sudo service rocket-chat start"
Stop    - "sudo service rocket-chat stop"
Status  - "sudo service rocket-chat status"
Restart - "sudo service rocket-chat restart"″ message=

现在我们可以开始火箭。
这将初始化由Forever-Service创建的火箭聊天服务。

$sudo service rocket-chat start

要检查状态,请使用:

$sudo service rocket-chat status