Свой сервер Matrix

На своём сервере всё решаете вы: кто на нём общается, где хранятся данные и какие действуют правила. Понадобятся домен, небольшой сервер и один вечер.

Немного железа и немного терпения

Свой домен

Он станет частью адресов: @вы:ваш-домен.ru. Сменить его потом нельзя, так что выбирайте тот, что надолго.

Сервер с Linux

Подойдёт недорогой VPS: от 2 ядер и 2 ГБ памяти. Нужен постоянный адрес в интернете и открытые порты 80 и 443.

Немного командной строки

Нужно уметь зайти на сервер по SSH и выполнить пару команд. Всё остальное подскажет инструкция.

Берите Synapse

Iskra получает сообщения через нативный sliding sync (MSC4186). Он нужен, чтобы список чатов открывался мгновенно, но умеют его пока не все серверы.

  • SynapseРекомендуем

    Основной сервер Matrix, его делает Element. Sliding sync включён по умолчанию с версии 1.114, так что подойдёт любая свежая версия.

  • Tuwunel, Continuwuity

    Лёгкие серверы на Rust, им хватает совсем скромного железа. Поддержку sliding sync в них ещё дорабатывают, поэтому с Iskra что-то может не работать.

Проще всего — с ESS Community

Это бесплатная сборка от Element: Synapse, вход через Matrix Authentication Service, веб-клиент и панель администратора ставятся одним набором. Ниже — коротко, по шагам.

  1. Настройте домен

    Направьте на адрес сервера (запись A) сам домен и пять поддоменов:

    example.org          — адрес в Matrix: @вы:example.org
    matrix.example.org   — Synapse
    account.example.org  — вход и аккаунты
    chat.example.org     — веб-клиент
    admin.example.org    — панель администратора
    mrtc.example.org     — звонки

    Откройте порты 80 и 443 (TCP), а для звонков ещё 30001 (TCP) и 30002 (UDP).

  2. Установите K3s и Helm

    K3s — лёгкий Kubernetes, в котором будет жить сервер. Он ставится одной командой:

    curl -sfL https://get.k3s.io | sh -

    Потом дайте себе доступ к K3s и поставьте Helm — это ещё несколько коротких команд из README ESS.

  3. Опишите свои адреса

    Создайте папку ~/ess-config-values, а в ней файл hostnames.yaml. Подставьте свой домен вместо example.org:

    serverName: example.org
    synapse:
      ingress:
        host: matrix.example.org
    matrixAuthenticationService:
      ingress:
        host: account.example.org
    elementWeb:
      ingress:
        host: chat.example.org
    elementAdmin:
      ingress:
        host: admin.example.org
    matrixRTC:
      ingress:
        host: mrtc.example.org

    Сертификаты можно выпустить через Let’s Encrypt. Как это настроить, описано в README ESS.

  4. Установите сервер

    Helm скачает и запустит всё нужное. Это займёт несколько минут:

    helm upgrade --install --namespace "ess" ess \
      oci://ghcr.io/element-hq/ess-helm/matrix-stack \
      -f ~/ess-config-values/hostnames.yaml --wait
  5. Создайте первый аккаунт

    Регистрация на новом сервере выключена, поэтому первый аккаунт создаётся командой. Она спросит имя и пароль:

    kubectl exec -n ess -it deploy/ess-matrix-authentication-service \
      -- mas-cli manage register-user
  6. Войдите из Iskra

    На экране входа введите свой домен, например example.org. Откроется страница входа вашего сервера. А чтобы проверить, что сервер видят другие, загляните в Federation Tester.

Здесь самое главное, без подробностей. Команды иногда меняются, поэтому перед установкой сверьтесь с README ESS Community.

Сервер работает. Что ещё стоит сделать

  • Резервные копии

    Сохраняйте базу данных и загруженные файлы. Без копии сломанный диск унесёт всю переписку сервера.

  • Обновления

    Время от времени запускайте ту же команду helm upgrade: она подтянет свежие версии с исправлениями.

  • Регистрация для друзей

    Чтобы люди могли заводить аккаунты сами, подключите к серверу почту (SMTP). Или создавайте аккаунты той же командой.

  • Другие способы

    Любите Ansible — есть matrix-docker-ansible-deploy с мостами в другие мессенджеры. Хотите всё вручную — есть документация Synapse.

Не хочется возиться

Это нормально. Можно начать с готового сервера, а свой поднять потом.