| Как развернуть свой безопасный мессенджер Matrix + Element » |
Matrix + Element с возможностью звонить
Запуск собственного мессенджера: Matrix + Element + NPM 🔥 + Звонки 📲
В первой части я описал как поставить свой мессенджер, просто переписка, без звонков
Это дополнение, как сделать тоже самое только добавив аудио/видео звонков
Так же как в первой части, достаточно просто повторять всё как написано...погнали!
---------
Сегодня вопрос приватности и контроля над своими данными актуален как никогда.
Когда я сам искал простую и понятную инструкцию по установке Matrix, то столкнулся либо с перегруженными мануалами, либо с обрывками информации.
Поэтому я решил написать свой гайд по схеме «4-в-1».

В этом руководстве мы поднимем полноценный стек:
-
Matrix (Synapse) - мозг и серверная часть мессенджера.
-
Element - современный и удобный веб-клиент.
- TURN сервер - чтобы совершать звонки
-
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/tcp81/tcp443/tcp8448/tcp3478/tcp3478/udp49152-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: 8008Location: /_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, без своего сервера вы ограничены в этом

Еще нет отзывов
Никита
#IT #Explorer #ImmigrantПоиск
Архивы
- Март 2026 (2)
- Февраль 2026 (2)
- Декабрь 2025 (1)
- Ноябрь 2025 (2)
- Сентябрь 2025 (1)
- Больше...
Подписка на RSS
- RSS 2.0: Записи, Комментарии
- Atom: Записи, Комментарии
