Чем полезен и как настроить 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_VERISON — PostgreSQL;
- 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 готов к работе.
Заключение
Как отмечает глава Минцифры РФ Максут Шадаев, с 2022 года количество преступлений, совершенных с использованием мессенджеров, выросло более чем в три раза.
В этих реалиях использование мессенджера Matrix в России позволяет компаниям и частным пользователям сохранить полный контроль над своими данными, не зависеть от внешних серверов и политик зарубежных платформ.
При этом, помимо Matrix, есть и другие решения — например, открытые и настраиваемые платформы RocketChat и Zulip, которые можно установить на собственном сервере буквально в пару кликов, чтобы комфортно общаться в продуктовой команде или крупной компании. К слову, у себя в Beget мы общаемся в Zulip.
Надеемся, эта статья была для вас полезна, и пусть ваше общение всегда будет удобным и безопасным.
Если у вас возникли вопросы, свяжитесь с нами удобным для вас способом — и мы обязательно ответим. Также ждем вас в нашем официальном Telegram-канале, а пообщаться на любую тему с коллегами по цеху и сотрудниками Beget вы можете в нашем чате.