到现在为止,并没有找到最合适的解决方案(目前最靠谱的是 Nextcloud Talk 和 Voce Chat)。先把过程中考虑到的一些因素,记录下来,作为借鉴。
我的目的,是如何更便捷地,和墙内小范围的朋友、家人,保持联系,在对话中不受信息审查。现有的聊天软件,能够不翻墙使用的,几乎没有了,即使有,也不是长久之计。所以最靠谱的方式,大概只有通过一台海外的 vps,自建服务,供小范围的人使用。如果传播范围不大,除非 gfw 变成白名单,否则应该都可以长期使用。
下面是选择各种自建聊天工具时,会考虑到的因素。这些因素之间,有些是互相冲突的。对不同需求的人,在这些因素之间考虑的权重,也不一样。对于我上述的需求来说,
- 不需要考虑的因素,用黑色显示;
- 希望能有,但没有也无所谓的因素,用蓝色显示;
- 非常希望能满足的因素,用绿色显示。
首先,我希望这是一个可以挂机的聊天工具,可以在收到信息时,从手机接收到通知;而不仅仅是个网页聊天室,只能在专门打开网站时,才能聊天:
- 可以持续挂机,通过 app 或者「Chrome 把网站添加到桌面」的功能,实时接收来信通知;
- 除了手机外,也能在 pc 的浏览器里使用;
要联系的人,并不擅长电脑技术和操作,因此
- 不需要翻墙使用;
- 操作简便;
- 有中文界面;
这些人,可能并不属于同一个群体。所以,需要为不同的人群,架设不同的服务地址,互相分开。
- 在一台 vps 上,同时部署多个聊天服务。一些功能更加完善的聊天服务如 xmpp,因为需要独占端口,并不能满足这一点;
安全性方面:
- 信息加密;
- 开源;
- 不和中央服务器连接,一些 self-host 的服务,会经常连接开发者的服务器,虽然只是检查升级或校验程序完整性,但还是看着心虚;
- 完全通过域名交互,不向其它服务器暴露 ip 地址;
- 用户之间的私信,对管理员也不可见,否则,其实开个 fediverse 实例,可以满足这里很多条要求;
- 用户之间不会互相暴露信息,譬如很多协同工作平台,可以互相看到所有用户的名单、email……
架设系统的便利程度:
- 支持 docker + nginx 部署,或者直接放进 php 目录就能运行;
- 系统开销小,内存上 G 的那种就算了吧;
- 不需要 mysql 等专门数据库,因为规模不大,sqlite 就足够了;
- 能部署在网站的子目录下,不需要独占一个子域名;
对聊天功能的需求:
- 是否要加入去中心化网络,和其它服务器的用户交流?对我来说,这不是必须的。而且这在部署的便利性、轻量级、安全性、同时部署多个服务……等方面,都会造成冲突;
- 可以群聊,也可以一对一私聊;
- 可以传输文件;
- 支持语音;
- 支持视频;
- 注册过程简洁,可以由管理员直接生成账户;
- 可以关闭对外注册;
……………还有什么要补充的吗?
已经考察过的工具
其实最理想的,应该是一个 php 的聊天室……能通过 chrome 在手机桌面接收消息通知就可以。轻量化、可以塞到任何目录下、没有中文我自己汉化也可以。但是,真的没找到靠谱的…………求推荐!!!
ps,如果联系人有一定电脑常识,也懂英文的话,用 mycryptochat 做临时沟通,蛮好用的。
目前最合适的,是 Nextcloud Talk,用 docker + sqlite + nginx,是可以做到快速部署的;占用内存不到 300MB,勉强可以接受(所以开销更高的方案,基本不考虑了);而 nextcloud 作为一个庞大的办公平台,其 web 界面对于非技术人士,未免有些眼花缭乱。
xmpp 和 matrix 服务器,可以做到开销更小,但也在 100MB 以上,还涉及独占端口的调整,部署起来繁琐很多。似乎也可以把跨实例通信的功能关掉,做成封闭社区,配置和开销会简单一些。但还没仔细研究。
各种协同平台类,如 Mattermost、Rocket.Chat,系统开销过大,就算了。
这两年有个国人开发的 VoceChat 工具,评价很不错。可以 docker + nginx 部署,内存 30MB,有 web 界面和自己的 app。推荐大家可以试试。目前发现的一些问题:
- 免费 license 有 20 个用户的限制。 问题不大;
- nginx 不能反代到子目录,只能独占域名的根目录;
- 可以看到其它用户的 email,但用邀请码注册的话,可以填假的,不用验证;
- 最大的问题:VoceChat 的语音聊天模块,是外挂的 agora.io,——是著名的大陆运营商,当年 clubhouse 因此遭受很大质疑。所以,不要用它的语音功能谈关键的信息。进而,这个软件的文字聊天的安全性,虽然是开源,但使用官方 docker 时,也让人有些嘀咕了。
Leave a Reply