前言
突发奇想想搭建一个Rocket.chat,看了一些blog和官方文档,因为vps架构限制,只尝试过docker和手动搭建,但是都有很多问题。
官方文档
过程
docker(不推荐)
docker方法我尝试过,但是并没有成功,有兴趣的可以试一下
安装docker docker-compose
apt install docker.io docker-compose -y # ubuntu
docker-compose.yml
运行
docker-compose up -d
snap(未尝试)
贴一个官方文档链接
sudo snap install rocketchat-server
snap get rocketchat-server
手动安装
安装node
mkdir /usr/local/nodejs
cd /usr/local/nodejs
下载node v14.9.0
wget https://nodejs.org/dist/v14.9.0/node-v14.9.0-linux-x64.tar.gz #可以更换其他版本,但要保证version>=v14.9.0
解压&删除压缩包
tar -zxvf node-v14.9.0-linux-x64.tar.gz
rm -rf node-v14.9.0-linux-x64.tar.gz
mv node-v14.9.0-linux-x64/* /usr/local/nodejs
设置软链接
ln -s /usr/local/nodejs/bin/node /usr/local/bin
ln -s /usr/local/nodejs/bin/npm /usr/local/bin
测试
node -v
npm -v
安装mongodb
安装gnupg
apt install gnupg
导入公钥
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
# 这里可以将`server-4.4.asc`改为`server-x.x.asc`,需要哪个版本就改为哪个版本,例如:5.0 4.0
导入源
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
# 如果在上一步更改了版本号,这里也需要更改,而且要更改两处,不要忘记了
apt update
安装mongo
apt install mongodb-org -y
sudo systemctl start mongod.service
sudo systemctl enable mongod
修改mongo配置文件
vim /etc/mongod.conf
配置文件改成这样
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
engine: wiredTiger
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
net:
port: 27017
bindIp: 127.0.0.1
processManagement:
fork: true
timeZoneInfo: /usr/share/zoneinfo
replication:
replSetName: rs01
sudo systemctl restart mongod.service
安装rocketchat
安装必要软件
apt install curl build-essential graphicsmagick
下载源码
curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz
tar -zxvf rocket.chat.tgz -C /tmp
cd /tmp/bundle/programs/server && npm install --production
sudo mv /tmp/bundle /opt/Rocket.Chat
新建rocketchat用户,配置权限
sudo useradd -M rocketchat && sudo usermod -L rocketchat
sudo chown -R rocketchat:rocketchat /opt/Rocket.Chat
设置版本
NODE_PATH=$(which node)
写入systemd service文件
cat << EOF |sudo tee -a /lib/systemd/system/rocketchat.service
[Unit]
Description=The Rocket.Chat server
After=network.target remote-fs.target nss-lookup.target nginx.service mongod.service
[Service]
ExecStart=$NODE_PATH /opt/Rocket.Chat/main.js
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocketchat
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl edit rocketchat # 这里一般是vim
填入
[Service]
Environment=ROOT_URL=http://localhost:3000
Environment=PORT=3000
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01
Environment=MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01
创建副本集
mongo --eval "printjson(rs.initiate())"
启动rocket.chat
sudo systemctl enable --now rocketchat
等待一段时间查看日志
sudo systemctl status rocketchat
显示如下图就是启动好了
浏览器打开 http://{ip}:3000即可访问
(因为我的vps是ipv6 only,但是rocketchat监听了ipv4地址,所以无法访问,我也没解决,大佬可以帮忙分析一下怎么解决)
解决方法——rocketchatCTL
rocketchatCTL官方文档
仅支持以下系统
bash -c "$(curl https://install.rocket.chat)"
按照提示填入必要的信息
然后静静等待完成,注意,它这里用的node版本是v12.x mongodb使用的是v4.0
但是,rocketchat不支持这个版本的node和mongodb
那么只能更换node和mongodb了
卸载nodejs和mongodb
apt remove nodejs npm
apt remove mongodb-org mongodb-org-mongos mongodb-org-server mongodb-org-shell mongodb-org-tools
sudo rm -fr /var/lib/mongodb/* # 清除旧版本缓存
systemctl restart rocketchat
systemctl status rocketchat
caddy
前面选择了caddy,但是因为ubuntu有可能有Apache2的存在,导致80端口被占用
lsof -i:80
kill -9 PID
启动caddy
systemctl start caddy
systemctl status caddy
输入netstat -plunt
后输出如下图所示就是启动成功了,可以在浏览器输入域名访问了
教程
教程正式开始 *
重新看了一遍rocket.chat的文档,发现了rocketchatctl有可选选项rocketchatctl command line tool to install and update Rocket.Chat server Usage: rocketchatctl [options] [--root-url=ROOT_URL --port=PORT --letsencrypt-email=EMAIL --webserver=WEBSERVER --version=VERSION --install-node --use-mongo] Installs node, mongo, Rocket.Chat server and optionally a webserver (Caddy or Traefik), sets up directories and permissions to use Let's Encrypt certificates. In case node or mongo already installed, it uses already installed versions though confirmation is required. For node it set v8.11.4 as default in your system, for mongo mmapv1 storage engine and no authentication enabled is required during installation. If you wish this script to run unattended, provide extra flags to the install option, server URL is required (--root-url). OPTIONS -h help Display this message install Install latest Rocket.Chat server version update Update Rocket.Chat server from current version to latest version check-updates Check for updates of Rocket.Chat server upgrade-rocketchatctl Upgrade the rocketchatctl command line tool. FOR UNATTENDED INSTALLATION --root-url=ROOT_URL the public URL where Rocket.Chat server will be accessible on the Internet (REQUIRED) --port=PORT port for the Rocket.Chat server, default value 3000 --webserver=WEBSERVER webserver to install as reverse proxy for Rocket.Chat server, options are caddy/traefik/none (REQUIRED) --letsencrypt-email=EMAIL e-mail address to use for SSL certificates (REQUIRED if webserver is not none) --version=VERSION Rocket.Chat server version to install, default latest --install-node in case node installed, sets node to Rocket.Chat server recommended version, default behavoir cancel Rocket.Chat server installation --use-mongo in case mongo installed, and storage engine configured is mmapv1, skip mongo installation but uses systems mongo for Rocket.Chat server database, default database name rocketchat
也就是说可以不用它的
nodejs
和mongodb
先行安装nodejs
和mongodb
依旧是按照上文方法安装nodejs和mongodbbash -c "$(curl https://install.rocket.chat)" --root-url=https://www.example.com --webserver=caddy --use-mongo --install-node --port=3000
等待完成,检查80端口是否有占用,
caddy
mongod
rocketchat
服务是否在运行,检查完成后浏览器直接输入域名访问。