按惯例上Prosody 自己的文档: https://prosody.im/doc/
安装
使用centos8安装
yum install prosody
dnf --enablerepo=PowerTools install lua-filesystem
其它版本linux则无需单独安装lua-filesystem依赖。
配置
主配置文件 prosody.cfg.lua 一般不需要修改。
下面写些咱做的修改😂
- 在 modules_enabled 中取消启用 version 和 uptime 模块,顺便启动些其他的模块,比如offline。
- 如果需要允许在客户端上注册的话,把 allow_registration 设置成 true 。
其它配置保持默认即可。
另外一个配置文件就是具体和域名对应的配置文件了,位于/etc/prosody/conf.d目录下 我的配置是: baidecai.xyz.cfg.lua
VirtualHost "baidecai.xyz"
http_host = "www.baidecai.xyz"
-- enabled = false -- Remove this line to enable this host
-- Prosody will automatically search for a certificate and key
-- in /etc/prosody/certs/ unless a path is manually specified
-- in the config file, see https://prosody.im/doc/certificates
ssl = {
key = "/etc/prosody/cer/baidecai.xyz.key";
certificate = "/etc/prosody/cer/baidecai.xyz.crt";
protocol = "tlsv1_1+";
--- 为客户端到服务器(c2s)和服务器到服务器(s2s)打开认证
verify = { "peer", "peer" };
ciphers = "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
dhparam = "/etc/prosody/certs/dh-1024.pem"
}
disco_items = {
{ "upload.baidecai.xyz" },
}
Component "upload.baidecai.xyz" "http_upload"
http_upload_file_size_limit = 1024000
http_upload_expire_after = 60 * 60 * 24 * 7
http_upload_path = "/uploaded/files"
http_files_dir = "/uploaded/files"
为了支持聊天中发送文件,我加入了http_upload模块。需要注意的是,这个模块来自社区,并不是prosody自带的,所以需要自己去下载放入prosody的插件目录(在这个问题上,我折腾了好几天才搞定,官方文档没有说清楚),要不然你的xmpp就没法发文件了,及时客户端支持发送操作也会报错。
prosody的插件目录位置可以通过这个命令查看:
prosodyctl about
社区插件下载地址: https://hg.prosody.im/prosody-modules/file/tip 记得给http_upload_path赋予可写权限 重启即可。
注意
- 现在的xmpp client基本都不再支持非SSL登陆了,所以你必须要有一个证书。也就是前文配置中的certificate和key文件,这个很好申请,推荐网址: https://freessl.cn/ 。
- dhparam文件生成指令
openssl dhparam -out dh.pem 1024
- 如果没开启允许客户端注册的话,用 prosodyctl 注册账户
prosodyctl adduser <JID>
到此为止,你已经拥有了一个可以加密聊天,可以发文件的xmpp server了。