• 首页
  • 关于

鸽子窝:Pigeon's Blog

笨蛋鸽子的小窝
技术

自建Matrix服务器

2026-04-02 浏览量 0 暂无评论

Matrix——开源,去中心化,自建,完美。

Tip

这篇只讲原生部署,不走 Docker。

Matrix Synapse 搭建(PostgreSQL)

  • 自己域名可登录
  • 未来能开 Federation
  • 服务重启后自动拉起,日志能查

0. 准备条件

先确认这几件事:

  • 一台公网 Linux 服务器,这里我用的阿里云学生优惠的2C2G机
  • 一个域名,A 记录已经指向服务器 IP
  • 开放端口:80、443、8448(8448 给联邦用)

1. 安装基础组件

sudo apt update
sudo apt install -y lsb-release wget apt-transport-https gnupg2 ca-certificates \
  nginx postgresql postgresql-contrib

2. 安装 Synapse(原生)

先添加 Matrix 官方软件源,然后安装:

sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg \
  https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] \
https://packages.matrix.org/debian/ $(lsb_release -cs) main" \
| sudo tee /etc/apt/sources.list.d/matrix-org.list

sudo apt update
sudo apt install -y matrix-synapse-py3

安装过程中会让你填 Server Name(比如 example.com),这个别填错。

3. 配置 PostgreSQL

3.1 创建数据库和用户

sudo -u postgres psql

进 psql 后执行:

CREATE USER synapse WITH PASSWORD '改成一串强密码';
CREATE DATABASE synapse ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 OWNER synapse;
\q

3.2 把 Synapse 切到 PostgreSQL

编辑配置文件:

sudo nano /etc/matrix-synapse/homeserver.yaml

找到 database: 段,改成类似这样:

database:
  name: psycopg2
  args:
    user: synapse
    password: "改成你的数据库密码"
    database: synapse
    host: 127.0.0.1
    cp_min: 5
    cp_max: 10

顺手检查几个关键项:

server_name: "example.com"
public_baseurl: "https://example.com/"
enable_registration: false

如果你想先自己测一圈再关注册,enable_registration 可以临时设 true。

4. 反向代理(Nginx)

新建站点配置:

sudo nano /etc/nginx/sites-available/matrix

写入:

server {
    listen 80;
    listen [::]:80;
    server_name example.com;

    location /.well-known/matrix/server {
        default_type application/json;
        return 200 '{"m.server":"example.com:443"}';
    }

    location /.well-known/matrix/client {
        default_type application/json;
        add_header Access-Control-Allow-Origin *;
        return 200 '{"m.homeserver":{"base_url":"https://example.com"}}';
    }

    location / {
        proxy_pass http://127.0.0.1:8008;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

启用并检查:

sudo ln -s /etc/nginx/sites-available/matrix /etc/nginx/sites-enabled/matrix
sudo nginx -t
sudo systemctl reload nginx

5. 配置 HTTPS(Let's Encrypt)

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com

成功后会自动改 Nginx 配置并加上证书。

6. Federation 端口(8448)

很多人第一次卡在这里。客户端能登录,不代表联邦能通。

最稳妥的做法:

  • 让外网 8448 也到 Nginx
  • Nginx 把 8448 代理到 Synapse 的 8008

在同一个 Nginx 配置里再加一个 server:

server {
    listen 8448 ssl;
    listen [::]:8448 ssl;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8008;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

改完重载:

sudo nginx -t
sudo systemctl reload nginx

7. 启动与自启动

sudo systemctl enable matrix-synapse
sudo systemctl restart matrix-synapse
sudo systemctl status matrix-synapse

看日志:

sudo journalctl -u matrix-synapse -f

8. 创建管理员账号

如果你关了开放注册,用这个命令手动建:

sudo register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008

按提示输入用户名、密码,然后选择是否管理员。

9. 快速自检

9.1 本机健康检查

curl -s http://127.0.0.1:8008/_matrix/client/versions

有 JSON 返回就说明 Synapse 本体在工作。

9.2 外网联邦检查

curl -s https://example.com/_matrix/federation/v1/version

同样有 JSON 返回,基本就通了。

10. 我自己踩过的坑

  • server_name 一旦上线最好别改,改了会影响用户 ID。
  • PostgreSQL 密码里如果有特殊字符,YAML 里记得加引号。
  • 只开了 443 没开 8448,经常导致别人搜不到你这个 homeserver。
  • 先别急着装一堆桥接机器人。先把登录、拉群、联邦这三件事跑通。

11. 客户端怎么选

Synapse 只是服务端,日常聊天还得配客户端。下面是我自己用下来比较稳的选择。

12.1 桌面端

  • Element Desktop:功能最全,文档和教程最多,适合当主力。
  • FluffyChat(桌面版):界面更轻,适合只想专注聊天的人。

刚开始用 Matrix,建议先装 Element Desktop,排查问题更省时间。

12.2 手机端

  • ElementX(iOS/Android):和桌面端一致性最好,跨设备切换顺手。
  • FluffyChat(iOS/Android):更清爽,日常聊天体验不错。

如果你不想折腾,手机端直接用 Element 就行。

12.3 浏览器端

  • Element Web:适合临时登录、公用电脑应急,或者给朋友一个网页入口。
技术网络
我现在这套 VS Code 字体配置,为什么越用越顺手
配置 Synapse-Admin 管理面板
  • 文章目录
  • 站点概览
    author

    7 日志
    5 分类
    Creative Commons

    浏览量 : 0

    © 2026 鸽子窝:Pigeon's Blog. Power By Typecho . Theme by Shiyi

    This is just a placeholder img.