支持语音和视频通话,Docker部署端到端加密的在线聊天室『Matrix&Element』
哈喽小伙伴们好,我是Stark-C~
在这个所谓的大数据时代,我们在互联网的一言一行可以说都无时无刻受到监控,如何最大限度的保护个人隐私,可以说是当前网络时代我们每个人的必备技能之一。
隐私第一步,先教大家怎么创建一个自己私有的在线聊天室吧~
简介
关于Matrix:
Matrix 是一个开放的通信协议,用于实时通信,包括即时消息、音频和视频通话。
它是去中心化的,这意味着任何人都可以设置自己的 Matrix 服务器,并与其他 Matrix 服务器通信。
Matrix 的目标是为所有不同的通信服务提供一个统一的标准,使得不同的服务可以互相通信。
关于Element:
Element 是基于 Matrix 协议的一个客户端应用。
它允许用户通过 Matrix 协议进行即时消息、音频和视频通话。
Element 有多个版本,包括 Web、桌面和移动应用。
它是 Matrix 生态系统中最流行的客户端之一。
简单理解,Matrix 是一个通信协议,而 Element 是基于这个协议的一个客户端应用,我们的最终目标就是使用 Element 通过端到端加密的 Matrix 协议,来搭建一个去中心化的加密个人与团队通讯服务。
与常见的QQ微信,Matrix的特点就是开源,可私有化部署,从而保证通信的安全和隐私。与Rocket.chat、MatterMost相比,Matrix的特点还要再加上去中心化,每个运行Matrix的服务器都是一个节点,用户可以选择在任意节点注册、连接,同一个节点内的用户可以任意通信。同时,节点与节点之间也可以通过联锁(Federation)机制进行通信,实现不同节点的用户之间进行通信,这其实就是文中标题说的"端到端加密"。
部署
🔺部署之前有一个必备条件,那就是你必须有一个自己的域名(可以不用备案),并且已经做好了动态域名解析(DDNS)。一般玩NAS的这个应该都已经设置好了对吧?
如果你还没有做到这个条件,强烈建议你先部署Lucky:
https://post.smzdm.com/p/a3x63wrr/
🔺然后打开NAS的文件管理器,在 docker 目录中(威联通默认为Container文件夹),创建一个新文件夹【matrix】,然后在 matrix文件夹中再分别新建一个子文件夹【data】 用于数据文件的持久化存储。
🔺接着使用SSH终端工具连接到NAS之后先启用root模式(" sudo -i "),之后输入以下Docker run多行命令(请注意,张大妈编辑器会删掉每行命令后面的反斜杠)并回车即可:
sudo docker run -it --rm \
-v /share/Container/matrix/data:/data \
-e SYNAPSE_SERVER_NAME=你的域名 \
-e SYNAPSE_REPORT_STATS=yes \
matrixdotorg/synapse:latest generate
命令唯一需要修改的就是"-v /share/Container/matrix/data:/data"中的路径映射是matrix文件夹内的data子文件夹。
🔺等到命令部署完成之后,回到NAS的文件管理器,在之前创建的matrix文件夹内的data子文件夹中,可以看到一个"homeserver.yaml"文件,这个文件其实就是matrix默认生成的配置文件。将这个配置文件下载到电脑本地。
🔺matrix默认的配置文件并没有开启注册功能,需要我们手动开启。我们通过代码编辑器(比如Visual Studio Code、Sublime Text 或 Atom)打开配置文件,然后在配置文件最后面加入以下代码并保存:
enable_registration: true
enable_registration_without_verification: true
完成后将修改后的"homeserver.yaml"配置文件替换掉NAS文件夹中原有的配置文件即可。
🔺最后通过docker-compose
一键部署。这里以威联通NAS为例,打开"应用程序"输入以下docker-compose
代码:
version: "3.3"
services:
synapse:
image: "matrixdotorg/synapse:latest"
container_name: "matrix_synapse"
restart: unless-stopped
ports:
- 8008:8008 # 本地端口别冲突
volumes:
- "/share/Container/matrix/data:/data" # 映射matrix文件夹下的data子文件夹
environment:
VIRTUAL_HOST: "x.com" # 你的域名
VIRTUAL_PORT: 8008
LETSENCRYPT_HOST: "x.com" # 你的域名
SYNAPSE_SERVER_NAME: "x.com" # 你的域名
SYNAPSE_REPORT_STATS: "yes"
element-web:
ports:
- '8098:80' # 本地端口别冲突
image: vectorim/element-web
restart: unless-stopped
以上代码需要根据注释自行修改。
如果你习惯SSH部署,可以将修改好的docker-compose.yml文件放到NAS任意文件夹内,然后运行以下命令:
#进入文件夹
cd 文件夹实际路径
#启动容器
docker-compose up -d
🔺如果不出问题,可以看到应用程序中包含了上图两个Docker容器正在运行。
体验
🔺首先咱们先确认下Matrix服务有没有问题,浏览器输入【 NAS的局域网IP:端口号(默认8008)】,如果出现上图所示提示就说明Matrix服务没问题,且在运行中。
🔺然后就可以登录Element聊天室了。不过想要外网使用,首先咱们需要将Element网页端(也就是我们部署时候的element-web容器)对应的端口做好反向代理,这里依然给大家安利的是Lucky,绝对是NAS必装神器之一。
🔺接着直接使用我们的反向代理链接打开。首次打开会有一个浏览器不兼容的提醒,我们不用理会,直接点图中所示位置然后刷新一下页面即可。
🔺Element默认是英文界面,不过它有原生简体中文支持。更改好语言之后我们就可以"创建账户"了。
🔺创建账户很简单,仅需用户名、密码以及邮箱即可。需要说明的是邮箱需要时自己的真实邮箱,因为稍后会需要验证。
🔺这里点"接受"条款。
🔺然后就提示让我们去邮箱那边验证了,验证其实就是点一下它发过来的一个链接就可以了。
🔺然后就会正式来到聊天页面。
🔺界面还是很简单清爽的,上手也很容易,每步都有详细的向导说明。
🔺可以通过发送邀请链接来邀请他人加入聊天室。
🔺我这里随意加了一个小伙伴,可以看到它显示的就是"发送加密消息",并且还支持贴纸、语音消息、投票,以及位置信息。
🔺聊天界面右上角还支持发起语音与视频。
🔺同时,Element还有手机端APP,IOS以及安卓都支持。
🔺它的设置可选项也比较丰富。
最后
该项目后期可设置的项目很多,我这里也不再一一展示了,只要我们部署起来,怎么折腾就在于你自己了。
好了,以上就是今天给大家分享的内容,我是爱分享的Stark-C,如果今天的内容对你有帮助请记得收藏,顺便点点关注,咱们下期再见!谢谢大家~