Как настроить мосты в Matrix: WhatsApp, Telegram и Discord
Для подключения Matrix к WhatsApp, Telegram или Discord запустите совместимый мостовой сервис рядом с вашим домашним сервером, зарегистрируйте этот сервис как сервис приложения Matrix, а затем свяжите или авторизуйте внешнюю учетную запись. Для каждой сети требуется своя собственная конфигурация моста и учетные данные. Сам по себе запущенный процесс не доказывает, что комната подключена: проверьте отправку сообщения в обоих направлениях после настройки.
Один домашний сервер Matrix может подключаться к трем отдельно настроенным мостовым сервисам.
В этом руководстве используются mautrix-whatsapp и mautrix-telegram , а также проект Matrix.org matrix-appservice-discord для Discord. Мост — это отдельная серверная программа, а не переключатель в Element. В спецификации Matrix такой тип интеграции называется сервисом приложения: он получает соответствующие события домашнего сервера и может создавать пользователей или комнаты в зарегистрированном для него пространстве имен. См. технический обзор Matrix и спецификацию API сервиса приложения .
Следует ли размещать мосты на собственном сервере или использовать общедоступный экземпляр?
Самостоятельное размещение позволяет контролировать место работы моста, способ хранения журналов и учетных данных, а также пользователей, имеющих право подключения. Это также означает, что вам необходимо поддерживать три сервиса, обновлять их, защищать их базы данных и устранять неполадки с подключением. Публичный мост может быть быстрее для тестирования, но его оператор контролирует доступность, политику доступа и обработку данных. Перед выбором экземпляра ознакомьтесь с текущей документацией и разделом поддержки моста; доступность и функциональные возможности могут меняться.
Эти соединения не эквивалентны встроенной поддержке служб обмена сообщениями. Функции мостового соединения могут различаться в зависимости от сети, а голосовые/видеозвонки, реакции, редактирование, ветки обсуждений, уведомления о прочтении, история или управление группами могут быть неполными. Прежде чем переносить важные обсуждения, протестируйте функции, от которых действительно зависит ваше сообщество.
Что вам понадобится перед установкой чего-либо?
Домашний сервер Matrix, поддерживающий службы приложений и предоставляющий администратору доступ для их регистрации. В приведенных ниже примерах используется Synapse; для других домашних серверов используется собственный процесс регистрации.
Доступный сетевой путь между домашним сервером и каждым мостом. В Docker под " localhostвнутри одного контейнера" понимается сам контейнер; используйте общую сеть Docker и сетевое имя службы моста, когда домашнему серверу необходимо связаться с другим контейнером.
Для каждого моста требуется отдельный файл конфигурации, регистрационный файл, место хранения постоянных данных и хранилище секретов. Следуйте текущим инструкциям проекта относительно поддерживаемых баз данных, версий среды выполнения и образов контейнеров; требования могут отличаться и изменяться.
Для WhatsApp потребуется телефон с учетной записью, которую вы хотите связать. Для Telegram — учетная запись, уже авторизованная через официальный клиент Telegram. Для Discord — приложение/бот Discord и разрешение от владельца или администратора сервера.
Synapse считывает каждый файл регистрации моста из пути, указанного в настройках app_service_config_files; приведенные пути являются примерами.
Как зарегистрировать мост в Synapse?
Развертывайте по одному мосту за раз. Начните с текущей версии и ее примера конфигурации. Настройте адрес домашнего сервера, имя публичного сервера, адрес прослушивателя моста, базу данных и пути к хранилищу в соответствии с руководством для соответствующего проекта. Избегайте использования одной базы данных для несвязанных служб моста.
Создайте файл регистрации. В процессе настройки моста создается YAML-файл регистрации, содержащий токены идентификации и аутентификации приложения и сервиса. Рассматривайте эти токены как пароли: ограничьте права доступа к файлам, не добавляйте их в Git и не вставляйте в публичные комнаты, скриншоты или сообщения в службу поддержки.
Сделайте файл доступным для Synapse. Скопируйте или смонтируйте файл регистрации в месте, где процесс Synapse сможет его прочитать. Добавьте его путь ниже app_service_config_filesв файл конфигурации Synapse homeserver.yaml. Добавьте отдельную запись в список для каждого моста; не перезаписывайте запись другой службы. В руководстве по регистрации приложений Mautrix описан этот процесс, и отмечается, что Synapse необходимо перезапустить после изменения списка регистрации.
Перезапустите Synapse и проверьте журналы. Перезапустите Synapse после изменения регистрации, затем запустите мост. Если Synapse не запускается, сначала проверьте отступы YAML-файла, путь к файлу внутри контейнера и права на чтение. Если мост запускается, но не может подключиться, проверьте URL-адрес домашнего сервера, сетевой маршрут, TLS-сертификат и адрес прослушивателя.
Для развертывания Docker адрес службы приложения, настроенный мостом, должен быть доступен из контейнера домашнего сервера. В примечаниях к начальной настройке Mautrix объясняется, почему имя контейнера в общей сети может работать там, где localhostэто не так. Проект Discord также документирует собственный процесс регистрации и пример конфигурации в файле README исходного кода .
Как подключить аккаунт WhatsApp?
После регистрации и запуска mautrix-whatsapp откройте приватный чат Matrix с его ботом-мостом и отправьте login qr. Откройте WhatsApp на телефоне, на котором зарегистрирован аккаунт, перейдите в раздел «Связанные устройства» и отсканируйте код, предоставленный мостом. В документации к мосту также описан вариант сопряжения кода с номером телефона; используйте метод, поддерживаемый вашей установленной версией. Не копируйте код входа или QR-код в общедоступную комнату.
Процесс аутентификации в WhatsApp Bridge запрашивает у вас привязку Bridge как устройства к учетной записи WhatsApp на вашем телефоне.
Во время сопряжения держите телефон и учетную запись доступными и убедитесь, что мост сообщает об успешном входе в систему, прежде чем открывать комнаты портала. Это связывает учетную запись через сессию в стиле «сопутствующее устройство»; это не превращает мост в официальную интеграцию WhatsApp Business API. WhatsApp может изменить поведение привязки устройств, поэтому следуйте текущим инструкциям по аутентификации mautrix-whatsapp . Мост может синхронизировать только ту историю, которую внешний сервис предоставляет связанному устройству и которую реализует мост.
Как подключиться к Telegram?
Начните приватный чат с ботом mautrix-telegram. Мост поддерживает вход по QR-коду и шестизначному коду авторизации, отправленному на уже авторизованный клиент Telegram; он не регистрирует новую учетную запись Telegram. Для входа по QR-коду откройте Telegram на своем телефоне, перейдите в Настройки > Устройства > Привязать настольное устройство , затем отправьте login qrQR-код боту-мосту и отсканируйте его. Следуйте подсказкам бота, если в вашей учетной записи Telegram включена двухфакторная аутентификация.
Экран «Подключить настольное устройство» в Telegram используется для авторизации сеанса моста; названия пунктов меню могут различаться в зависимости от версии приложения.
Используйте уже существующую учетную запись и следуйте правилам входа в Telegram. Разработчики моста предупреждают, что Telegram может рассматривать новые учетные записи, использующие сторонние клиенты, как подозрительные; это риск на стороне платформы, который администратор Matrix не может гарантировать исключить. Перед входом в систему ознакомьтесь с руководством по аутентификации mautrix-telegram и храните любой одноразовый код или пароль в личном чате с ботом.
Как настроить Discord?
Проект matrix-appservice-discord использует приложение Discord и бота. Создайте приложение на портале разработчиков Discord , создайте/настройте пользователя бота и задайте учетные данные бота в конфигурации моста, используя текущий пример проекта. Не раскрывайте токен бота. Запустите описанную в документации команду или процесс авторизации моста, а затем попросите владельца сервера Discord авторизовать бота для нужного сервера, предоставив ему только те разрешения, которые требуются мосту.
Настройка Discord начинается с приложения и бота; точные поля и параметры авторизации соответствуют текущему порталу Discord и примеру конфигурации моста.
Для конкретного канала получите его идентификаторы сервера и канала, используя поддерживаемые Discord инструменты разработчика, пригласите бота-моста со стороны Matrix в комнату Matrix и используйте описанную в документации команду для комнаты. В файле README разработчика приведен пример в таком виде !discord bridge ServerID ChannelID; для завершения привязки может потребоваться подтверждение администратора. Не используйте идентификаторы из иллюстрации: замените их фактическими идентификаторами и подтвердите команду и права доступа в файле README для вашей установленной версии.
Команда «Комната Discord» связывает комнату Matrix с сервером и каналом Discord; замените реальные ID и следуйте любым запросам на подтверждение.
Работа Discord особенно зависит от прав доступа бота и политики сервера. Если бот может присоединиться, но сообщения не передаются, убедитесь, что канал ему виден, предоставлены необходимые права доступа к сообщениям и что мост завершил все подтверждения администратора. В файле README проект помечен как бета-версия, поэтому уточняйте текущий статус проекта и поддерживаемое поведение, а не предполагайте, что все функции Discord будут воспроизводиться.
Как можно проверить работоспособность моста?
Сначала используйте небольшую закрытую тестовую комнату и канал с низким уровнем риска. Отправьте уникальное сообщение в открытом текстовом формате из Matrix и убедитесь, что оно отображается на удаленном сервисе; затем ответьте с удаленной стороны и убедитесь, что ответ отображается в Matrix. Проверьте отдельно атрибуцию, цепочку ответов, вложения, правки и реакции, если это важно для вашего случая. Зеленый статус процесса означает только то, что программа запущена: это не подтверждает успешный вход в систему, наличие у бота доступа к каналу или правильность сопоставления комнаты и канала.
Полезным методом сквозной проверки является отправка тестового сообщения в каждом направлении и проверка того, появляется ли его аналог в подключенной комнате.
Если тест не пройден, сравните точное время сообщения с логами моста и домашнего сервера. Перед тем как делиться логами, удалите токены доступа, номера телефонов, идентификаторы Discord (если они конфиденциальны) и имена контактов. Для развертывания в контейнерах также убедитесь, что файл регистрации смонтирован в Synapse, конечная точка моста разрешается в общей сети и никакие брандмауэры не блокируют настроенный прослушиватель.
Используйте журналы моста и домашнего сервера для проверки работоспособности процессов и подключения; приведенные примеры строк состояния не являются зафиксированными результатами диагностики.
Что следует знать о шифровании и конфиденциальности?
Сервисы приложений получают события в пространствах имен и комнатах, для обработки которых они настроены. Не следует предполагать, что зашифрованная комната Matrix автоматически читается каждым мостом. Некоторые мосты Mautrix поддерживают сквозное шифрование, которое необходимо специально настроить и которое имеет свои собственные требования к управлению ключами; обратитесь к руководству по сквозному шифрованию Mautrix и проверьте поддержку для конкретного моста. Возможности шифрования мостов Discord могут отличаться. Если мост не может обрабатывать режим шифрования комнаты, используйте подходящую незашифрованную тестовую комнату или выберите мост с документированной поддержкой, вместо того чтобы ослаблять рабочую комнату, полагаясь на догадки.
Наконец, помните, что содержимое сообщений и учетные данные передаются через программное обеспечение, которое вы используете, или через общедоступного оператора моста. Ограничьте круг лиц, которые могут приглашать ботов моста, защитите базы данных и резервные копии, замените токен в случае его утечки и ознакомьтесь с текущими рекомендациями моста по конфиденциальности и безопасности. Перед обновлениями перепроверьте документацию разработчика: ключи конфигурации, сценарии входа в систему, зависимости и политики платформы могут изменяться независимо друг от друга.
Контрольный список для быстрого принятия решения
Выберите экземпляр моста, оператору и политике доступа которого вы доверяете.
Зарегистрируйте каждый мост отдельно и защитите каждый сгенерированный токен.
Убедитесь, что домашний сервер может связаться с адресом моста после развертывания.
Свяжите учетные записи WhatsApp/Telegram в приватном режиме и авторизуйте бота Discord у администратора сервера.
Протестируйте сообщения в обоих направлениях, а затем протестируйте только те дополнительные функции, которые вам необходимы.
Перед использованием моста для конфиденциальной или важной связи необходимо убедиться в наличии поддержки шифрования, истории операций и состоянии технического обслуживания.