В данной статье мы установим и настроим свой собственный мессенджер, через который можно будет общаться сообщениями, смайлами, стикерами, передавать файлы и звонить по аудио- и видеосвязи. Для полной установки нам нужно будет пройти несколько этапов: покупка доменного имени, аренда сервера на операционной системе Linux, установка и настройка нескольких типов серверов, установка клиентов на телефон и компьютер и добавление пользователей.
Регистрация в мессенджере будет полностью контролироваться вами. Её можно включать и выключать. Допустим, вы добавили всех необходимых людей и после этого закрыли регистрацию новых.
Первый этап - это покупка доменного имени для вашего сервера Matrix. Доменное имя - это уникальный адрес в интернете, который позволяет другим пользователям находить и подключаться к вашему серверу. Например, если вы купите доменное имя example.com, то ваш сервер будет доступен по этому адресу.
Для того, чтобы купить доменное имя, вам нужно обратиться к регистратору доменов - компании, которая предоставляет услуги по регистрации и управлению доменами. Вы можете выбрать любого регистратора, который поддерживает доменную зону, которую вы хотите использовать.
Для примера можно взять эту компанию, где я заказываю домены.
После регистрации по ссылке вам нужно будет зайти в свой личный аккаунт и заказать домен. Если вы затрудняетесь сами это сделать, то можно позвонить по телефону в службу поддержки, и вам помогут пошагово это сделать.
Нужно перейти в пункт меню - Домены и поддомены.
Затем в - Управление доменами и поддоменами, вы прописываете домен, который бы хотели купить (зарегистрировать). Имя надо придумать заранее, и зону первого уровня (.ru .com .net и другие) нужно придумать заранее. Это процесс бывает сложным с творческой точки зрения.
Вписываете домен, который желаете купить.
Вот пример, здесь всё приблизительно и цены в том числе, когда вы начнёте вписывать ваш домен, система предложит варианты для покупки и цены. На момент заказа они могут отличаться.
Нажимаете - Продолжить и заполняете все необходимые поля, в зависимости от доменной зоны они могут быть разными, оплачиваете и отправляете на регистрацию. После того, как домен будет зарегистрирован, вам будет необходимо настроить DNS записи, направив их на сервер, где будет установлен Matrix Synapse, Coturn.
Кроме домена, в этой компании я заказываю виртуальные и физические выделенные сервера.
Что такое DNS домена
DNS (Domain Name System) - это система доменных имен, которая обеспечивает связь между наименованием сайта и его цифровым адресом. DNS представляет собой сетевую службу, на серверах которой происходит сопоставление доменных имен с цифровыми значениями их IP-адресов.
Структуру DNS можно сравнить с логическим деревом. Система содержит распределенную базу доменных имен — пространство, которое организовано по принципу иерархии. На верхнем уровне располагается корневой домен, к которому примыкают домены первого уровня. К каждому из них присоединяются домены второго уровня и так далее.
Система доменных имен действует посредством DNS-сервера, который нужен для выполнения двух основных функций: хранения данных о соответствии имени домена конкретному IP-адресу, кэширования ресурсных записей прочих DNS-серверов.
DNS - это система, которая помогает компьютерам находить друг друга в интернете. Когда вы вводите адрес сайта в браузере, DNS помогает найти компьютер, на котором этот сайт находится, и показывает вам его содержимое. Это как телефонная книга для компьютеров - вы знаете имя сайта, а DNS помогает найти его номер (IP-адрес).
Ещё одна компания, где можно купить домен и сервер
Вторая компания, где я так же заказываю домены и сервера с географией в Эстонии, России и США, с возможностью оплаты картами Российских банков.
A - запись в DNS
Для работы Matrix Synapse необходимо после покупки домена прописать в нём 4 A-записи. Две направят домен на сервер, который вы купите, другие две направят на поддомен Coturn сервера, чтобы работали аудио и видео звонки.
A - ваш домен - ip адрес сервера
A - www - ip адрес сервера
A - coturn - ip адрес сервера
A - www.coturn - ip адрес сервера
Вы можете попросить у технической поддержки, чтобы они прописали такие записи в DNS.
Примерно так это будет выглядеть ( 192.168.1.1 - надо заменить на ip адрес вашего сервера ) (fileenergy.ru - заменить на ваш домен )
В зависимости от компании, которую вы выбрали обратитесь к поддержке и вам помогут это сделать.
Что такое домен
Домен - это уникальное имя, которое используется для идентификации веб-сайта в Интернете. Оно состоит из последовательности символов, разделенных точками, и обычно заканчивается на расширение, такое как .com, .org или .net. Доменные имена используются для того, чтобы облегчить доступ к веб-сайтам, так как они легче запомнить, чем IP-адреса.
Доменные имена могут быть зарегистрированы через регистратора доменных имен. После регистрации доменного имени оно становится доступным для использования в течение определенного периода времени, обычно от 1 до 10 лет. После этого периода доменное имя должно быть продлено или оно станет доступным для регистрации другими пользователями.
Домены могут быть использованы для создания веб-сайтов, электронной почты и других онлайн-сервисов. Они также могут быть использованы для перенаправления трафика на другой веб-сайт или для создания коротких ссылок.
В общем, домены являются важным элементом Интернета, который позволяет пользователям легко находить и получать доступ к веб-сайтам и онлайн-ресурсам.
Домен - это уникальное имя, которое используется для того, чтобы легко найти веб-сайт в Интернете. Это как адрес дома, только для сайта. Например, когда вы вводите “google.com” в своем браузере, вы переходите на сайт Google. Таким образом, домен помогает пользователям легко находить и посещать веб-сайты.
Что такое Matrix
Matrix - это открытый и свободный протокол для децентрализованного общения в реальном времени. Он может использоваться для обмена мгновенными сообщениями, голосовой и видеосвязи, общения с интернетом вещей и любых других сценариев, где нужен стандартный HTTP API для публикации и подписки на данные с учетом истории разговора.
Matrix позволяет любому создать свой собственный сервер общения, называемый домашним сервером, и подключаться к другим серверам через федерацию. Это означает, что пользователи могут общаться между собой, не завися от того, на каком сервере они зарегистрированы. Кроме того, Matrix поддерживает мосты с другими популярными системами общения, такими как Telegram, Slack и др., что дает возможность обмениваться сообщениями между разными платформами.
Matrix также обеспечивает высокий уровень безопасности и конфиденциальности, используя шифрование «от конца к концу» для защиты содержимого сообщений от посторонних глаз. Шифрование работает на уровне комнаты, где пользователи могут выбирать, кто может присоединяться к их разговорам и какие устройства доверять. Matrix также поддерживает верификацию пользователей посредством сканирования QR-кодов или сравнения ключей.
Matrix - это не только протокол, но и экосистема приложений, которые используют его для общения. Самое известное из них - это Element, кросс-платформенный мессенджер с открытым исходным кодом, который предлагает богатый функционал и интуитивный интерфейс. Element можно установить на компьютер, смартфон или веб-браузер и подключиться к любому серверу Matrix. Element также интегрируется с Jitsi Meet, сервисом для видеоконференций с открытым исходным кодом.
Matrix - это будущее общения в интернете, которое дает пользователям свободу выбора, контроль над данными и возможность общаться с любым по всему миру.
Если совсем по простому - это способ общаться с другими людьми в интернете. Вы можете писать текст, говорить голосом, показывать видео и делиться файлами. Вы можете выбирать, с кем вы хотите общаться, и никто не может читать ваши сообщения без вашего разрешения. Вы можете общаться с людьми, которые используют другие мессенджеры, например, Telegram или.
Что такое Synapse Matrix
Synapse - это реализация домашнего сервера Matrix, написанная на Python 3. Matrix - это открытый и свободный протокол для децентрализованного общения в реальном времени, который позволяет пользователям обмениваться сообщениями, голосом, видео и другими данными между разными платформами и сервисами.
Synapse - это самая популярная и распространенная реализация Matrix, которая поддерживает все основные функции протокола, такие как федерация, шифрование «от конца к концу», мосты, приложения и виджеты. Synapse также имеет богатый набор расширений и модулей, которые позволяют настраивать и улучшать работу сервера.
Synapse можно установить на любой Linux-системе, используя пакетный менеджер или Docker-контейнер. Для установки Synapse необходимо иметь доменное имя и SSL-сертификат, а также базу данных PostgreSQL или SQLite. Инструкции по установке Synapse можно найти в документации Synapse.
Synapse - это отличный выбор для тех, кто хочет создать свой собственный сервер общения на базе Matrix и получить полный контроль над своими данными и конфиденциальностью. Synapse также позволяет подключаться к огромной сети других серверов Matrix и общаться с миллионами пользователей по всему миру.
Если совсем по простому - это программа, которая помогает Matrix мессенджеру работать. Она создает свой собственный сервер, где хранятся ваши сообщения и данные. Вы можете установить эту программу на свой компьютер или в облако. Вы можете настроить эту программу так, как вам удобно, и добавлять разные функции. Вы можете подключаться к другим серверам Synapse Matrix и общаться с людьми, которые на них зарегистрированы. Synapse Matrix - это гибкая и надежная программа для Matrix мессенджера.
Установка Synapse Matrix на сервер с операционной системой Linux Ubuntu 22.04
Подключаемся к серверу и обновляем его (все команды выполняем от root #):
apt-get update
apt-get upgrade
apt-get dist-upgrade
Начинаем установку Synapse:
apt update -y
apt install curl wget gnupg2 apt-transport-https -y
wget -qO /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/matrix-org.list
apt-get update -y
apt-get install matrix-synapse-py3 -y
Вам будет предложено прописать свой домен, который вы купили
Домен прописан для примера
Один из шагов установки сервера Matrix Synapse - это выбор, хотите ли вы делиться статистикой использования с командой Matrix. Это необязательный шаг, который не влияет на работу вашего сервера, но может помочь развитию проекта Matrix. Статистика включает в себя такие данные, как имя вашего сервера и количество пользователей. Эти данные помогают отслеживать рост сообщества Matrix и убеждать другие сети вступать в пиринг с Matrix. Если вы хотите поддержать проект Matrix, вы можете согласиться на отправку статистики. Если нет, вы можете отказаться от этого без последствий.
Чтобы служба Matrix работала после перезапуска системы, выполните следующую команду после того, как установка будет завершена:
systemctl start matrix-synapse
systemctl enable matrix-synapse
Вы можете также использовать эту команду, чтобы проверить статус Matrix Synapse:
systemctl status matrix-synapse
На этом этапе служба Matrix Synapse запущена и принимает соединения на порту 8008. Вы можете проверить это с помощью следующей команды:
ss -antpl | grep python
Вы получите следующий результат:
LISTEN 0 50 127.0.0.1:8008 0.0.0.0:* users:(("python", pid=1 8070,fd=14))
LISTEN 0 50 [::1]:8008 [::]:* users:(("python",pid=1 8070,fd=13))
Настройка сервера Matrix Synapse
После установки Matrix Synapse вам нужно будет настроить его. Сначала создайте секреты с помощью следующей команды:
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1
Создайте учетную запись суперпользователя:
Следующим шагом вам необходимо создать учетную запись администратора и назначить пароль для доступа к Matrix Synapse.
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008
Напишите свой логин и пароль администратора, затем в пункте - Make admin [no]: - укажите yes
Этой же командой можно создать и других пользователей, нужно только указывать - no в этом же пункте, чтобы у пользователя были обычные права.
Установка сертификата Let’s Encrypt на сервер Matrix Synapse
Для обеспечения безопасности Matrix Synapse вам нужно использовать SSL-сертификат от Let’s Encrypt. Это сервис, который предоставляет бесплатные SSL-сертификаты для веб-сайтов. Чтобы получить такой сертификат, вам необходимо установить на свой сервер специальный пакет, который называется Certbot. Он поможет вам автоматически создать и обновлять SSL-сертификат для вашего домена. Для установки Certbot выполните следующую команду:
apt-get install certbot python3-certbot-nginx -y
После установки пакета Certbot запустите следующую команду, чтобы установить SSL от Let’s Encrypt:
certbot
На этом этапе вам нужно указать свой адрес электронной почты для уведомлений о срочном обновлении и безопасности вашего SSL-сертификата от Let’s Encrypt. Введите свой адрес электронной почты и нажмите Enter. Затем вам нужно два раза согласиться с разными условиями. Сначала вам нужно согласиться с Условиями обслуживания Let’s Encrypt. Для этого нажмите букву Y и затем Enter. Потом вам нужно решить, хотите ли вы поделиться своим адресом электронной почты с Электронной фронтовой фондации (EFF), которая является партнером Let’s Encrypt и разработчиком Certbot. Если вы хотите поделиться своим адресом электронной почты с EFF, нажмите букву Y и затем Enter. После этих шагов ваша учетная запись на сервере Let’s Encrypt будет зарегистрирована.
Вам будет предложено выбрать веб-сайт, на котором вы хотите установить SSL
Под цифрой 1 должен быть ваш домен, выбираете цифру 1 и нажимаете Enter
Вы можете проверить установку Matrix Synapse, используя URL-адрес https://fileenergy.ru (здесь укажите ваш домен) в своем веб-браузере. Вы должны увидеть экран с надписью: “It works! Synapse is running. Your Synapse server is listening on this port and is ready for messages.”
Это означает, что вы успешно установили Matrix Synapse на свой сервер. Теперь вы можете начать общаться с другими пользователями в сети Matrix. Matrix - это открытая и децентрализованная сеть для обмена данными и коммуникации. Вы можете создавать свои комнаты, группы, каналы и мосты с другими сервисами. Вы также можете защищать свою конфиденциальность и безопасность с помощью шифрования.
Однако, после установки Matrix Synapse, вы можете столкнуться с проблемой, что звонки работают только в локальной сети, а не через интернет. Это связано с тем, что Matrix Synapse не может преодолеть NAT (сетевой адресный перевод) и фаерволы, которые могут блокировать прямое соединение между пользователями. Для решения этой проблемы вам нужно установить и настроить TURN сервер, который будет перенаправлять трафик между пользователями даже в случае отсутствия прямого соединения. TURN сервер также повышает безопасность, так как скрывает реальный адрес клиента.
Один из самых популярных и мощных TURN серверов - это Coturn, который является бесплатным и открытым решением для реализации TURN и STUN протоколов. Coturn поддерживает различные виды трафика, такие как UDP, TCP, TLS и DTLS, а также имеет множество опций для настройки и мониторинга. В следующем разделе мы расскажем, как установить и настроить Coturn для работы с Matrix Synapse.
Установка Coturn
Вы должны установить сервер TURN (Traversal Using Relays around NAT), чтобы использовать видео- и голосовые вызовы.
apt install coturn
Откройте порты TURN и UDP
ufw allow 3478
ufw allow 5349
ufw allow 49152:65535/udp
Выпустить SSL-сертификат для Coturn
certbot certonly --nginx -d coturn.fileenergy.ru
Вместо fileenergy.ru прописываете ваш домен
Сделайте резервную копию файла конфигурации по умолчанию
mv /etc/turnserver.conf /etc/turnserver.conf.bak
Сгенерировать секрет аутентификации и сохранить его в файле конфигурации
echo "static-auth-secret=$(cat /dev/urandom | tr -cd '[:alnum:]' | fold -w 256 | head -n 1)" | sudo tee /etc/turnserver.conf
Вы получите очень длинный ключ
Вот пример такого ключа:
static-auth-secret=9fQoSKrpaDnTlKkoyx2ePO1Jmd54FIVhbNc7rUbG0WEZDjLtN9XpGlM3s6HqzYvAiCSF8xuDeyBkVwtQPuOJR7lMbQNgY62kZ3dTbRInK4aUvLP5cRIJ0wTHKoDjnGNX
Откройте файл конфигурации Coturn
nano /etc/turnserver.conf
После открытия файла ключи будет в самом вверху сделай отступ после ключа и добавьте строки которые указаны ниже
Вставьте следующие строки ниже секрета аутентификации
use-auth-secret
realm=coturn.example.com
cert=/etc/letsencrypt/live/coturn.example.com/fullchain.pem
pkey=/etc/letsencrypt/live/coturn.example.com/privkey.pem
# VoIP is UDP, no need for TCP
no-tcp-relay
# Do not allow traffic to private IP ranges
no-multicast-peers
denied-peer-ip=0.0.0.0-0.255.255.255
denied-peer-ip=10.0.0.0-10.255.255.255
denied-peer-ip=100.64.0.0-100.127.255.255
denied-peer-ip=127.0.0.0-127.255.255.255
denied-peer-ip=169.254.0.0-169.254.255.255
denied-peer-ip=172.16.0.0-172.31.255.255
denied-peer-ip=192.0.0.0-192.0.0.255
denied-peer-ip=192.0.2.0-192.0.2.255
denied-peer-ip=192.88.99.0-192.88.99.255
denied-peer-ip=192.168.0.0-192.168.255.255
denied-peer-ip=198.18.0.0-198.19.255.255
denied-peer-ip=198.51.100.0-198.51.100.255
denied-peer-ip=203.0.113.0-203.0.113.255
denied-peer-ip=240.0.0.0-255.255.255.255
denied-peer-ip=::1
denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff
denied-peer-ip=::ffff:0.0.0.0-::ffff:255.255.255.255
denied-peer-ip=100::-100::ffff:ffff:ffff:ffff
denied-peer-ip=2001::-2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2002::-2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff
# Limit number of sessions per user
user-quota=12
# Limit total number of sessions
total-quota=1200
Заменяем вот эти строки на свои:
use-auth-secret - ваш ключ - static-auth-secret=9fQoSKrpaDnTlKkoyx2ePO1Jmd54FIVhbNc7rUbG0WEZDjLtN9XpGlM3s6HqzYvAiCSF8xuDeyBkVwtQPuOJR7lMbQNgY62kZ3dTbRInK4aUvLP5cRIJ0wTHKoDjnGNX
realm=coturn.example.com - ваш домен - coturn.fileenergy.ru
cert=/etc/letsencrypt/live/coturn.example.com/fullchain.pem - ваш домен - cert=/etc/letsencrypt/live/coturn.fileenergy.ru/fullchain.pem
pkey=/etc/letsencrypt/live/coturn.example.com/privkey.pem - ваш домен - pkey=/etc/letsencrypt/live/coturn.fileenergy.ru/privkey.pem
Получиться примерно так:
static-auth-secret=9fQoSKrpaDnTlKkoyx2ePO1Jmd54FIVhbNc7rUbG0WEZDjLtN9XpGlM3s6HqzYvAiCSF8xuDeyBkVwtQPuOJR7lMbQNgY62kZ3dTbRInK4aUvLP5cRIJ0wTHKoDjnGNX
realm=coturn.fileenergy.ru
cert=/etc/letsencrypt/live/coturn.fileenergy.ru/fullchain.pem
pkey=/etc/letsencrypt/live/coturn.fileenergy.ru/privkey.pem
# VoIP is UDP, no need for TCP
no-tcp-relay
# Do not allow traffic to private IP ranges
no-multicast-peers
denied-peer-ip=0.0.0.0-0.255.255.255
denied-peer-ip=10.0.0.0-10.255.255.255
denied-peer-ip=100.64.0.0-100.127.255.255
denied-peer-ip=127.0.0.0-127.255.255.255
denied-peer-ip=169.254.0.0-169.254.255.255
denied-peer-ip=172.16.0.0-172.31.255.255
denied-peer-ip=192.0.0.0-192.0.0.255
denied-peer-ip=192.0.2.0-192.0.2.255
denied-peer-ip=192.88.99.0-192.88.99.255
denied-peer-ip=192.168.0.0-192.168.255.255
denied-peer-ip=198.18.0.0-198.19.255.255
denied-peer-ip=198.51.100.0-198.51.100.255
denied-peer-ip=203.0.113.0-203.0.113.255
denied-peer-ip=240.0.0.0-255.255.255.255
denied-peer-ip=::1
denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff
denied-peer-ip=::ffff:0.0.0.0-::ffff:255.255.255.255
denied-peer-ip=100::-100::ffff:ffff:ffff:ffff
denied-peer-ip=2001::-2001:1ff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=2002::-2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff
# Limit number of sessions per user
user-quota=12
# Limit total number of sessions
total-quota=1200
Сохраните файл, нажав Ctrl + O.
Выйдите из nano, нажав Ctrl + X. Если есть несохраненные изменения, вам будет предложено сохранить их перед выходом.
Перезапустите Coturn, чтобы применить настройки
systemctl restart coturn
Создайте файл конфигурации Synapse для Coturn
nano /etc/matrix-synapse/conf.d/turn.yaml
Замените в файле значение на свои
turn_uris: [ "turn:coturn.example.com?transport=udp", "turn:coturn.example.com?transport=tcp" ]
turn_shared_secret: 'static-auth-secret'
turn_user_lifetime: 86400000
turn_allow_guests: True
Получиться примерно так:
turn_uris: [ "turn:coturn.fileenergy.ru?transport=udp", "turn:coturn.fileenergy.ru?transport=tcp" ]
turn_shared_secret: 'static-auth-secret=9fQoSKrpaDnTlKkoyx2ePO1Jmd54FIVhbNc7rUbG0WEZDjLtN9XpGlM3s6HqzYvAiCSF8xuDeyBkVwtQPuOJR7lMbQNgY62kZ3dTbRInK4aUvLP5cRIJ0wTHKoDjnGNX
'
turn_user_lifetime: 86400000
turn_allow_guests: True
Сохраните файл, нажав Ctrl + O.
Выйдите из nano, нажав Ctrl + X. Если есть несохраненные изменения, вам будет предложено сохранить их перед выходом.
После этого нужно подождать какое-то время, от нескольких часов до нескольких суток, в зависимости от вашего DNS провайдера, чтобы полноценно заработал сервер аудио и видео звонков.
Установка клиентов и подключение к серверу
Теперь, когда мы установили и настроили сервер Matrix Synapse, мы можем подключиться к нему с помощью клиента Element. Element - это одно из самых популярных и функциональных приложений для работы с Matrix. Оно позволяет вам общаться с другими пользователями, создавать и управлять комнатами, отправлять медиафайлы и многое другое. Вы можете скачать Element для Web, Android, iOS, macOS, Windows и Linux. Для того, чтобы подключиться к нашему серверу, нам нужно запустить Element и ввести адрес нашего сервера. В этом разделе мы расскажем, как это сделать.
Нажимаем кнопку - Изменить
Прописываем ваш домен
Нажимаем - Продолжить
Вводим ваш и логин и пароль, который мы создавали в процессе установки сервера Matrix и нажимаем войти.
Аналогично настраивается приложение и для других операционных систем.
Для того, чтобы написать личное сообщение нужно найти другого пользователя через Element, поиск происходит по логину в сочетании с адресом сервера:
@admin:ваш.домен (admin - логин, который вы указали при создании пользователей)
По итогу будет примерно так:
@admin:fileenergy.ru
После завершения всех настроек нужно обязательно перезагрузить сервер! (иначе звонки не будут работать)