путешествия, учеба, стиль жизни

Как развернуть свой безопасный мессенджер Matrix + Element »

Matrix + Element с возможностью звонить

  29.03.2026 21:13, от , Рубрики: IT

Запуск собственного мессенджера: Matrix + Element + NPM 🔥 + Звонки 📲

В первой части я описал как поставить свой мессенджер, просто переписка, без звонков

Это дополнение, как сделать тоже самое только добавив аудио/видео звонков

Так же как в первой части, достаточно просто повторять всё как написано...погнали!

---------

Сегодня вопрос приватности и контроля над своими данными актуален как никогда.

Когда я сам искал простую и понятную инструкцию по установке Matrix, то столкнулся либо с перегруженными мануалами, либо с обрывками информации.

Поэтому я решил написать свой гайд по схеме «4-в-1».

В этом руководстве мы поднимем полноценный стек:

  1. Matrix (Synapse) - мозг и серверная часть мессенджера.

  2. Element - современный и удобный веб-клиент.

  3. TURN сервер - чтобы совершать звонки
  4. Nginx Proxy Manager - для автоматизации SSL-сертификатов и удобного управления трафиком.

Почему именно Matrix?

  • Децентрализация. Вы запускаете свой собственный «инстанс». Вся переписка внутри вашего сервера остается на ваших ресурсах - вы полностью владеете инфраструктурой.

  • Сквозное шифрование (E2EE). Никаких компромиссов. Благодаря протоколу Olm/Megolm даже администратор сервера (вы) не сможет прочитать содержимое зашифрованных чатов.

  • Федерация. Это «электронная почта в мире мессенджеров». Вы не заперты внутри своего сервера и можете свободно общаться с пользователями других инстансов Matrix, вступать в глобальные чаты и комнаты.

 

Предварительная подготовка

Нужно арендовать VPS сервер в надежном месте

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

В AWS это может быть дорого, рассмотрите варианты своего домашнего сервера или например Contabo, там дешевле

DNS записей должно быть две:

16.52.246.29 - меняете на свой IP адрес сервера

16.52.246.29 - yourdomain.com

16.52.246.29 - turn.yourdomain.com

Вот как у меня:

Для звонков в Matrix должны быть открыты порты:

  • 80/tcp
  • 81/tcp
  • 443/tcp
  • 8448/tcp
  • 3478/tcp
  • 3478/udp
  • 49152-65535/udp

В примере я разворачиваю на Debian 12

 

Установка и настройка

Подключаемся к созданному серверу по SSH и переходим в режим root

sudo su

Обновляем пакеты

apt update && apt upgrade -y

Ставим GIT, Cron, Curl если не установлены

apt install git cron curl -y

Клонируем мой репозиторий

git clone https://github.com/nikita-butakov/matrix_element.git

Переходим в новую папку проекта

cd matrix_element

Важно! Переименовываем файл docker-compose, т.к. здесь будет другой, со звонками!

mv docker-compose-calls.yml docker-compose.yml

Сначала нам нужно отредактировать файл config.json

nano config.json

В нем прописываем имя своего сервера вместо yourdomain.com, в моем случае это jitsidevops.website

После замены нужно выйти из файла, в nano это делается сочетанием CTRL + X

И сохранить файл, нажав Y и ENTER

Можно проверить что в файле нужная информация командой 

cat config.json

Так же меняем файл конфигурации COTURN

Переходим в папку 

cd coturn

Редактируем файл

nano turnserver.conf

Меняем строчку

static-auth-secret=CHANGE_THIS_TO_LONG_RANDOM_SECRET

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

Меняем yourdomain.com на свой и YOUR_REAL_PUBLIC_IP на внешний IP сервера

У меня получилось так:

Выходим из файла сохранив его CTRL + X , Y , Enter

Возвращаемся в основную папку

cd ../

Выдаем права на запуск скрипта для копирования сертификатов

chmod +x certs.sh

Проверить права на скрипт можно командой

ls -l

Должна появиться буква x

После выдачи права на запуск, нужно добавить периодический запуск этого скрипта в Cron

Проверяем путь нашей папки командой

pwd

У меня это /home/admin/matrix_element, значит команда будет

0 3 * * * /home/admin/matrix_element/certs.sh

Если у вас путь другой, нужно заменить на свой

Заходим в редактор Cron

crontab -e

При вопросе какой редактор для Cron использовать, можно выбрать nano, нажав цифру 1 и кнопку Enter

Добавляем в самый низ команду

0 3 * * * /home/admin/matrix_element/certs.sh

И так же выходим из файла CTRL + X, потом Y и Enter

Проверить, что строчка появилась можно командой

crontab -l

Теперь нужно установить Docker, переходим по ссылке https://docs.docker.com/engine/install/debian/

Находим раздел "Install using the convenience script

И устанавливаем с помощью указанных команд

Проверяем установку командой

docker -v

Запускаем команду по генерации конфига, заменив yourdomain.com на свой

docker run --rm -it \
-e SYNAPSE_SERVER_NAME=yourdomain.com \
-e SYNAPSE_REPORT_STATS=no \
-v $(pwd)/synapse/data:/data \
matrixdotorg/synapse:latest generate

После выполнения команды переходим в папку

cd synapse/data/

И редактируем файл homeserver.yaml

nano homeserver.yaml

Аккуратно удаляем все строчки до database

И вставляем конфиг из ссылки. Так же меняем yourdomain.com на свой

Внизу файла тоже нужно поменять turn.yourdomain.com

https://github.com/nikita-butakov/matrix_element/blob/main/homeserver_example_calls

Так же для безопасности надо поменять на свой секрет, который вы записали в начале
turn_shared_secret: "CHANGE_THIS_TO_LONG_RANDOM_SECRET"

Файл после редактирования с моим доменом будет выглядеть так:

https://github.com/nikita-butakov/matrix_element/blob/main/homeserver_example_calls_done

Возвращаемя на две папки выше, в основную

cd ../..

Сначала только запускаем Nginx Proxy Manager, для получения сертификатов

docker compose up npm -d

После запуска контейнера заходим в Nginx Proxy Manager, в моем случае это (подставить свой домен):

http://jitsidevops.website:81/

В первый раз надо зарегистрироваться и задать пароль

После регистрации, на главной странице переходим в Proxy hosts

Нажимаем Add proxy

В домен добавляем имя своего домена, у меня jitsidevops.website

Scheme: http
Forward Hostname / IP: element
Forward Port: 80
Block Common Exploits: ON
Websockets Support: ON

Вкладка Custom locations
Location: /_matrix
Scheme: http
Forward Hostname / IP: synapse
Forward Port: 8008

Location: /_synapse
Scheme: http
Forward Hostname / IP: synapse
Forward Port: 8008

Нажимаем Save и переходим обратно в консоль

Запускаем остальные контейнеры

docker compose up -d

После успешного запуска, возвращаемся в Nginx Proxy Manager и добавляем сертификат, отредактировав сущестующий Proxy Host

Вкладка SSL
Request a new certificate
Force SSL: ON
HTTP/2 Support: ON

И опять нажимаем Save

В итоге в Nginx Proxy Manager статус должен быть Online и обязательно с сертификатом

В консоли запускаем первое копирование сертификатов вручную

./certs.sh

Важно: в случае ошибки скрипта нужно проверить название папки

npm/letsencrypt/live

с сертификатом и поменять его на правильное

Если там будет например npm-2, в скрипте нужно поменять на npm-2. У меня npm-1

Перезапускам все контейнеры


docker compose down

docker compose up -d

Проверяем, что все контейнеры в статусе UP командой

docker ps

Заходим на сайт и проверяем, что он открывается

В моем случае это https://jitsidevops.website (поменять на свой домен)

Так же нужно зайти на сайт https://federationtester.matrix.org/ и проверить работу федерации введя свой домен

Checks должны быть зеленые со статусом Success

Теперь можно создавать пользователя командой


docker compose exec synapse register_new_matrix_user \
-c /data/homeserver.yaml \
http://localhost:8008 \
-u admin \
-p strongpassword \
-a

Success! - пользователь создался

Возвращаемся на сайт и проверяем вход нажав Sign in и вводим данные созданного пользователя

admin

strongpassword

Пароль потом можно поменять в настройках пользователя

Теперь можно проверить работу федерации - когда вы можете писать людям с других серверов и комнат

Найти какую-нибудь комнату/чат на сайте https://matrixrooms.info/search

Например

#linux:makigas.es

Вставить в поле Search и нажать Join

Если видете другие комнаты, сообщения и тд - супер, значит все работает правильно

Cкачиваем приложение для смартфона или Windows/Linux/Mac 

https://element.io/en/download

Теперь проверяем работу звонков

Я создал двух пользователей, нахожу себя

Звоню сам себе с компьютера на телефон

Теперь у вас есть свой мессенджер с полноценной федерацией и функцией звонков!

-----------------

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

Для теста я так же создал пользователя на matrix.org

В описании профиля видно @имя:matrix.org

Звонки, текст - всё работает. Единственное, если пользуетесь matrix.org:

  • есть ограничения по размеру и количеству файлов, скорости
  • без ограничений нужна платная подписка
  • конфиденциальность доверяете Matrix foundation, без своего сервера вы ограничены в этом

Еще нет отзывов


Идет загрузка формы...

Поиск

  Подписка на RSS

Multiblog engine
 

This collection ©2026 by Nikita Butakov

Контакты | Помощь | Blog skins by Asevo | Multiple blogs done right!