部署Synapse并桥接Telegram
Matrix是一个开源的实时通讯协议,支持Federation(类似电子邮件协议的特性)并且可以桥接很多主流的通讯程序,这里要部署的Synapse是他们官方开源的服务端。
需求
- linux服务器 (我用的是Arch Linux)
- 域名 (DDNS的也行但尽量用自己的)
- 一点命令行知识
部署Synapse
安装Synapse和postgres数据库以及相关依赖
pacman -S matrix-synapse postgresql python-pip socat cronie python-virtualenv gcc libolm
pip install psycopg2-binary
再依次执行如下命令生成配置文件:
cd /var/lib/synapse |
(切换用户时若提示This account is currently not available.
则需将/etc/passwd
中synapse
用户末尾的/usr/bin/nologin
修改为/usr/bin/bash
your.domain.com
替换为自己的域名,下同)
执行systemctl enable postgresql.service --now
启用并运行postgres
(如果postgres运行报错"/*var*/*lib*/*postgres*/*data" is missing or empty*
则需要执行su - postgres
initdb -D /var/lib/postgres/data
)
接下来在postgres中创建Synapse的用户和数据库
su - postgres |
修改Synapse的配置文件/etc/synapse/homeserver.yaml
bind addresses
部分的值修改为服务器的公网ip或0.0.0.0
database
部分替换为如下内容
database: |
配置文件末尾添加suppress_key_server_warning: true
重启Synapse
systemctl restart synapse.service
创建用户
register_new_matrix_user -c /etc/synapse/homeserver.yaml http://127.0.0.1:8008
访问your.domain.com:8008
若Synapse正常运行即可看到下图
启用TLS
安装acme.sh
curl https://get.acme.sh | sh -s email=my@example.com
生成证书
.acme.sh/acme.sh --issue -d your.domain.com --standalone
复制证书
mkdir /etc/synapse/cert
.acme.sh/acme.sh --install-cert -d your.domain.com --fullchain-file /etc/synapse/cert/fullchain.pem --key-file /etc/synapse/cert/key.pem
chown -R synapse:synapse /etc/synapse/cert
编辑Synapse配置文件
将listeners
部分
port
的值修改为8448
tls
的值修改为true
在文件末尾添加如下两行后重启Synapse
tls_certificate_path: "/etc/synapse/cert/fullchain.pem"
tls_private_key_path: "/etc/synapse/cert/key.pem"
桥接Telegram
创建用户
mkdir -p /opt/venvs/mautrix-telegram |
设置virtualenv并安装mautrix-telegram
su - mautrix-telegram |
在postgres中创建mautrix-telegram的用户和数据库
su - postgres |
登录后创建API development tools
并记录App api_id
和App api_hash
修改mautrix-telegram的配置文件config.yaml
su - mautrix_telegram |
homeserver
部分修改为自己的域名
address: https://your.domain.com:8448 |
database
部分内容按如下格式替换
#database: postgres://username:password@hostname/dbname |
telegram
部分填入自己的api_id
和api_hash
permissions
部分如下
'*': relaybot |
生成registration.yaml
python -m mautrix_telegram -g
将如下内容添加至Synapse配置文件末尾后重启Synapse
app_service_config_files: |
测试mautrix_telegram能否正常运行
su - mautrix_telegram |
创建/etc/systemd/system/mautrix-telegram.service
并写入如下内容
[Unit] |
重载systemD并启动mautrix-telegram
systemctl daemon-reload |
在Element
(或其他支持Matrix协议的客户端)中登录自己的帐号(服务器URL为your.domain.com:8448
)
与@telegrambot:your.domain.com
发起对话
发送login
后输入手机号和Telegram收到的验证码即可完成桥接