Загрузить файлы в «/»
This commit is contained in:
@@ -0,0 +1,209 @@
|
|||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🌉 Ультимативный гайд (Часть 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`.
|
||||||
|
|
||||||
|
---
|
||||||
Reference in New Issue
Block a user