Files
Matrix/мост Telegram.md
T

210 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
# 🌉 Ультимативный гайд (Часть 3): Мосты (Telegram) и Единый Мессенджер
Чтобы не перегружать ядро Matrix (Synapse) и не рисковать его стабильностью при синхронизации огромных чатов, мы выносим мосты в **отдельный LXC-контейнер** (например, `172.20.6.6`).
### 🗄 ШАГ 1: База данных для моста (На NAS)
Мосту нужно хранить свои ключи и связки ID. Заходим по SSH на NAS и создаем базу:
```bash
sudo -u postgres psql
```
```sql
CREATE USER mautrix_tg WITH PASSWORD 'ТвойСложныйПароль';
CREATE DATABASE mautrix_tg OWNER mautrix_tg ENCODING 'UTF8' LC_COLLATE = 'C' LC_CTYPE = 'C' TEMPLATE template0;
\q
```
### 🛠 ШАГ 2: Подготовка контейнера и Виртуального окружения
Заходим в новый LXC-контейнер для мостов (`172.20.6.6`).
**1. Системные пакеты (включая ffmpeg для конвертации голосовых/видео):**
```bash
apt update && apt upgrade -y
apt install -y build-essential python3 python3-dev python3-venv python3-pip \
libffi-dev libssl-dev libpq-dev libmagic-dev \
ffmpeg wget nano sudo
```
**2. Создаем пользователя и окружение:**
```bash
adduser --system --group --no-create-home mautrix
mkdir -p /opt/mautrix-telegram
chown -R mautrix:mautrix /opt/mautrix-telegram
cd /opt/mautrix-telegram
python3 -m venv env
source env/bin/activate
```
**3. Установка моста (Важный нюанс для Python 3.13+):**
```bash
pip install --upgrade pip wheel
# Жизненно важно для новых версий Python: откатываем setuptools, иначе мост не найдет свои ресурсы
pip install "setuptools<70"
# Ставим сам мост, драйвер БД и поддержку SOCKS5-прокси
pip install mautrix-telegram[all] psycopg2 pysocks
```
### ⚙️ ШАГ 3: Конфигурация моста
Скачиваем официальный шаблон конфига:
```bash
wget https://raw.githubusercontent.com/mautrix/telegram/v0.15.3/mautrix_telegram/example-config.yaml -O config.yaml
```
Открываем `nano config.yaml` и меняем ключевые блоки:
**1. Подключение к Synapse и БД:**
```yaml
homeserver:
address: http://172.20.6.5:8008 # IP вашего Synapse
domain: ВАШ_ДОМЕН.ru
appservice:
address: http://172.20.6.6:29317 # IP этого контейнера
hostname: 0.0.0.0
port: 29317
database: postgresql://mautrix_tg:ТвойСложныйПароль@172.20.50.10:5432/mautrix_tg
```
**2. Права доступа (Обязательно удалите `example.com`!):**
```yaml
permissions:
'*': relaybot
ВАШ_ДОМЕН.ru: full
'@admin:ВАШ_ДОМЕН.ru': admin
```
**3. Double Puppeting (Марионеточное управление):**
*Это позволяет писать в Матриксе, а в Телеграме сообщения будут от вашего имени.*
```yaml
double_puppet_server_map:
ВАШ_ДОМЕН.ru: https://ВАШ_ДОМЕН.ru
# ВАЖНО: Пишем в одну строку (в фигурных скобках), чтобы избежать багов парсера!
login_shared_secret_map: {"ВАШ_ДОМЕН.ru": "СЕКРЕТ_ИЗ_HOMESERVER_YAML_SYNAPSE"}
```
**4. Обход блокировок (SOCKS5 Прокси) и Ключи:**
```yaml
telegram:
api_id: 123456 # Ваши ключи с my.telegram.org
api_hash: abcdef...
proxy:
type: socks5
address: 172.20.0.1 # IP вашего роутера с поднятым прокси
port: 1080
rdns: true
username: ''
password: ''
```
### 🤝 ШАГ 4: Регистрация моста в Synapse
**1. Генерируем "Паспорт" моста:**
```bash
python -m mautrix_telegram -g -c config.yaml
cat registration.yaml
```
*(Скопируйте весь выведенный текст).*
**2. Идем в контейнер Synapse (`172.20.6.5`):**
* Создаем файл: `nano /opt/synapse/data/telegram-registration.yaml` и вставляем текст.
* Открываем главный конфиг: `nano /opt/synapse/data/homeserver.yaml`.
* Добавляем путь в самый конец:
```yaml
app_service_config_files:
- /opt/synapse/data/telegram-registration.yaml
```
### 🛠 Как отключить Rate Limits в "чистом" Synapse
```yaml
# Отключаем лимиты для мостов (Rate Limiting)
rc_messages:
per_second: 1000
burst_count: 5000
rc_registration:
per_second: 100
burst_count: 500
rc_login:
address:
per_second: 100
burst_count: 500
account:
per_second: 100
burst_count: 500
rc_admin_redaction:
per_second: 100
burst_count: 500
rc_joins:
local:
per_second: 100
burst_count: 500
remote:
per_second: 100
burst_count: 500
rc_invites:
per_room:
per_second: 100
burst_count: 500
per_user:
per_second: 100
burst_count: 500
```
*(Сохрани файл: `Ctrl+O`, `Enter`, `Ctrl+X`).*
* Перезапускаем Synapse: `systemctl restart matrix-synapse`.
### 🚀 ШАГ 5: Запуск в виде Службы
Возвращаемся в контейнер мостов (`172.20.6.6`).
Выходим из виртуального окружения (`deactivate`) и создаем службу:
```bash
chown -R mautrix:mautrix /opt/mautrix-telegram
nano /etc/systemd/system/mautrix-telegram.service
```
*Вставляем:*
```ini
[Unit]
Description=Mautrix-Telegram bridge
After=network.target
[Service]
Type=simple
User=mautrix
Group=mautrix
WorkingDirectory=/opt/mautrix-telegram
ExecStart=/opt/mautrix-telegram/env/bin/python -m mautrix_telegram -c /opt/mautrix-telegram/config.yaml
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
```
Запускаем:
```bash
systemctl daemon-reload
systemctl enable --now mautrix-telegram
```
**🎉 ГОТОВО!**
Открывайте Element, начинайте чат с `@telegrambot:ВАШ_ДОМЕН.ru` и пишите команду `login`.
---