Свой домен
Он станет частью адресов: @вы:ваш-домен.ru. Сменить его потом нельзя, так что выбирайте тот, что надолго.
На своём сервере всё решаете вы: кто на нём общается, где хранятся данные и какие действуют правила. Понадобятся домен, небольшой сервер и один вечер.
Он станет частью адресов: @вы:ваш-домен.ru. Сменить его потом нельзя, так что выбирайте тот, что надолго.
Подойдёт недорогой VPS: от 2 ядер и 2 ГБ памяти. Нужен постоянный адрес в интернете и открытые порты 80 и 443.
Нужно уметь зайти на сервер по SSH и выполнить пару команд. Всё остальное подскажет инструкция.
Iskra получает сообщения через нативный sliding sync (MSC4186). Он нужен, чтобы список чатов открывался мгновенно, но умеют его пока не все серверы.
Основной сервер Matrix, его делает Element. Sliding sync включён по умолчанию с версии 1.114, так что подойдёт любая свежая версия.
Лёгкие серверы на Rust, им хватает совсем скромного железа. Поддержку sliding sync в них ещё дорабатывают, поэтому с Iskra что-то может не работать.
Это бесплатная сборка от Element: Synapse, вход через Matrix Authentication Service, веб-клиент и панель администратора ставятся одним набором. Ниже — коротко, по шагам.
Направьте на адрес сервера (запись 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).
K3s — лёгкий Kubernetes, в котором будет жить сервер. Он ставится одной командой:
curl -sfL https://get.k3s.io | sh -Потом дайте себе доступ к K3s и поставьте Helm — это ещё несколько коротких команд из README ESS.
Создайте папку ~/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.
Helm скачает и запустит всё нужное. Это займёт несколько минут:
helm upgrade --install --namespace "ess" ess \
oci://ghcr.io/element-hq/ess-helm/matrix-stack \
-f ~/ess-config-values/hostnames.yaml --waitРегистрация на новом сервере выключена, поэтому первый аккаунт создаётся командой. Она спросит имя и пароль:
kubectl exec -n ess -it deploy/ess-matrix-authentication-service \
-- mas-cli manage register-userНа экране входа введите свой домен, например example.org. Откроется страница входа вашего сервера. А чтобы проверить, что сервер видят другие, загляните в Federation Tester.
Здесь самое главное, без подробностей. Команды иногда меняются, поэтому перед установкой сверьтесь с README ESS Community.
Сохраняйте базу данных и загруженные файлы. Без копии сломанный диск унесёт всю переписку сервера.
Время от времени запускайте ту же команду helm upgrade: она подтянет свежие версии с исправлениями.
Чтобы люди могли заводить аккаунты сами, подключите к серверу почту (SMTP). Или создавайте аккаунты той же командой.
Любите Ansible — есть matrix-docker-ansible-deploy с мостами в другие мессенджеры. Хотите всё вручную — есть документация Synapse.
Это нормально. Можно начать с готового сервера, а свой поднять потом.