Matrix — замечательный, но недооценённый децентрализованный протокол обмена сообщениями с прилагающимся к нему клиентом Element, который я считаю достойной и жизнеспособной альтернативой Telegram.
Рассказываю, почему я использую Matrix вместо Telegram, как присоединиться к сети Matrix и настроить свой сервер.
Итак, почему?
Я считаю, что протоколу Matrix нужна большая огласка: чем больше людей о нём узнает и начнёт его использовать — тем лучше как для протокола, так и для айти-тусовки.
Matrix — это открытый и децентрализованный протокол мгновенного обмена сообщениями, разрабатываемый энтузиастами из Matrix.org Foundation.
Спецификации протокола, равно как и клиент-серверная часть (Synapse как сервер и Element как клиент) находятся в открытом доступе — в отличие от Telegram, который в настоящее время в открытом доступе держит только свой клиент, что вызывает немало вопросов по поводу безопасности использования протокола MTProto.
У протокола Matrix существует полноценная реализация федерации, которая позволяет бесшовно общаться, организовывать общие комнаты для общения пользователям разных серверов, совершать видео- и аудиозвонки.
Клиент Element обладает всеми современными функциями, которые присущи другим популярным мессенджерам (за исключением голосовых сообщений).
Чтобы не перечислять все преимущества, выделю некоторые из них, которые склонили меня к использованию этого протокола и мессенджера:
- Децентрализация — возможность поднять свой сервер для подключения к сети Matrix
- Приватность — сквозное шифрование
- Групповые аудио- и видеозвонки для пользователей с разных серверов
- Отличное API для ботов
- Полнофункциональный веб-клиент
- Консольные клиенты
Почему не Jabber?
Потому что протокол XMPP переполнен многочисленными XEP-ами, которые так и не были никогда не реализованы во многих его клиентах. Например, до сих пор не существует ни одного Jabber-клиента c нормальной синхронизацией истории с сервером.
Почему не Signal?
Потому что Signal не поддерживает децентрализацию (в формате федерации).
Почему не Telegram?
Потому что исходные коды протокола MTProto, который используется в Telegram, никогда не были опубликованы.
Конечно, Telegram больше любят за его UI/UX — но Element на данный момент почти ничем не уступает Telegram: там есть и мосты, и комнаты, и боты, и даже стикеры — а вот людей относительно мало. К сожалению, проекту в действительности не хватает хорошего пиара.
Как подключиться к Matrix через чужой сервер
Это очень просто — просто используйте веб-клиент Element или его десктопную версию. Регистрация не займёт у вас больше минуты.
Как подключиться к Matrix через свой сервер
Для этого необходимо настроить свой HomeServer на Synapse — официальном сервере Matrix. Ниже я привёл инструкции, как это можно сделать.
Процесс настройки сервера Synapse мало чем отличается на разных дистрибутивах Linux — основное отличие заключается в том, какую команду необходимо отдать операционной системе, чтобы та поняла, какой пакетный менеджер нужно использовать для установки.
Я буду объяснять на примере дистрибутива Ubuntu Server 20.04.
Шаг 1. Установка сервера Synapse
Подготавливаем нашу рабочую среду к установке сервера Synapse:
Загружаем непосредственно сам Synapse:
В процессе установки пакета будет запрошено название доменного имени, на котором будет располагаться ваш сервер Synapse. Как правило, это домен вида matrix.example.com, где A-запись поддомена matrix указывает непосредственно на ваш сервер с запущенным Synapse.
После установщик спросит вас, хотите ли вы отправлять анонимную статистику разработчикам.
На этом установка сервера Synapse завершена. Теперь необходимо включить Synapse при загрузке операционной системы:
Мы также можем убедиться, как идут дела у сервера и работает ли он в принципе:
Шаг 2. Настройка сервера Synapse
Используйте текстовый редактор (например, nano или vim) и откройте файл /etc/matrix-synapse/homeserver.yaml для редактирования.
Найдите строку listeners: и приведите секцию в следующий вид:
listeners:-port:8008tls:falsetype:httpx_forwarded:truebind_addresses:[‘127.0.0.1’]resources:-names:[client,federation]compress:false
Отключите возможность регистрации новых пользователей на вашем сервере, если сервером будете пользоваться только вы:
Сгенерируйте случайную строку и поместите её в раздел registration_shared_secret:
После сохранения файла с настройками не забудьте перезапустить Synapse:
Шаг 3. Настройка Let’s Encrypt
Сертификат необходим в том случае, если ваш сервер не находится за Cloudflare или другим подобным сервисом.
Для начала необходимо установить certbot — программу для выпуска сертификатов:
И выпустить сертификат для вашего доменного имени:
Готово. Ваш сертификат теперь находится по адресу /etc/letsencrypt/live/matrix.example.com/.
Шаг 4. Настройка Nginx в качестве Reverse Proxy
В этой конфигурации мы будем использовать 80 порт для незащищённого соединения, 443 — для защищённого и 8448 для подключения к федерации Matrix.
Не забудьте перезагрузить Nginx после внесения изменений в конфигурацию:
Шаг 5. Регистрация нового пользователя
Теперь зарегистрируйте нового пользователя, под которым вы будете заходить на сервер:
Готово.
Мои поздравления, теперь вы — полноценный участник сети Matrix с собственным сервером.
Первый-первый, я второй! Как слышно? Приём!
Можете написать мне, если хотите проверить, правильно ли вы настроили сервер.