Matrix 是一个开放的聊天网络。当你运行自己的 Matrix homeserver 时,你的消息和账户都存放在你的服务器上,同时你仍可以与其他 Matrix 服务器上的人交流。本指南使用 Docker 和 PostgreSQL,在 HTTPS 之后安装参考实现的 homeserver Synapse。
须知事项
- 联邦。你的服务器可以与其他服务器通信,这意味着它会占用带宽和磁盘来存储你加入的房间。小型私有服务器很轻量。加入非常大的公共房间则不然。
- 规模。2 vCPU 和 4 GB 内存适合小型群组。请参阅 Matrix 服务器托管。
- 域名。你需要一个域名。服务器名称(例如
example.com)是每个用户 ID 的一部分,以后无法更改。
步骤 1:生成配置
mkdir -p ~/synapse && cd ~/synapse
docker run -it --rm -v $(pwd)/data:/data \
-e SYNAPSE_SERVER_NAME=example.com \
-e SYNAPSE_REPORT_STATS=no \
matrixdotorg/synapse:latest generate
步骤 2:切换到 PostgreSQL
默认使用 SQLite,但对于测试以外的任何用途,PostgreSQL 更好。编辑 data/homeserver.yaml 并替换 database 块:
database:
name: psycopg2
args:
user: synapse
password: CHANGE_ME
database: synapse
host: db
cp_min: 5
cp_max: 10
步骤 3:Compose 文件
services:
db:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_USER: synapse
POSTGRES_PASSWORD: CHANGE_ME
POSTGRES_DB: synapse
POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C"
volumes:
- ./pgdata:/var/lib/postgresql/data
synapse:
image: matrixdotorg/synapse:latest
restart: unless-stopped
depends_on: [db]
ports:
- "127.0.0.1:8008:8008"
volumes:
- ./data:/data
docker compose up -d
docker compose logs -f synapse
步骤 4:HTTPS 与联邦
在 matrix.example.com 提供 Synapse 服务,并发布一个委派文件,使你的服务器名称保持为 example.com:
matrix.example.com {
reverse_proxy 127.0.0.1:8008
}
example.com {
handle /.well-known/matrix/server {
header Content-Type application/json
respond `{"m.server": "matrix.example.com:443"}`
}
handle /.well-known/matrix/client {
header Content-Type application/json
header Access-Control-Allow-Origin *
respond `{"m.homeserver": {"base_url": "https://matrix.example.com"}}`
}
}
DNS 生效后,使用 Matrix Federation Tester 测试联邦。
步骤 5:创建用户并锁定注册
docker compose exec synapse register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008
除非你想开放注册,否则请保持 enable_registration 设置为 false(位于 homeserver.yaml 中)。
客户端与注意事项
使用 Element 或任何 Matrix 客户端,并用你的服务器名称登录。备份 data 文件夹和 Postgres 数据,并保持 Synapse 更新。请先阅读服务器加固。