VoceChat:真正“小而美”的私人聊天系统

为什么要搭建私人聊天软件

前些年,我们的团队直接把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内搜索到。

下载App

官方搭建了一个 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 “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 原创,未经允许,不应转发和抄袭)

VoceChat 项目信息