OffshoreVps
教程2026年10月3日阅读约 7 分钟作者:OffshoreVps 团队

如何在 VPS 上托管 Matrix 服务器(Synapse)

用 Synapse、PostgreSQL 和 Docker 运行你自己的 Matrix homeserver:配置、HTTPS、联邦委派、用户与注册。

Matrix 是一个开放的聊天网络。当你运行自己的 Matrix homeserver 时,你的消息和账户都存放在你的服务器上,同时你仍可以与其他 Matrix 服务器上的人交流。本指南使用 Docker 和 PostgreSQL,在 HTTPS 之后安装参考实现的 homeserver Synapse。

VPS 上的终端窗口,显示托管 Matrix 服务器所用的命令,以“mkdir -p ~/synapse && cd ~/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
本指南的步骤依次为:1. 须知事项;2. 生成配置;3. 切换到 PostgreSQL;4. HTTPS 与联邦;5. 创建用户并锁定注册;6. 客户端与注意事项
本指南的步骤,按顺序排列。

步骤 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 更新。请先阅读服务器加固。