为什么要搭建私人聊天软件
前些年,我们的团队直接把QQ当作交流工具,在QQ上进行活动,但后来发现QQ在某些方面不是很方便,而且过于臃肿,于是便策划着利用我们现有的一台服务器,自行搭建一个团队内部的讨论平台。我们一开始打算采用当时有较高知名度的DuckChat,但后来我们发现DuckChat早就在2019年初跑路了,网页版只有PC端界面,iOS和Android的App全部失传,而且整个系统存在着各种Bug(例如文件无法发送),运行效率低下,因此只能放弃。
后来偶然发现还有大佬做了个DuckChat的续命版本,修改了一些地方,给其Web端添加了移动端界面适配,勉强可用,由于当时找不到更好的同类作品,我们就采用了这个版本,并一直用到现在,应该已经用了一年多了。不过这毕竟是个五年前的项目,诸如消息发送失败、按钮错位、群人数显示错误、聊天记录一关闭浏览器就全部消失(这还逼着我给它写了个聊天记录自动保存插件)的Bug层出不穷,只能将就着使用了。
一次上文,偶然在网络上看见了推荐其他聊天平台的文章,于是我便开始寻找DuckChat的替代品。我花了很长的时间尝试安装Rocket.Chat,但不知道为什么,包括Snap、Docker安装等方法全都试了一遍过去,没有一个是能够正常安装的,而且Rocket.Chat的体积相当大,有很多我们用不上的功能(我们只是要个纯粹的协作和通讯平台),最后只好选择了放弃——直到有一天,我发现了VoceChat。
什么是VoceChat?
Vocechat 是一款简单、易用的聊天系统,具有轻量级、开源和可自托管等特点。
VoceChat支持独立部署,这就是说,我们可以很轻松的将其部署到自己的服务器上,用户数据等完全由用户自己掌握,传输过程加密。并且,VoceChat是一款真正的轻量级”小而美“聊天软件,它的体积仅为15MB,这样的大小几乎可以塞进任何服务器里。除了作为完全的聊天软件外,VoceChat还可以以插件的形式插入到网页中,提供网页聊天等各种丰富的功能。
VoceChat适用于团队内部交流、个人聊天服务搭建等,也可以用于网站客服、网站内嵌社区等场景。它博众聊天软件之所长,体积小,能力可不小,15MB的体积,却拥有正常聊天所需要的所有必备功能,例如回复、转发、点赞、钉选消息(相当于QQ的收藏消息)等。界面简洁,能够快速上手,且信息、图片、文件等都可以正常发送,手机版App还可以在App内直接预览PDF文件,这些已经秒杀许多同类产品了。
搭建VoceChat非常方便,不需要像我之前安装Rocket.Chat那样麻烦,安装一次就成功了,并且它很少需要特别进行维护,日常维护很方便。还提供Android、iOS端的App,AndroidAPP可以在Google Play(国内要科学上网)下载安装(也可以上官网下载APK),iOS的App可以直接在AppStore内搜索到。
官方搭建了一个 Demo 站点: VoceChat WebAPP ,想要搭建却又不知道VoceChat到底怎么样的可以先去体验一下,这绝对是目前你能找到的最好的私人部署聊天系统了。
如何安装VoceChat?
1.本地搭建体验
如果没有服务器,或者不想马上在服务器上搭建,先在本地电脑上试安装体验一下的,可以先安装 Docker,然后按以下命令安装:
docker run -d --restart=always \
-p 3009:3000 \
--name vocechat-server \
privoce/vocechat-server:latest
安装完后,访问 http://localhost:3009/即可。
2.服务器搭建
我这里以一台4核4G的 CentOS-7.6 服务器和 Docker 的安装方式举例,除了 Docker 外也可以用其他方式安装,详情可以自行移步官网上的文档。
(1)安装 Docker。
没有在服务器上安装 Docker 的,需要先安装 Docker,已经安装过的可以跳过。
国外服务器:
curl -sSL https://get.docker.com/ | sh
国内服务器:
curl -sSL https://get.daocloud.io/docker | sh
安装完毕后,可以输入 docker -v 来查看是否安装完毕。安装后最好输入一下 systemctl start docker 以启动 Docker 服务。
(2)安装和运行 VoceChat。
安装和运行VoceChat只需要输入下面的这一段命令,输入后等待一会,就会自动下载、安装和启动 VoceChat 服务,此时访问 http://服务器IP:3009/即可。
docker run -d --restart=always \
-p 3009:3000 \
--name vocechat-server \
-v ~/.vocechat-server/data:/home/vocechat-server/data \
privoce/vocechat-server:latest \
--network.frontend_url "https://vocechat.yourdomain.com"403 Forbiddendocker run -d --restart=always \
-p 3009:3000 \
--name vocechat-server \
-v ~/.vocechat-server/data:/home/vocechat-server/data \
privoce/vocechat-server:latest \
--network.frontend_url "https://vocechat.yourdomain.com"
其中的 -p 3009:3000 一条,前面的 3009 决定了VoceChat运行后占用的端口号,可以自行修改,不过如果服务器有防火墙和策略组的话,要记得放行 3009 端口或者自己设置的对应端口,否则无法访问。
最后一条 --network.frontend_url "https://vocechat.yourdomain.com" 是可选项,用于生成邀请链接,发送邀请邮件等场景,可以不写或在初始化VoceChat界面时填写。
这一切做完后,VoceChat 就安装并且运行在你的服务器上了。
部署完成后,第一次访问 VoceChat 站点,会要进行服务器初始化工作,要求设置管理员账户等。
(3)设置域名代理
安装完后,默认使用服务器IP地址 + 端口的方式访问。如果有安装 Nginx,后期可以用 Nginx 配置HTTP反向代理,将VoceChat代理到域名上,这样就可以通过域名来访问VoceChat了。但是,要注意,反向代理之前要先将域名解析到服务器IP上。
server{
server_name vocechat.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:3009; # 此处端口号取决于前面设置的 VoceChat 运行端口号
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0; # 关掉硬盘缓存,增加写速度
# SSE 相关配置
proxy_http_version 1.1;
proxy_set_header Connection '';
}
}
如果有安装宝塔面板,可以直接从宝塔面板中增加站点,然后用管理站点中的修改站点 Nginx 配置文件来设置代理。但是,用宝塔面板设置代理一定要记得删掉宝塔创建网站时默认创建的 Nginx 配置文件中的下面两段:
我亲自测试,这两段会导致 VoceChat 的CSS和JS等文件无法加载,从而无法初始化和正常访问。后来测试证明,选中的两段中只有下面那一段要删,上面的可能可以不删。
总结
总而言之,VoceChat 是一款非常优秀的、可以私人部署的小而美的聊天系统,如果你也在为自己的团队搭建聊天系统,我建议你选用 VoceChat。
苏秋-RTC,2023年12月24日
(本文几乎所有文字内容均由本人 苏秋-RTC 原创,未经允许,不应转发和抄袭)