Чем полезен и как настроить Matrix – децентрализованный мессенджер с чатами и звонками

Сегодня мы хотим рассказать о Matrix – открытом протоколе мгновенного обмена сообщениями и файлами, который отличает децентрализация. Разберем, что в нем особенного и как его настроить.

Почему это важно

Мессенджеры давно стали частью повседневной жизни каждого из нас – с их помощью мы общаемся, делимся файлами, решаем рабочие и личные вопросы. При этом в реалиях цифрового мира личные переписки нередко становятся объектом массового наблюдения, а данные пользователей – утекают в публичное пространство. 

За последние годы меняется и ситуация с доступом к мессенджерам в России – в 2024 были заблокированы Signal, Briar, Session, SimpleX Chat, Verum и Viber, в 2025 – FaceTime и Snapchat, а в феврале 2026 началось замедление Telegram и полная блокировка WhatsApp (принадлежит компании Meta, которая признана экстремистской и запрещена в РФ).

В такой ситуации, когда привычные инструменты перестают быть доступны, всё актуальнее становится вопрос удобного и безопасного общения – и Matrix может в этом помочь.

Кому и зачем нужен Matrix

Итак, используя Matrix, вы получаете привычный функционал мессенджера (чаты, группы, звонки) и при этом полностью контролируете свои данные – сами решаете, где хранить переписку и кто имеет к ней доступ, не зависите от политик и алгоритмов сторонних компаний и можете свободно общаться без ограничений и цензуры.

Вот почему Matrix регулярно входит в рейтинги самых защищенных мессенджеров, а на официальном сайте разработчика решений в области кибербезопасности SSH Communications Security он характеризуется как ведущая платформа для безопасной связи с открытым исходным кодом.

Matrix позволяет:

  • Общаться с людьми, использующими самые разные мессенджеры

Тысячи людей используют Matrix, даже не зная об этом, ведь он интегрирован в другие инструменты и приложения благодаря мостам – программам, которые работают в связке с сервером и пересылают сообщения между различными сетями. Подобные мосты есть для Telegram, Discord, Gitter, Slack/Mattermost, IRC, XMPP, Facebook Messenger (принадлежит компании Meta, которая признана экстремистской и запрещена в РФ), Signal, Skype и WhatsApp (принадлежит компании Meta, которая признана экстремистской и запрещена в РФ).

  • Иметь полный контроль над данными

Все ваши сообщения, файлы и история переписки остаются только у вас, а не у сторонней компании, которая может использовать их в своих целях.

  • Гибко управлять правами

Можно создавать открытые каналы для всей компании, закрытые группы для проектов и личные чаты, настраивая уровни доступа под любую задачу.

  • Обеспечить полную защиту данных от посторонних

Благодаря сквозному шифрованию E2EE (стандарт защиты данных, при котором информация шифруется на устройстве отправителя и расшифровывается только на устройстве получателя) ваши личные и рабочие переписки и разговоры зашифрованы так, что даже администратор сервера не сможет их прочитать.

Все эти особенности делают Matrix востребованным более чем у 115 млн пользователей, включая правительства, которые стремятся к цифровому суверенитету.

Например, политики Европы продвигают его как средство избавления от зависимости от иностранных мессенджеров: Германия применяет Matrix в медицинских учреждениях и госорганах, а во Франции он внедрен на государственном уровне – на его основе работает служебный мессенджер Tchap, через который ежедневно общаются более 600 тысяч госслужащих.

В общем, если вы заботитесь о безопасности данных, хотите иметь полный контроль над коммуникацией и не зависеть от политик внешних платформ, самое время выполнить установку мессенджера Matrix. Разберем по пунктам, как это сделать.

Как настроить Matrix 

Рассмотрим сценарий запуска Matrix Synapse – серверной реализации протокола Matrix.

В этом случае удобно использовать готовое решение Docker – оно позволяет развернуть сервер в изолированном контейнере без установки зависимостей вручную.

Приведем пример docker-compose файла для развертывания 4 служб:

  • synapse-app – само приложение Matrix;
  • synapse-db – сервер баз данных, мы будем использовать PostgreSQL;
  • element – веб-интерфейс (веб-клиент);
  • caddy – прокси для доступа к службам через веб, в качестве реализации будем использовать Caddy.

Файл docker-compose

Для начала развернем виртуальный сервер, на котором нам предстоит настроить Matrix, а затем создадим каталог, где будем размещать инфраструктурные файлы приложения:

mkdir -p /opt/matrix

Перейдем в него:

cd /opt/matrix

Создадим docker-compose файл:

vim docker-compose.yml
   services:
     synapse-app:
       image: matrixdotorg/synapse:${SYNAPSE_VERSION}
       container_name: synapse-app
       hostname: synapse-app
       restart: unless-stopped
       environment:
         TZ: ${TIMEZONE}
         SYNAPSE_CONFIG_PATH: /data/homeserver.yaml
       secrets:
         - pg_password
       volumes:
         - ./synapse_data:/data
       depends_on:
         synapse-db:
           condition: service_healthy
     
     synapse-db:
       image: docker.io/postgres:${POSTGRES_VERSION}-alpine
       container_name: synapse-db
       hostname: synapse-db
       restart: unless-stopped
       environment:
         TZ: ${TIMEZONE}
         POSTGRES_USER: ${POSTGRES_USER}
         POSTGRES_DB: ${POSTGRES_DBNAME}
         POSTGRES_PASSWORD_FILE: /run/secrets/pg_password
         POSTGRES_INITDB_ARGS: --encoding=UTF-8 --lc-collate=C --lc-ctype=C
       secrets:
         - pg_password
       volumes:
         - ./pgsql_data:/var/lib/postgresql/data
       healthcheck:
         test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DBNAME}"]
         interval: 5s
         timeout: 5s
         retries: 5
     
     element:
       image: vectorim/element-web:${ELEMENT_VERSION}
       hostname: element
       container_name: element
       restart: unless-stopped
       environment:
         TZ: ${TIMEZONE}
       volumes:
         - ./element_data/config.json:/app/config.json
     
     caddy:
       image: caddy:${CADDY_VERSION}
       restart: unless-stopped
       ports:
         - "80:80"
         - "443:443"
         - "443:443/udp"
       volumes:
         - $PWD/caddy_config:/etc/caddy
         - ./caddy_data:/data
         - ./caddy_config:/config

   secrets:
     pg_password:
       file: ./secrets/pg_password.txt

Файлы env и secrets

В сценарии используются переменные и секреты. Создадим соответствующие файлы.

Файл для системных переменных:

vim .env
ELEMENT_URL=matrix.betutorial.ru
SYNAPSE_VERSION=v1.150.0
POSTGRES_VERSION=18
ELEMENT_VERSION=v1.12.13
CADDY_VERSION=2.11
POSTGRES_USER=synapse
POSTGRES_DBNAME=synapse
TIMEZONE=Europe/Moscow

Обязательно укажите URL (ELEMENT_URL) для портала, по которому будет отвечать приложение.

Также необходимо указать актуальные версии:

  • SYNAPSE_VERSION – приложение Synapse;
  • POSTGRES_VERISONPostgreSQL;
  • ELEMENT_VERSION – веб-приложение Element;
  • CADDY_VERISON – веб-сервер Caddy.

Создадим каталог и файл с паролем PostgreSQL:

mkdir secrets

Сгенерировать пароль можно, например, с помощью команды:

openssl rand -base64 30

Вставьте полученный пароль в файл secrets/pg_password.txt, также его необходимо будет указать в конфигурации synapse, о чем мы расскажем в следующем пункте статьи.

vim secrets/pg_password.txt

Важный момент – пароль должен храниться в файле без лишних пробелов и переносов строк.

Настройка приложений

Прежде чем запускать контейнеры, выполним предварительные настройки для synapse, element и веб-сервера caddy.

Сгенерируем конфигурационный файл для matrix. Для этого выполним команду generate внутри контейнера:

source .env
docker run -it --rm -v ./synapse_data:/data -e SYNAPSE_SERVER_NAME=${ELEMENT_URL} -e SYNAPSE_REPORT_STATS=no matrixdotorg/synapse:${SYNAPSE_VERSION} generate

Теперь открываем сформированный конфигурационный файл:

vim synapse_data/homeserver.yaml

Полностью заменим раздел database:

...
database:
  name: psycopg2
  txn_limit: 10000
  args:
    user: synapse
    password: your-password-synapse-db
    database: synapse
    host: synapse-db
    port: 5432
    cp_min: 5
    cp_max: 10
…

В нашем примере мы указываем такие параметры:

  • будет использоваться база PostgreSQL (psycopg2);
  • сервер находится в контейнере synapse-db;
  • подключаемся под пользователем synapse с паролем, сгенерированным ранее (рекомендуется заменить его на свой, такой же пароль должен быть задан в секрете docker).

Element

Создадим каталог:

mkdir -p element_data

Создадим конфигурационный файл для element:

vim element_data/config.json
{
     "default_server_config": {
         "m.homeserver": {
             "base_url": "https://matrix.betutorial.ru",
             "server_name": "matrix.betutorial.ru"
         },
         "m.identity_server": {
             "base_url": ""
         }
     },
     "brand": "Element",
     "show_labs_settings": false,
     "bug_report_endpoint_url": null,
     "posthog": false,
     "sentry": false,
     "allow_guests": false,
     "disable_guests": true,
     "guest_registrations_url": null
 }

Обязательно замените доменное имя сервиса на свое.

Настройка Caddy

Создадим каталог:

mkdir -p caddy_config

И конфигурационный файл для веб-клиента element:

vim caddy_config/Caddyfile
matrix.betutorial.ru {
    header /.well-known/matrix/* Content-Type application/json
    header /.well-known/matrix/* Access-Control-Allow-Origin *
    respond /.well-known/matrix/server `{"m.server": "matrix.betutorial.ru:443"}`
    respond /.well-known/matrix/client `{"m.homeserver":{"base_url":"https://matrix.betutorial.ru"},"m.identity_server":{"base_url":"https://identity.betutorial.ru"},"org.matrix.msc4143.rtc_foci":[{"type":"livekit","livekit_service_url":"https://matrix-rtc.betutorial.ru"}]}`
    reverse_proxy /_matrix/* synapse-app:8008
    reverse_proxy /_synapse/client/* synapse-app:8008
}
element.betutorial.ru {
  reverse_proxy element:80
}

Запуск и проверка

Запустим контейнеры с помощью docker-compose:

docker compose up -d

Можно попробовать отправить http-запрос:

curl -I --resolve ${EL_URL}:80:127.0.0.1 https://${ELEMENT_URL}/

Мы должны получить код 200:

HTTP/1.1 200 OK

Затем создадим нового пользователя matrix:

docker exec -it synapse-app register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008

Система потребует ввода логина (можно оставить root), а также пароль и указание, должен ли данный пользователь быть администратором:

New user localpart [root]: 
 Password: 
 Confirm password: 
 Make admin [no]: yes

В нашем примере создана административная учетная запись.

В результате видим:

Sending registration request...
Success!
matrix установка
matrix настройка

На этом настройки подошли к концу – Matrix готов к работе.

Часто задаваемые вопросы о Matrix

Как пригласить людей в Matrix?

Для этого в Matrix необходимо создать нового пользователя через команду: 

docker exec -it synapse-app register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008

Затем следует отправить пользователю логин и пароль.

Как создать чат в Matrix?

Нажмите на кнопку и выберите опцию “Начать чат”. В появившемся окне начните вводить имя пользователя или его Matrix ID (например, @user:beget.com).

matrix создать чат
matrix сообщения
Как создать комнату в Matrix?

Чтобы создать комнату, нажмите на значок “” рядом с разделом “Комнаты” (Rooms) в левой боковой панели и выберите “Новая комната” (New room). После этого введите название комнаты, оставьте опцию “Приватная комната (только по приглашениям)” включенной для создания закрытой комнаты и нажмите “Создать комнату”.

matrix создание комнаты
matrix создание приватной комнаты
Зачем нужны пространства в Matrix?

Пространства (Spaces) полезны для объединения нескольких связанных комнат в одну структуру – таким образом можно:

  • группировать текстовые и голосовые комнаты по проектам, отделам или темам;
  • управлять доступом ко всем вложенным комнатам централизованно – пригласив участника в пространство, вы можете предоставить ему доступ ко всем комнатам, которые администратор настроил как видимые для участников пространства;
  • добавлять существующие комнаты в пространство и отсоединять их без потери истории переписки.
matrix создать пространство
matrix приватное пространство

Заключение

Как отмечает глава Минцифры РФ Максут Шадаев, с 2022 года количество преступлений, совершенных с использованием мессенджеров, выросло более чем в три раза.

В этих реалиях использование мессенджера Matrix в России позволяет компаниям и частным пользователям сохранить полный контроль над своими данными, не зависеть от внешних серверов и политик зарубежных платформ.

При этом, помимо Matrix, есть и другие решения – например, открытые и настраиваемые платформы RocketChat и Zulip, которые можно установить на собственном сервере буквально в пару кликов, чтобы комфортно общаться в продуктовой команде или крупной компании. К слову, у себя в Beget мы общаемся в Zulip.

Надеемся, эта статья была для вас полезна, и пусть ваше общение всегда будет удобным и безопасным.

Если у вас возникли вопросы, свяжитесь с нами удобным для вас способом – и мы обязательно ответим. Также ждем вас в нашем официальном Telegram-канале, а пообщаться на любую тему с коллегами по цеху и сотрудниками Beget вы можете в нашем чате.