Перейти к основному контенту

Установка 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

изображение.png

Теперь добавим репозиторий в систему:

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

изображение.png

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

Изменение конфигурации

После установки необходимо проверить конфигурацию сервера.

Откроем файл:

nano /etc/matrix-synapse/homeserver.yaml

Проверим следующие параметры:

server_name: "im.tex-lab.ru"
public_baseurl: "https://im.tex-lab.ru/"

изображение.png

Параметр server_name задаёт имя сервера Matrix.
Параметр public_baseurl определяет внешний адрес сервера, который будет использоваться клиентами.

Создание пользователя администратора

Перед созданием администратора необходимо добавить секрет регистрации.

Сначала сгенерируем случайную строку:

openssl rand -hex 32

Пример результата:

5f6c20f70276512ef3e4a7cd4fffc18e4488c84f979314c0b887ff3663c09719

Теперь добавим этот секрет в конфигурацию сервера.

Откроем файл:

nano /etc/matrix-synapse/homeserver.yaml

В конец файла добавим строку:

registration_shared_secret: "ВАШ_СЕКРЕТ"

изображение.png

После изменения конфигурации перезапустим сервер:

systemctl restart matrix-synapse

Создание администратора

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

register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008

Во время выполнения команды будет предложено указать:

  • username - имя пользователя
  • пароль - пароль
  • admin (yes/no) - является ли пользователь администратором

Чтобы пользователь получил права администратора, необходимо указать:

yes

изображение.png

Установка 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;
    }
}

изображение.png

Активируем конфигурацию:

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

изображение.png

Открытие портов

Для корректной работы сети 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

изображение.png

Веб-клиент Element - https://chat.tex-lab.ru

изображение.png


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