安装好了 Synapse,但是Matrix中文用户太少,没有用武之地岂不是浪费。

这里请出第二位选手:mautrix-telegram,创建一个与 Telegram 的桥接。

安装 mautrix-telegram

软件安装简单,这里直接使用 pip 安装。

sudo apt install python3-pip virtualenv
sudo apt install libolm-dev -t buster-backports

安装所需依赖。

su -
mkdir /opt/venvs/mautrix-telegram/
useradd -d /opt/venvs/mautrix-telegram -s /bin/bash -r mautrix-telegram
chown mautrix-telegram:root /opt/venvs/mautrix-telegram/

su - mautrix-telegram
virtualenv -p /usr/bin/python3 .
source ./bin/activate
pip install --upgrade mautrix-telegram[all]

创建 mautrix-telegram 用户,安装 mautrix-telegram。

配置 mautrix-telegram

cp example-config.yaml config.yaml

修改 config.yaml

数据库

大致同上篇。

sudo -u postgres createuser --pwprompt mautrix_telegram_user
sudo -u postgres psql
CREATE DATABASE mautrix_telegram
ENCODING 'UTF8'
LC_COLLATE='C'
LC_CTYPE='C'
template=template0
OWNER mautrix_telegram_user;

pg_hba.conf 添加:

host    mautrix_telegram     mautrix_telegram_user      169.254.12.1/24           md5

修改 config.yaml,将数据库由 sqlite 改为 postgres 。

#database: sqlite:///mautrix-telegram.db
database: postgres://mautrix_telegram_user:[email protected]/mautrix_telegram

Telegram Token

打开 https://my.telegram.org/apps ,输入手机号登录。

/images/mautrix-telegram/app-api.thumbnail.png

登录后页面

登录后点击第一项 API development tools,按要求填写信息,提交后即可看到 api_idapi_hash

api_idapi_hash 填入 config.yaml

特别提醒:不要修改 bot_token 值,修改后可能造成验证出错。

杂项

  • homeserver.address 填写 homeserver 连接地址。如果 mautrix-telegram 与 synapse 位于同一台机器,可直接填本地地址:http://localhost:8008

  • homeserver.domain 填写 server_name,就本例应为 bgme.me

  • 根据自己需要配置 bridge.permissions ,若本项未设置,将无法启动。

生成 registration.yaml 并配置 homeserver.yaml

python -m mautrix_telegram -g

修改 homeserver.yaml,将 /opt/venvs/mautrix-telegram/registration.yaml 添加至 app_service_config_files

修改完毕后,重启 matrix-synapse.service 服务。

试运行 mautrix-telegram

尝试运行

/opt/venvs/mautrix-telegram/bin/python -m mautrix_telegram

如果正常运行没报错则 mautrix-telegram 配置完成。

后续

配置 systemd.service

创建 /etc/systemd/system/mautrix-telegram.service 内容如下:

[Unit]
Description=A Matrix-Telegram hybrid puppeting/relaybot bridge
After=network.target
Wants=network.target

[Service]
Type=simple
User=mautrix-telegram
WorkingDirectory=/opt/venvs/mautrix-telegram
ExecStart=/opt/venvs/mautrix-telegram/bin/python -m mautrix_telegram
Restart=on-failure

[Install]
WantedBy=multi-user.target

启动并激活服务:

systemctl daemon-reload
systemctl start mautrix-telegram.service
systemctl enable mautrix-telegram.service