2025.04.14更新:
基于XMPP协议的客户端的功能非常基本,没有定时删除以及撤回功能。如有可能,应该看看下面的SimpleX Chat教程并且改用SimpleX Chat,本篇教程已被归档以作参考作用。
1.写在前面
今天来写点搭建服务的,要不然这个网站就要变成作文网站了
让我们想象一下这个场景:
一天,你想给你的朋友发送一个文件。但是,这个文件可能对你们来说是很机密的。又或者,你们想讨论一些悄悄话,不希望让任何第三方知道的。
在你选择自托管服务的过程时,你可能听说过rocket.chat,Matrix这些服务。为什么我不用他们呢?
据本人搭建后,发现rocket.chat被墙。算了吧,谁想和朋友聊天的时候还要挂梯子。
那Matrix呢?算了吧,我用Element完全连不上(也可能是我的问题),我就只是想聊个天,怎么还有这么多复杂的功能。
那么,搭建简单又方便的XMPP无疑是你最佳的选择。
2.搭建服务
我们以ejabberd为例子,它是XMPP的其中一个服务。
首先,我们去github上获取安装包。
这里我们选择run包,把它下载到你的服务器上
进入安装目录,给它777权限,然后
./ejabberd-24.02-1-linux-x64.run
这样就算成功了
然后,我们进入/opt/ejabberd-24.02/bin这个目录,注册一个账号。
./ejabberdctl register 用户名 域名 密码
之后,打开/opt/ejabberd/conf/ejabberd.yml配置文件,把这个账号设置为管理员,并且启用你的域名。
设置管理员
如果想设置为自己的证书,可以在这里设置
开放客户端注册功能
然后,开放端口
5280,5443,5222,5223,5269
进入web控制台,<你的IP>:5280/admin/
用户名和密码是设置为管理员的用户名和密码
用户忘记密码了,可以在这里重新设置
有些客户端也支持远程执行命令
3.使用
XMPP是一个聊天协议,而不是一个软件。所以要找一个好用的客户端。
这里以安卓Conversations为例
如果你要注册新号,点创建新账号。或者在下面登录管理员账号
下面注册一个新号
使用我自己的提供者
账号后面跟着域名,登录也是一样。
后面就是设置头像什么的了。
聊天默认使用OMEMO端到端加密
4.说明
如果你用一个设备使用OMEMO聊天了之后,后面的设备登录你的账号无法解密以前的消息。
ejabberd支持语音和视频聊天,但是我这里因为一些原因,一直占线。需要的可以看看官方文档
重要的是,别聊得太过火了。
ejabberd的hosts配置能否使用ip进行配置呢,我在设置为ip时,使用conversations进行连接,显示域名无法验证。
可以,要自签名一个证书,颁发给你的IP。