跳转到主要内容

参考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_addressclientapi.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"}'

响应格式与/_matrix/identity/api/v1/3pid/unbind相同。

复制

可以配置Sydent实例的网格,它们之间复制身份绑定。请参阅docs/replication.md

讨论

Matrix房间:#sydent:matrix.org

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

matrix_sydent-2.6.1.tar.gz (119.7 kB 查看哈希值)

上传时间 源代码

构建分发

matrix_sydent-2.6.1-py3-none-any.whl (148.9 kB 查看哈希值)

上传时间 Python 3

支持者