参考Matrix身份验证和查找服务器
项目描述
什么是Sydent?
Sydent是身份服务器,用于Matrix通信协议。它允许Matrix用户证明他们拥有电子邮件地址或电话号码,并允许其他Matrix用户通过该电子邮件地址或电话号码查找他们。
我需要运行Sydent才能运行我的自己的 homeserver 吗?
简短回答:不需要。
中等回答:可能不需要。大多数homeserver和客户端使用由matrix.org运行的Sydent实例,或者根本不使用任何身份服务器。
较长的回答:如果您想在多个homeserver的私有联盟中允许通过电子邮件和电话号码进行用户查找,Sydent可能对您有用。如果您想使您的homeserver能够通过短信验证电话号码,并且您有OpenMarket HTTP SMS API的API令牌,那么Sydent可能对您有用。
安装
安装系统依赖项
要在基于Debian的系统上安装Sydent的依赖项,请运行
sudo apt-get install build-essential python3-dev libffi-dev \ sqlite3 libssl-dev python3-virtualenv libxslt1-dev
从这里,您可以通过使用PyPI发行版或重新创建Sydent的锁定运行时环境来安装Sydent。
从PyPI安装最新的Sydent发行版
为了创建Sydent将运行的虚拟环境
virtualenv -p python3 ~/.sydent source ~/.sydent/bin/activate pip install --upgrade pip pip install --upgrade setuptools
Sydent及其依赖项可以使用pip安装,运行
pip install matrix-sydent
在虚拟环境激活后,您可以使用以下命令运行Sydent
python -m sydent.sydent
从源安装
或者,您可以使用来自本地git检查出的poetry安装Sydent。首先安装poetry。有关详细信息,请参阅poetry的文档;我们建议通过pipx安装。完成此操作后
git clone https://github.com/matrix-org/sydent.git cd sydent poetry install --no-dev # For development, pull in extra tools with # poetry install
启动Sydent
poetry run sydent
运行Sydent
当Sydent首次运行时,它将在sydent.conf中创建一个配置文件,其中包含一些默认值。如果在配置文件的[DEFAULT]部分和另一个部分中定义了设置,则使用另一个部分中的值。
您可能需要更改服务器名称(server.name)并指定一个电子邮件服务器(查找以email.开头的设置)。
默认情况下,Sydent将监听在0.0.0.0:8090。可以通过更改配置设置clientapi.http.bind_address和clientapi.http.port的值来更改此设置。
Sydent使用SQLite作为其数据库后端。默认情况下,它将在其工作目录中创建数据库作为sydent.db。可以通过修改配置选项db.file来覆盖名称。Sydent已知可以与SQLite版本3.16.2及更高版本一起使用。
监听HTTPS连接
大多数homeserver和客户端都期望可以使用HTTPS访问身份服务器。
当前Sydent不支持自身监听HTTPS连接。相反,建议使用反向代理来代理来自 homeservers 和客户端到 Sydent 的请求。然后,可以使用这个反向代理通过 HTTPS 提供Sydent的API。
在使用反向代理时,出于安全考虑,建议仅将路径以 /_matrix/identity 开头的请求代理到 Sydent。
此例外情况是Sydent的内部复制API,请参阅docs/replication.md。
SMS发起者
SMS发起者的默认设置将不会添加到生成的配置文件中,这些应该在配置文件的[sms]部分以以下形式添加
originators.<country code> = <long|short|alpha>:<originator>
其中国家代码是数字国家代码,或使用default指定用于未列出的国家的发起者。例如,要使用美国/加拿大的选择长代码,英国的短代码以及用于其他地方的字母数字发起者
originators.1 = long:12125552368,long:12125552369 originators.44 = short:12345 originators.default = alpha:Matrix
Docker
为sydent提供了Dockerfile。要使用它,请在sydent检查点中运行 docker build -t sydent .。要运行它,使用 docker run --env=SYDENT_SERVER_NAME=my-sydent-server -p 8090:8090 sydent。
持久数据
默认情况下,所有数据都存储在/data。要将这些数据持久化到磁盘,请将/data绑定到Docker卷。
docker volume create sydent-data
docker run ... --mount type=volume,source=sydent-data,destination=/data sydent
但您也可以将本地目录绑定到容器。然而,您必须注意文件权限。
mkdir /path/to/sydent-data
chown 993:993 /path/to/sydent-data
docker run ... --mount type=bind,source=/path/to/sydent-data,destination=/data sydent
环境变量
变量名称 |
Sydent默认值 |
Dockerfile默认值 |
---|---|---|
SYDENT_SERVER_NAME |
空 |
空 |
SYDENT_CONF |
sydent.conf |
/data/sydent.conf |
SYDENT_PID_FILE |
sydent.pid |
/data/sydent.pid |
SYDENT_DB_PATH |
sydent.db |
/data/sydent.db |
内部绑定和取消绑定API
可以启用一个内部API,允许在标识符和矩阵ID之间进行绑定和取消绑定,而不进行任何验证。这容易受到滥用,因此默认禁用,并且当启用时,仅在默认绑定到localhost的单独套接字上可用。
要启用它,请在配置文件中配置端口号。例如
[http] internalapi.http.port = 8091
要更改该API绑定的地址,请在[http]部分设置internalapi.http.bind_address配置设置,例如
[http] internalapi.http.port = 8091 internalapi.http.bind_address = 192.168.0.18
如前所述,这容易受到滥用,因此请确保此地址不可公开访问。
要使用绑定
curl -XPOST 'http://localhost:8091/_matrix/identity/internal/bind' -H "Content-Type: application/json" -d '{"address": "matthew@arasphere.net", "medium": "email", "mxid": "@matthew:matrix.org"}'
响应格式与/_matrix/identity/api/v1/3pid/bind相同。
要使用取消绑定
curl -XPOST 'http://localhost:8091/_matrix/identity/internal/unbind' -H "Content-Type: application/json" -d '{"address": "matthew@arasphere.net", "medium": "email", "mxid": "@matthew:matrix.org"}'
复制
可以配置Sydent实例的网格,它们之间复制身份绑定。请参阅docs/replication.md。
讨论
Matrix房间:#sydent:matrix.org。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。