Обновить

Установка и настройка matrix (Synapse), MAS, LiveKit, lk‑jwt‑service, Element‑web, Ketesa совместно с панелью 3x‑ui

Уровень сложностиСредний
Время на прочтение73 мин
Охват и читатели8.7K
Всего голосов 7: ↑7 и ↓0+9
Комментарии11

Комментарии 11

что бы заиметь свой чатик с родными придется изрядно попотеть) на мой взгляд поставить прокси и юзать тг или ватсап гораздо легче :)

Вы преувеличиваете. Инструкция достаточно простая, ничего в ней сложного нет. Если с терминалом в linux дружите, то все сделаете в лучшем виде по моей инструкции. Объем текста большой потому что расписаны подробно конфигурации synapse и MAS.
И matrix это не про "легче или сложнее". Вы поднимаете matrix на своем(пусть арендованном) сервере, на котором вы хозяин и кроме вас никто ничего сделать не сможет, например, получить ключи, прочитать сообщения, просмотреть ваши(и ваших контактов) файлы и фотографии. То есть ваша личная переписка и файлы к 3 ему лицу не утекут, конечно же, если вы доверяете тому с кем вы переписываетесь и кому отправляете фото и файлы. Но если мы говорим о чате с родными и друзьями, то говорить о компрометации нет смысла. Опять же, пока работают прокси и ВПНы, соответственно и Телеграм и др. мессенджеры централизованные, то matrix вроде как и не нужен. Но в нашей стране можно ожидать чего угодно, например, блокировки всех иностранных IP. Это будут не белые списки, все сайты внутри страны будут работать, но вы не сможете достучаться ни до одного иностранного сайта. Где будет Телеграм при этом? Да нигде, он просто перестанет работать и не помогут ни прокси, ни ВПН, потому что они тоже не будут работать. Как общаться с родными, близкими и друзьями в такой ситуации, не устанавливая Max? Вот тут и пригодится matrix, который можно будет развернуть на российском VPS, либо дома на мини ПК или одноплатном компьютере(SBC). Даже если будет заблокирован github, бинарные файлы и deb. пакеты можно скачать заранее. Сам протокол matrix блокировать пока не научились и навряд ли РКН будут каждый российский сервер проверять именно на этот протокол.

Статья была бы потрясающе полезна, и - спасибо за потраченные усилия и публикацию!

… если бы не одно “но”:

После того, как разработчики Matrix-а сначала перетащили к себе в основной проект, а потом просто закрыли код Sygnal, - добавки к Synapse, посылающей push notifications на мобильные телефоны (либо через Apple APNS, либо гугловское облако, либо - не уверен, но почти наверняка - Huawei Mobile Services / Push Kit), само-хостить Matrix стало практически невозможно.

Насколько мне известно, других Push Gateway-ев для Synapse в настоящее время не существует, а без мобильных нотификаций любой коммуникатор на телефонах, по сути дела, нефункционален.

Поправлю то, что сам написал:

Код не закрыт. Просто его убрали из официальных установочных скриптов. В так называемой “комьюнити” версии push notifications отсутствуют: https://element.io/en/pricing

Прошу прощения, но у меня push-уведомления работают в Element X на планшете Honor Pad через ntfy. У родственников и друзей на смартфонах Xiaomi, Realme и Vivo push работает без ntfy.

Нет, это я прошу прощения, потому что, скорее всего, чего-то недопонимаю.

Просто в Вашей статье не упомянуто, как Вы добавляли настройки нотификаций, которые идут через один из трёх каналов.

Но когда Вы ответили, что используете ntfy, сразу стало понятно.

Для тех, кому будет интересно, о чём мы с автором статьи говорили, вот ссылка на страницу официальной документации: https://docs.element.io/latest/element-support/element-androidios-client-settings/using-unified-push-and-ntfy-for-push-notifications/#setting-up-a-mobile-device

На днях, наконец-то, попробую установить всё систему с такими же как у Вас нотификациями.

Ещё раз большое спасибо!

Прекрасная статья, спасибо!
Возьму на заметку, когда соберусь вручную все поставить.

Сейчас использую проект https://github.com/spantaleev/matrix-docker-ansible-deploy
С ньюансами конечно, но быстро разворачивается и удобно обновлять.
400+ пользователей тянет нормально, синапс воркеры вынесены отдельно.

Спасибо, что положительно оценили мою статью.

Прошу прощения у читателей моей статьи. Пришлось изменить некоторые моменты в статье - кое что забыл изначально, кое что неверно написал. Скорее всего больше редактировать не буду, это окончательный вариант. Что поправил:
Права на папки /opt/mas /opt/livekit /opt/lk-jwt-service
было:
chown -R root:root /opt/mas
chmod 755 /opt/mas
стало:
chown -R root:mas /opt/mas
chmod 750 /opt/mas

Считаю что так будет правильнее с точки зрения безопасности.
В конфигурации LiveKit добавил поля:
cert_file: /path/to/cert.pem
key_file: /path/to/key.pem
Показал где можно взять пути к этим файлам в 3x-ui
изменил значение(ошибочное) поля external_tls:
было true, стало false
Указал команды для выдачи прав на конфиг. файл LiveKit (изначально забыл)
Исправил(удалил команду) ошибку с открытием порта 3478/tcp
Этот порт открывается только udp.
Добавил описание как правильно настроить шифры в панели 3x-ui и чем проверить настройку.
Указал команду для копирования конфиг. файла Element-web в другую папку, чтобы сохранить его при удалении папок и файлов из папки /var/www/html/element-web при обновлении Element-web.
Указал еще один недостаток установки компонентов matrix из tarball.
Еще кое какие мелкие исправления в описании разделов и параметров конфигурации Synapse.

Начиная с версии 0.5.0 и далее в lk-jwt-service (микросервисе для генерации JWT-токенов и управления звонками LiveKit в экосистеме Matrix/Element Call) произошел ряд важных изменений безопасности, архитектурных переписываний и изменений в логике интеграции с домашним сервером (Synapse).
1.Главные критические изменения в самом сервисе (начиная с 0.5)
Строгая безопасность «из коробки» (Версия 0.5.0): Раньше в настройке LIVEKIT_FULL_ACCESS_HOMESERVERS (список доверенных серверов, которым разрешено автоматически создавать комнаты в LiveKit) мог неявно срабатывать звёздочный вайлдкард (*). Это создавало угрозу безопасности, позволяя любым федеративным пользователям запускать создание комнат на вашем SFU-сервере.
Что изменилось: Теперь этот фокус убран. Переменная LIVEKIT_FULL_ACCESS_HOMESERVERS стала обязательной. Если она не задана, сервис просто откажется запускаться. Устаревшая переменная LIVEKIT_LOCAL_HOMESERVERS окончательно удалена.
Полный переезд на Rust (Версия 0.6.0): Сервис был полностью переписан с Go на Rust. Для конечного пользователя интерфейс остался прежним (drop-in замена), но технически это дало кардинальное снижение потребления памяти и ресурсов процессора.
Делегирование «забытых» отключений (Delayed Leave) и Redis: Появился эндпоинт /delegate_delayed_leave и поддержка Redis в качестве бэкенда. Это нужно для того, чтобы клиентские приложения (например, Element Call) могли корректно фиксировать выход пользователя из звонка, даже если у самого клиента пропало соединение (так называемый dead man's switch).
Отказ от ручного указания C-S API: Параметр delay_cs_api_url был полностью удален. Теперь сервис для безопасности определяет адрес клиент-серверного API через стандартное .well-known обнаружение (администраторам нужно убедиться, что .well-known настроен правильно).
2.Как теперь lk-jwt-service интегрируется с Synapse?
Раньше клиенты (Element Call) часто ходили в lk-jwt-service напрямую. Сейчас архитектура меняется в сторону стандартизации (согласно спецификациям MSC4195 и MSC4512):
Режим Application Service (Служба приложения): lk-jwt-service теперь может запускаться как Application Service (приложение-компаньон или sidecar) для Synapse.
Проксирование через Synapse: Вместо того чтобы дергать lk-jwt-service напрямую из браузера/клиента, входящие запросы от клиентов по новым Client-Server и Server-Server эндпоинтам идут прямо на домашний сервер Synapse, а Synapse уже проксирует их в этот сервис-сайдкар (через MSC4512).
Зачем это нужно: Это избавляет домашний сервер от необходимости внедрять тяжелую логику LiveKit в свой собственный код, при этом изоляция сохраняется, а вся работа с JWT-токенами, правами доступа и комнатами возлагается на оптимизированный Rust-микросервис.
Примечание: Такой подход с проксированием через Synapse помечен как экспериментальный и требует актуальных версий Synapse - ветка develop и новее, (по неподтвержденной информации должен поддерживаться версией synapse 1.161.0) и совместимых клиентов (например, свежих версий Element Call). Старый автономный режим (когда клиент стучался в lk-jwt-service напрямую) в переходный период еще поддерживается, но вектор развития — это интеграция внутрь инфраструктуры домашнего сервера.

Я пока не разобрался как правильно изменить конфигурацию Synapse, lk-jwt-service, LiveKit и nginx, чтобы заработал новый режим звонков. Если разберусь в ближайшее время, то постараюсь исправить статью с учетом изменений и требований в lk-jwt-service свежих версий. Старые настройки для звонков пока будут работать какое то время, но неизвестно какое.

Отличная статья, сам тоже настраивал ранее такую же связку, такая развёрнутая инструкция сильно бы помогла.


Если разберусь в ближайшее время, то постараюсь исправить статью с учетом изменений и требований в lk-jwt-service свежих версий

Очень жду, так как сталкнулся с той же проблемой и пока не смог победить)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации