Matrix Bridges¶
Bridges дозволяють підключити Matrix до інших месенджерів.
Що таке Bridge¶
Bridge — це сервіс, що транслює повідомлення між Matrix та іншим протоколом.
Типи bridges¶
| Тип | Опис | Приклад |
|---|---|---|
| Puppeting | Один Matrix юзер = один зовнішній | Telegram |
| Relay | Один бот для всіх | IRC |
| Double-puppeting | Повна синхронізація | mautrix |
Як працює¶
[Element] → [Synapse] → [Bridge] → [Telegram API] → [Telegram]
← ← ← ← ←
mautrix-telegram¶
Встановлення¶
version: '3.8'
services:
mautrix-telegram:
image: dock.mau.dev/mautrix/telegram:latest
container_name: mautrix-telegram
restart: unless-stopped
volumes:
- ./telegram-data:/data
depends_on:
- synapse
Конфігурація¶
config.yaml:
homeserver:
address: http://synapse:8008
domain: example.com
appservice:
address: http://mautrix-telegram:29317
hostname: 0.0.0.0
port: 29317
database: sqlite:////data/mautrix-telegram.db
id: telegram
bot_username: telegrambot
bot_displayname: Telegram Bridge Bot
telegram:
api_id: YOUR_API_ID
api_hash: YOUR_API_HASH
bot_token: YOUR_BOT_TOKEN
bridge:
username_template: "telegram_{userid}"
displayname_template: "{displayname} (Telegram)"
allow_puppet_invite: true
permissions:
"*": "relaybot"
"@admin:example.com": "admin"
Отримання Telegram API¶
- Перейти на https://my.telegram.org
- Увійти
- API development tools
- Create application
- Скопіювати api_id та api_hash
Реєстрація¶
# Згенерувати registration
docker exec mautrix-telegram python -m mautrix_telegram \
-g -c /data/config.yaml -r /data/registration.yaml
# Скопіювати registration до Synapse
cp telegram-data/registration.yaml synapse-data/telegram-registration.yaml
Додати до homeserver.yaml:
app_service_config_files:
- /data/telegram-registration.yaml
Використання¶
# Почати діалог з ботом
@telegrambot:example.com
# Увійти
!tg login +380XXXXXXXXX
# Ввести код
!tg code 12345
# Створити портал з чату
!tg bridge -chatid
mautrix-signal¶
Docker Compose¶
services:
mautrix-signal:
image: dock.mau.dev/mautrix/signal:latest
container_name: mautrix-signal
restart: unless-stopped
volumes:
- ./signal-data:/data
depends_on:
- signald
signald:
image: signald/signald:latest
container_name: signald
restart: unless-stopped
volumes:
- ./signald-data:/signald
Використання¶
# Почати діалог з ботом
@signalbot:example.com
# Привʼязати номер
!signal register +380XXXXXXXXX
# Підтвердити
!signal verify CODE
mautrix-whatsapp¶
Docker Compose¶
services:
mautrix-whatsapp:
image: dock.mau.dev/mautrix/whatsapp:latest
container_name: mautrix-whatsapp
restart: unless-stopped
volumes:
- ./whatsapp-data:/data
Використання¶
# Почати діалог
@whatsappbot:example.com
# Отримати QR код
!wa login
# Просканувати QR в WhatsApp
# Linked Devices → Link a Device
IRC Bridge (Heisenbridge)¶
Docker Compose¶
services:
heisenbridge:
image: hif1/heisenbridge:latest
container_name: heisenbridge
restart: unless-stopped
command: -c /data/config.yaml http://synapse:8008
volumes:
- ./heisenbridge-data:/data
Використання¶
# Діалог з ботом
@heisenbridge:example.com
# Підключитись до мережі
ADDNETWORK Libera irc.libera.chat
OPEN Libera
# Приєднатись до каналу
JOIN #channel
Діагностика¶
Перевірка статусу¶
# Логи bridge
docker logs mautrix-telegram -f
# Статус appservice в Synapse
curl -H "Authorization: Bearer $TOKEN" \
http://localhost:8008/_synapse/admin/v1/appservices
Типові проблеми¶
| Проблема | Причина | Рішення |
|---|---|---|
| Bridge не відповідає | Registration | Перевірити app_service_config |
| Повідомлення не йдуть | Permissions | Перевірити config.yaml |
| Login failed | API credentials | Оновити api_id/hash |
| Timeout | Network | Перевірити DNS та firewall |
Очистка¶
# Видалити ghost користувачів
!tg clean-rooms
# Reconnect
!tg reconnect
Безпека¶
Рекомендації¶
- Окремий акаунт — створіть новий Telegram для bridge
- Обмежені права — не давайте admin всім
- Моніторинг — слідкуйте за логами
- Backup — зберігайте session files
Ризики¶
- Bridge має доступ до всіх повідомлень
- Session може бути скомпрометований
- Зовнішній сервіс може заблокувати
Шлях: services/matrix/bridges.md