Установка Matrix Synapse и Element на Debian
| Уровень сложности | Лёгкий |
| Права root | Требуются |
| Требования | Терминал Linux |
| Категория | Установка ПО |
| Совместимость с ОС | Debian, Ubuntu |
| Примерное время чтения | 1 час |
Введение
В данной инструкции подробно описан процесс развёртывания собственного сервера обмена сообщениями на базе протокола Matrix. В качестве серверной части будет использоваться Matrix Synapse, а для взаимодействия пользователей с системой - веб-клиент Element.
После выполнения всех шагов вы получите полностью рабочую систему обмена сообщениями, включающую:
- сервер Matrix (Synapse);
- веб-клиент Element;
- защищённый доступ по HTTPS;
- проксирование через nginx;
- возможность подключения пользователей к вашему серверу.
Установка
Создание A-записей
Перед началом установки необходимо подготовить DNS-записи для домена. Необходимо создать две A-записи:
A-запись
- Тип: A
- Имя: im
- Значение: 62.173.138.27
A-запись
- Тип: A
- Имя: chat
- Значение: 62.173.138.27
Обе записи должны указывать на IP-адрес сервера, на котором будет выполняться установка.
После создания записей желательно убедиться, что они корректно резолвятся.
Добавление официального репозитория Matrix
Для установки актуальной версии Matrix Synapse необходимо добавить официальный репозиторий Matrix.
Обновим список пакетов и установим необходимые утилиты:
apt update
apt install -y lsb-release wget apt-transport-https
Добавим ключ репозитория:
wget -O /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" \
> /etc/apt/sources.list.d/matrix-org.list
Установка Synapse
Обновим список пакетов и установим сервер Matrix:
apt update
apt install -y matrix-synapse-py3
Во время установки мастер настройки попросит указать:
Домен сервера Matrix
im.tex-lab.ru
Также будет предложено отправлять анонимную статистику использования. Этот пункт не влияет на работу сервера и может быть принят или отклонён.
Изменение конфигурации
После установки необходимо проверить конфигурацию сервера.
Откроем файл:
nano /etc/matrix-synapse/homeserver.yaml
Проверим следующие параметры:
server_name: "im.tex-lab.ru"
public_baseurl: "https://im.tex-lab.ru/"
Параметр server_name задаёт имя сервера Matrix.
Параметр public_baseurl определяет внешний адрес сервера, который будет использоваться клиентами.
Создание пользователя администратора
Перед созданием администратора необходимо добавить секрет регистрации.
Сначала сгенерируем случайную строку:
openssl rand -hex 32
Пример результата:
5f6c20f70276512ef3e4a7cd4fffc18e4488c84f979314c0b887ff3663c09719
Теперь добавим этот секрет в конфигурацию сервера.
Откроем файл:
nano /etc/matrix-synapse/homeserver.yaml
В конец файла добавим строку:
registration_shared_secret: "ВАШ_СЕКРЕТ"
После изменения конфигурации перезапустим сервер:
systemctl restart matrix-synapse
Создание администратора
Теперь можно создать пользователя администратора.
register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008
Во время выполнения команды будет предложено указать:
- username - имя пользователя
- пароль - пароль
- admin (yes/no) - является ли пользователь администратором
Чтобы пользователь получил права администратора, необходимо указать:
yes
Установка nginx
Для публикации сервера в интернете используется веб-сервер nginx.
Он выполняет несколько задач:
- проксирует запросы к Matrix Synapse
- обеспечивает работу HTTPS
- принимает входящие соединения пользователей
Установка:
apt install -y nginx
Создание конфигурации nginx для Matrix
Создадим конфигурационный файл:
nano /etc/nginx/sites-available/matrix
Добавим следующий конфиг:
server {
listen 80;
server_name im.tex-lab.ru;
location /.well-known/matrix/server {
return 200 '{"m.server": "im.tex-lab.ru:443"}';
add_header Content-Type application/json;
}
location / {
proxy_pass http://localhost:8008;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
Активируем конфигурацию:
ln -s /etc/nginx/sites-available/matrix /etc/nginx/sites-enabled/
Проверим конфигурацию:
nginx -t
Если ошибок нет, перезапустим nginx:
systemctl restart nginx
Подключение SSL от Let's Encrypt
Для работы HTTPS необходимо выпустить SSL-сертификат.
Установим Certbot:
apt install -y certbot python3-certbot-nginx
Выпустим сертификат:
certbot --nginx -d m.tex-lab.ru
Открытие портов
Для корректной работы сети Matrix необходимо открыть порт:
TCP 8448
Этот порт используется для федерации серверов Matrix.
Проверка работоспособности
Откроем в браузере:
https://im.tex-lab.ru/
Если всё настроено правильно, откроется служебная страница сервера Matrix.
Установка Element
Element - это веб-клиент для работы с Matrix.
Создадим директорию для установки:
mkdir -p /var/www/element
Перейдём в неё:
cd /var/www/element
Скачаем последний релиз Element.
Мы будем устанавливать версию v1.12.13-rc.0, однако на момент установки может быть доступна более новая версия.
wget https://github.com/vector-im/element-web/releases/latest/download/element-web.tar.gz
Разархивируем:
tar -xzf element-web.tar.gz --strip-components=1
Создание конфигурации Element
Создадим файл:
nano /var/www/element/config.json
Заполним его:
{
"default_server_config": {
"m.homeserver": {
"base_url": "https://im.tex-lab.ru",
"server_name": "im.tex-lab.ru"
}
},
"brand": "TexLab"
}
Конфигурация nginx для Element
Создадим второй конфигурационный файл nginx:
nano /etc/nginx/sites-available/element
Добавим:
server {
listen 80;
server_name chat.tex-lab.ru;
root /var/www/element;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Активируем конфигурацию:
ln -s /etc/nginx/sites-available/element /etc/nginx/sites-enabled/
Проверим конфигурацию:
nginx -t
Возможная ошибка nginx
Иногда во время проверки может появиться ошибка:
could not build server_names_hash, you should increase server_names_hash_bucket_size: 32 nginx: configuration file /etc/nginx/nginx.conf test faile
В этом случае необходимо изменить основной конфиг nginx.
Откроем файл:
nano /etc/nginx/nginx.conf
В блок http добавим параметр:
server_names_hash_bucket_size 64;
После этого перезагрузим nginx:
systemctl reload nginx
Выпуск SSL для Element
Теперь выпустим сертификат для веб-клиента:
certbot --nginx -d chat.tex-lab.ru
Готово. После выполнения всех шагов система полностью готова к работе.
Теперь у вас есть:
Сервер Matrix - https://im.tex-lab.ru
Веб-клиент Element - https://chat.tex-lab.ru
Теперь можно открыть веб-клиент Element, войти под созданным пользователем и начать пользоваться собственным сервером обмена сообщениями.








