Arkadii "RKD" Chumachenko

Matrix Messenger

Когда-то, год или два назад, я пытался написать пост про то, как прокинуть кучу всяких мессенджеров (Whatsapp, Telegram, Facebook, и т.д.) в один, но тогдашний мой сетап имел несколько малоприятных косяков, в итоге отожрал кучу места на диске, был благополучно поломан, а на телефоне снова поселились старые добрые (нет) ватсапп и телеграм. Но идея меня не покидала, beeper.io (пытавшийся такое делать as a service) благополучно слился, и я лениво глядел по сторонам, как бы это всё сделать по-правильному (т.е. без лишнего геморроя). И, кажется, нашёл!

Короче, нам понадобится:

  • Сервер хотя бы с 4 гигабайтами памяти, 2-4 ядрами и десятком гигабайт диска. Больше – лучше, стэк у нас довольно прожорливый.
  • Подключение к сети. Изначально я пытался делать всё на домашнем сервере в локалке под vpn, но многие части хотят работать исключительно через TLS, и с честным сертификатом.
  • Домен, указывающий на этот сервер.

Ставим на сервер yunohost – у него отличная документация, так что проблем тут возникнуть не должно. Без yunohost установка бриджей между matrix и прочими сетями оказывается несколько нетривиальной задачей.

В панели добавляем наш домен и делаем для него сертификат let's encrypt. Там же ставим приложения из каталога:

  • Synapse – сервер сети Matrix
  • Element – web-клиент для Matrix
  • Matrix-Facebook – бридж для facebook messenger
  • Matrix-Whatsapp – бридж для Whatsapp
  • Matrix-Telegram – бридж для Telegram
  • Matrix-Signal – бридж для Signal

Дальше открываем Element, регистрируем там пользователя (в моём случае это a@rkd.pw).

И, зайдя на сервер по ssh, прописываем в файлах:

  • /opt/yunohost/mautrix_facebook/config.yaml
  • /opt/yunohost/mautrix_whatsapp/config.yaml
  • /opt/yunohost/mautrix_telegram/config.yaml
  • /opt/yunohost/mautrix_signal/config.yaml

в секции bridge.permissions последней строкой своего пользователя:

'@a:rkd.pw': admin

Теперь можно перезагрузить все бриджи через панель, залогиниться в Element и, наконец, настроить бриджи. Для этого надо в поиске набрать username бриджа, соответственно:

  • @facebookbot:rkd.pw
  • @whatsappkbot:rkd.pw
  • @telegrambot:rkd.pw
  • @signalbot:rkd.pw

И открыть с ним чат. В чат посылаем команду login, бридж спрашивает всякие имена-пароли, и в случае успеха в contact list добавятся контакты из соответствующей сети. Теперь можно поставить везде Element и забыть про 4 разных приложения.

З.Ы. Whatsapp работает через web API, т.е. он должен быть запущен на телефоне. Для этого у меня дома лежит древний смартфон, постоянно подключенный к розетке.