- Синапс
- Установка Synapse
- Debian/Ubuntu
- Федора
- OpenSUSE
- SUSE Linux Enterprise Server
- ArchLinux
- Пустой Линукс
- FreeBSD
- OpenBSD
- NixOS
- Установка в виде модуля Python из PyPI
- Требования для конкретных платформ
- Настройка Synapse
- Использование PostgreSQL
- TLS certificates
- Client Well-Known URI
- Registering a user
- URL previews
- Troubleshooting Installation
- Введение
- Установка Matrix Synapse home server
- Использование ssl сертификата Let’s Encrypt
- Установка клиента Riot
- Настройка matrix synapse сервера
- Создание учетной записи администратора
- Включение свободной регистрации
- Настройка почтовых уведомлений
- Автозагрузка чат сервера со стартом системы
- Заключение
- Помогла статья? Подписывайся на telegram канал автора
Синапс
Важно выбрать имя для вашего сервера перед установкой Synapse,
потому что это не может быть изменено позже.
Установка Synapse
Официальное изображение синапса доступно по адресу
https://hub.docker.com/r/matrixdotorg/synapse или на ghcr.io/matrix-org/synapse
который можно использовать с файлом docker-compose, доступным по адресу
вклад/докер.
Дополнительная информация об этом, включая параметры конфигурации, доступна в README.
на hub.docker.com.
В качестве альтернативы, Андреас Петерс (ранее Сильвио Фрике) внес
Dockerfile для автоматизации сервера синапсов в одном образе Docker по адресу
https://hub.docker.com/r/avhost/docker-matrix/tags/
Debian/Ubuntu
Matrix.org предоставляет пакеты Synapse для Debian/Ubuntu для процессоров amd64.
архитектуру через https://packages.matrix.org/debian/.
При установке с пакетами Debian вы можете предпочесть поместить файлы в
/etc/matrix-synapse/conf.d/, чтобы переопределить вашу конфигурацию без редактирования
основной файл конфигурации в /etc/matrix-synapse/homeserver.yaml.
При этом вас не спросят, хотите ли вы заменить свою конфигурацию
файл при обновлении пакета Debian до более поздней версии.
Нижестоящие пакеты Debian
Андрей Шадура поддерживает
матричный синаптический пакет в
репозиторий Debian.
Для bookworm и sid его можно установить просто с помощью:
sudo apt install matrix-synaps
Synapse также доступен в яблочко. Пожалуйста
см. документацию Debian
для получения информации о том, как использовать бэкпорты.
матричный синапс больше не поддерживается у Buster и старше.
Нижестоящие пакеты Ubuntu
Мы не рекомендуем использовать пакеты в репозитории Ubuntu по умолчанию.
в настоящее время, так как они устарели и имеют известные уязвимости в системе безопасности.
Последнюю версию Synapse можно установить из нашего репозитория.
Федора
Synapse находится в репозиториях Fedora как
матричный синапс:
sudo dnf установить матрицу-синапс
Кроме того, Олег Гирко предоставляет RPM-пакеты Fedora по адресу
https://obs.infoserver.lv/project/monitor/matrix-synapse
OpenSUSE
Synapse находится в репозиториях OpenSUSE как
матричный синапс:
sudo zypper установить матрицу-синапс
SUSE Linux Enterprise Server
Неофициальные пакеты собраны для SLES 15 в репозитории openSUSE:Backports:SLE-15 по адресу
https://download.opensuse.org/repositories/openSUSE:/Backports:/SLE-15/standard/
ArchLinux
Самый быстрый способ приступить к работе с ArchLinux — это, вероятно, пакет, предоставляемый ArchLinux.
https://archlinux.org/packages/extra/x86_64/matrix-synapse/, который должен тянуть большую часть
необходимые зависимости.
пункт может быть устаревшим (6.0.7-1 и нуждается в обновлении до 6.0.8-1):
sudo pip install —upgrade pip
Если вы столкнулись с ошибкой lib bcrypt, вызывающей неправильный класс ELF:
ELFCLASS32 (системы x64), вам может потребоваться переустановить py-bcrypt, чтобы правильно
скомпилировать его под правильную архитектуру. (Это не нужно, если
установка под virtualenv):
sudo pip удалить py-bcrypt
sudo pip установить py-bcrypt
Пустой Линукс
Синапс можно найти в хранилищах пустоты как
‘синапс’:
xbps-install -Su
xbps-install -S синапс
FreeBSD
Synapse можно установить через порты или пакеты FreeBSD, предоставленные Бренданом Моллоем из:
OpenBSD
Начиная с OpenBSD 6.7 Synapse доступен в виде предварительно скомпилированного бинарного файла. Файловая система
лежащий в основе каталога домашнего сервера (по умолчанию /var/synapse) должен быть
монтируется с помощью wxallowed (см. mount
), поэтому создается отдельная файловая система.
и следует принять во внимание его установку в /var/synapse.
doas pkg_add синапс
NixOS
Робин Ламбертц упаковал Synapse для NixOS по адресу:
https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/matrix/synapse.nix
Установка в виде модуля Python из PyPI
Synapse также можно установить как модуль Python из PyPI.
Если вы строите необычную архитектуру, для которой
недоступен, вам потребуется установить последний компилятор Rust. Простейший
способ установки последней версии — использовать rustup.
Чтобы установить домашний сервер Synapse, выполните:
mkdir -p ~/синапс
virtualenv -p python3 ~/синапсе/env
источник ~/синапс/окружение/бен/активировать
pip установить —обновить пип
pip install —upgrade setuptools
pip установить матрицу-синапс
Это загрузит Synapse из PyPI.
и установите его вместе с используемыми библиотеками Python в виртуальную среду.
в ~/синапс/env. Не стесняйтесь выбирать другой каталог, если вы
предпочитать.
Эту установку Synapse можно позже обновить, снова используя pip с
флаг обновления:
источник ~/synapse/env/bin/activate
pip install -U матрица-синапс
Прежде чем вы сможете запустить Synapse, вам необходимо сгенерировать конфигурацию
файл. Для этого запустите (в вашей виртуальной среде, как и раньше):
Чтобы запустить новый домашний сервер, выберите рабочий каталог для Synapse.
run (например, ~/synapse) и:
cd ~/синапс
источник env/bin/активировать
синхронный запуск
Требования для конкретных платформ
Synapse написан на Python, но некоторые библиотеки, которые он использует, написаны на
C. Итак, прежде чем мы сможем установить сам Synapse, нам нужен работающий компилятор C и
файлы заголовков для расширений Python C.
Debian/Ubuntu/Raspbian
Установка необходимых компонентов в Ubuntu или Debian:
sudo apt install build-essential python3-dev libffi-dev python3-pip python3-setuptools sqlite3 libssl-dev virtualenv libjpeg-dev libxslt1-dev libicu-dev
Установка необходимых компонентов в ArchLinux:
sudo pacman -S base-devel python python-pip python-setuptools python-virtualenv sqlite3 icu
CentOS/Fedora
Установка необходимых компонентов на CentOS или Fedora Linux:
sudo dnf install libtiff-devel libjpeg-devel libzip-devel freetype-devel libwebp-devel libxml2-devel libxslt-devel libpq-devel python3-virtualenv libffi-devel openssl-devel python3-devel libicu-devel
sudo dnf groupinstall «Инструменты разработки»
MacOS
Установка необходимых компонентов на macOS:
Возможно, вам потребуется установить последние инструменты разработчика Xcode:
Могут потребоваться некоторые дополнительные зависимости. Вы можете использовать для них Homebrew (https://brew.sh).
На компьютерах Mac на базе ARM вам также может потребоваться установить libjpeg и libpq:
варить установить jpeg libpq
В macOS Catalina (10.15) может потребоваться явная установка OpenSSL.
через brew и сообщить об этом pip, чтобы psycopg2 собрал:
Установка необходимых компонентов на openSUSE:
sudo zypper в шаблоне -t devel_basis
sudo zypper в python-pip python-setuptools sqlite3 python-virtualenv python-devel libffi-devel libopenssl-devel libjpeg62-devel libicu-devel
Порт Synapse доступен в net/synapse. Файловая система
лежащий в основе каталога домашнего сервера (по умолчанию /var/synapse) должен быть
монтируется с помощью wxallowed (см. mount
), поэтому создается отдельная файловая система.
и следует принять во внимание его установку в /var/synapse.
Чтобы иметь возможность построить зависимость Synapse от python, WRKOBJDIR
(ср. bsd.port.mk
) для сборки python тоже должен быть в файловой системе
смонтирован с помощью wxallowed (см. mount
).
Создание WRKOBJDIR для сборки python в каталоге /usr/local (который на
установка OpenBSD по умолчанию монтируется с wxallowed):
doas mkdir /usr/local/pobj_wxallowed
Предполагая, что PORTS_PRIVSEP=Yes (ср. bsd.port.mk
) и SUDO=doas
настроено в /etc/mk.conf:
doas chown _pbuild:_pbuild /usr/local/pobj_wxallowed
Настройка WRKOBJDIR для сборки Python:
cd /usr/ports/net/synaps
сделать установку
Окна
Исходный запуск Synapse в Windows официально не поддерживается.
Если вы хотите запустить или разработать Synapse в Windows, подсистема Windows для
Linux предоставляет среду Linux, способную использовать Debian, Fedora,
или исходные методы установки. Дополнительную информацию о WSL можно найти по адресу
https://docs.microsoft.com/en-us/windows/wsl/install для Windows 10/11 и
https://docs.microsoft.com/en-us/windows/wsl/install-on-server для
Windows Сервер.
Настройка Synapse
После того, как вы установили синапс, как описано выше, вам нужно будет его настроить.
Использование PostgreSQL
По умолчанию Synapse использует базу данных SQLite и при этом торгует
производительность для удобства. Почти все установки должны использовать PostgreSQL.
вместо. Преимущества включают в себя:
Информацию об установке и использовании PostgreSQL в Synapse см.
Использование Postgres
SQLite подходит только для целей тестирования. S QLite не следует использовать в
производственный сервер. Synapse will perform poorly when using
SQLite, especially when participating in large rooms.
TLS certificates
The default configuration exposes a single HTTP port on the local
interface: http://localhost:8008. It is suitable for local testing,
but for any practical use, you will need Synapse’s APIs to be served
over HTTPS.
The recommended way to do so is to set up a reverse proxy on port
8448. You can find documentation on doing so in
the reverse proxy documentation.
For a more detailed guide to configuring your server for federation, see
Federation.
Client Well-Known URI
It can optionally contain identity server information as well.
To work in browser based clients, the file must be served with the appropriate
Cross-Origin Resource Sharing (CORS) headers. A recommended value would be
Access-Control-Allow-Origin: * which would allow all browser based clients to
view it.
In nginx this would be something like:
You should also ensure the public_baseurl option in homeserver.yaml is set
correctly. public_baseurl should be set to the URL that clients will use to
connect to your server. This is the same URL you put for the m.homeserver
base_url above.
If email is not configured, password reset, registration and notifications via
email will be disabled.
Registering a user
For reliable VoIP calls to be routed via this homeserver, you MUST configure
a TURN server. See TURN setup for details.
URL previews
This also requires the optional lxml python dependency to be installed. This
in turn requires the libxml2 library to be available — on Debian/Ubuntu this
means apt-get install libxml2-dev, or equivalent for your OS.
Troubleshooting Installation
pip seems to leak lots of memory during installation. For instance, a Linux
host with 512MB of RAM may run out of memory whilst installing Twisted. If this
happens, you will have to individually install the dependencies which are
failing, e.g.:
pip install twisted
If you have any other problems, feel free to ask in
#synapse:matrix.org.
Зависит от характера использования. Если взаимодействие с федерацией будет минимальным, будет комфортно и на VPS (насчёт RPi3 сказать не могу, у меня такой нет для тестирования). Как ранее уже сказали, нагрузка не от количества пользователей, а от того, а с каким количеством комнат одновременно синхронизируется сервер.
Теперь ньюансы насчёт федерации и не только.
Но даже после того, как я перешёл на сервер с 32 гигабайтами памяти, Synapse в простое выглядит так:
Так что потребление ресурсов — это ситуационная проблема, а не постоянная.
(23.07.20 15:22:20 MSK)
Последнее исправление: commagray 23.07.20 15:27:49 MSK
(всего
исправлений: 1)
Для меня остается открытым вопрос использования бесплатного корпоративного чата, не определился с ним. В данной статье хочу рассмотреть установку и настройку бесплатного чат сервера Matrix Synapse и web клиента для него Riot. В целом, проект мне показался интересным и вполне рабочим, но со своими нюансами. Далее постараюсь подробно раскрыть эту тему.
Онлайн-курс по Kubernetes – для разработчиков, администраторов, технических лидеров, которые хотят изучить современную платформу для микросервисов Kubernetes. Самый полный русскоязычный курс по очень востребованным и хорошо оплачиваемым навыкам. Курс не для новичков – нужно пройти вступительный тест.
Введение
Ранее я рассказывал об установке и настройке корпоративного мессенджера mattermost, раннего форка популярного сейчас slack. В той статье я перечислил актуальные для меня плюсы и минусы этого мессенджера. Мне его довелось увидеть в деле в работе небольшого коллектива. В целом, решение не плохое, но лично мне хотелось больше, чем там есть. В комментариях мне посоветовали обратить внимание на matrix, что я и делаю. Данная статья будет моим знакомством и руководством по установке и начальной настройке. Практического опыта использования matrix у меня нет, так как реальных внедрений еще не делал, но планы есть.
Если вы подбираете себе чат сервер и проверяете различные варианты, рекомендую так же посмотреть на сервер MyChat. Я его тестировал и достаточно подробно описал. Возможно, вам он подойдет больше, чем все остальное.
Информация по Matrix Synapse без проблем гуглится, поэтому не буду подробно рассказывать, что это такое. Кратко пройдемся по основному:
Далее мы займемся установкой локальной версии Matrix Synapse для подключения своих клиентов. На этом же сервере разместим веб клиента Riot. Все это дело снабдим ssl сертификатом. В общем, на выходе должны получить готовое бесплатное локальное решение для корпоративного чата.
Сразу хочу предупредить, что мое описание не подходит под готовое руководство, которое позволит простым копипастом все настроить. Это руководство именно по matrix и riot, вы должны как минимум уметь настраивать web сервер с nginx, устанавливать сертификаты, проксировать запросы, если вам это понадобится.
Установка Matrix Synapse home server
Я буду устанавливать чат сервер на CentOS 7. Если у вас еще нет сервера, то смотрите мои статьи по установке и базовой настройке centos.
Сразу обращаю внимание, что у меня на сервере будет отключен selinux. Как это сделать, смотрите в статье по настройке сервера, ссылка на которую выше.
Для работы synapse server необходим Python 2.7, который в CentOS 7 установлен по-умолчанию. Убедиться в этом можно введя в консоли:
# python -V
Python 2.7.5
Сервер чата synapse может использовать различные базы данных. По-умолчанию, он работает с SQLite, что подходит только для теста. В продакшене использовать эту базы плохое решение. Но даже для теста у меня не получилось настроить работу с SQLite. По-умолчанию, в CentOS устанавливается очень старая версия базы. При ее использовании возникает ошибка и сервер не работает. Я обновил базу до последней версии, но как оказалось, с ней тоже возникают проблемы. Я почитал на эту тему обсуждения и понял, что проблема распространенная, а не уникальная, поэтому решил в ней не разбираться. Вместо этого сразу буду использовать postgresql, что является самым надежным и разумным выбором.
С этого и начнем. Установим postgresql на Centos 7. У меня установлена следующая версия системы:
# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
Устанавливаю соответствующий моей версии репозиторий:
# rpm -Uvh https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7.4-x86_64/pgdg-centos10-10-2.noarch.rpm
Ставим самую свежую на момент написания статьи версию postgresql:
# yum install postgresql10-server postgresql10-contrib
Инициализируем базу данных:
# /usr/pgsql-10/bin/postgresql-10-setup initdb
Редактируем конфигурационный файл для включения MD5 аутентификации.
# mcedit /var/lib/pgsql/10/data/pg_hba.conf
Меняем строки в самом конце:
host all all 127.0.0.1/32 ident
host all all ::1/128 ident
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
Запускаем PostgreSQL и добавляем в автозагрузку:
# systemctl start postgresql-10
# systemctl enable postgresql-10
Заходим в систему под пользователем postgres:
# su — postgres
Создаем пользователя базы данных:
Запускаем консольный клиент для работы с базой данных:
Создаем базу данных для чат сервера matrix synapse:
# CREATE DATABASE synapse ENCODING ‘UTF8′ LC_COLLATE=’C’ LC_CTYPE=’C’ template=template0 OWNER synapse;
Выходим из консоли управления и учетной записи postgres.
# q
# exit
Установим еще несколько пакетов, необходимых для взаимодействия synapse с postgresql.
# yum install postgresql-devel libpqxx-devel.x86_64
Подготовительные действия выполнили, теперь можно устанавливать сам сервер. Для этого установим необходимые зависимости.
# yum install libtiff-devel libjpeg-devel libzip-devel freetype-devel lcms2-devel libwebp-devel tcl-devel tk-devel redhat-rpm-config python-virtualenv libffi-devel openssl-devel
# yum groupinstall «Development tools»
Устанавливаем менеджер пакетов Python — pip.
# wget https://bootstrap.pypa.io/get-pip.py
# python get-pip.py
Создаем виртуальную среду для приложения synapse. Она используется для изоляции отдельного python проекта. Проект будет использовать свои собственные директории и библиотеки, без взаимодействия с глобальным окружением.
# virtualenv -p python2.7 ~/.synapse
# source ~/.synapse/bin/activate
Устанавливаем необходимые пакеты питона.
# pip install —upgrade pip virtualenv six packaging appdirs psycopg2
# pip install —upgrade setuptools
Устанавливаем сам сервер matrix synapse.
# pip install https://github.com/matrix-org/synapse/tarball/master
Перед запуском сервера, необходимо создать файл конфигурации. Делаем это.

По умолчанию, в файле конфигурации homeserver.yaml будет указано использовать базу данных SQLite. Комментируем строки, отвечающие за эту настройку и добавляем параметры для подключения созданной ранее postgresql базы.
Обращаю внимание на отступы в файле конфигурации. Они принципиально важны. Должно быть именно так, как показано — database без отступа, name, args один пробел с начала строки. Все остальное — два пробела.
На этом установка сервера закончена, двигаемся дальше.
Использование ssl сертификата Let’s Encrypt
Прежде чем начать настройку сервера, установим на него полноценный ssl сертификат. Если вам это не нужно, можно пропустить данный пункт. Просто посмотреть на чат можно и с самописным сертификатом, который мы получили ранее. Но есть один нюанс. Клиент Riot, который я буду использовать для подключения к серверу, не будет работать с самописным сертификатом. Он будет ругаться на него во время подключения. Так что если вы хотите полноценно протестировать работу мессенджера Riot в связке с matrix synapse, придется установить нормальный сертификат.
Мой сервер с чатом напрямую не смотрит в интернет. Я буду проксировать все подключения к нему через web сервер, на котором установлен nginx. Поэтому получение сертификата нужно выполнять именно на нем. Если у вас matrix сервер будет смотреть напрямую в интернет, то настраивать получение ssl сертификата надо именно на нем.
Прежде чем получить сертификат, нарисовал примерно такой конфиг виртуального домена для nginx.
Подробно про получение сертификатов Let’s Encrypt я рассказывал в статье по настройке веб сервера. За всеми подробностями можете заглянуть туда. Здесь же без подробных пояснений выполняем необходимые действия.
# yum install certbot
Запускаем запрос сертификата.
# certbot certonly
При первом запуске на сервере, нужно будет зарегистрировать новую учетную запись на сервер и указать почтовый ящик. Я все это уже ранее делал, так что просто выбираю тип подтверждения домена:
2: Place files in webroot directory (webroot)
Далее указываю имя домена:
Указываю директорию веб сервера:
Сертификат получил. Дальше рисую следующий конфиг для виртуального хоста nginx уже для работы по https.
На сервере 77.37.225.129 сделан проброс внешнего порта 22991 на локальный 8008. На этом порту работает synapse по незащищенному соединению. Редиректить надо именно на этот порт, так как если сделать переадресацию на защищенный порт, который работает со своим сертификатом, будут проблемы при совместной работе этого локального сертификата и внешнего от Let’s Encrypt.
С сертификатом и самим сервером synapse разобрались. Дальше я предлагаю сначала установить и настроить бесплатный web клиент для чата — Riot. Если он вам не нужен, можно сразу переходить к настройке самого сервера.
Установка клиента Riot
Вам не обязательно устанавливать собственную версию веб клиента riot. Вы можете использовать публичный web клиент https://riot.im/app/, и с его помощью подключаться к своему серверу. Для этого надо указать адрес своего сервера во время подключения.

Чтобы подключиться через riot, у вас обязательно должно быть настроено подключение по https. По обычному протоколу подключиться не получится, будет ошибка.
Can’t connect to homeserver — please check your connectivity and ensure your homeserver’s SSL certificate is trusted.
или вот такая:
Can’t connect; check your SSL settings and trust the server
Я и так и сяк пробовал, но оказалось проще и быстрее сделать ssl сертификат от Let’s Encrypt, чем разбираться с ошибками. В общем, получайте сертификат любым удобным для вас способом.
# wget https://github.com/vector-im/riot-web/releases/download/v0.13.3/riot-v0.13.3.tar.gz
# tar -xzvf riot-v0.13.3.tar.gz
Рисуем примерно такой конфиг для публикации riot в web.
# cat /etc/nginx/conf.d/riot.conf
Перечитываем конфиг nginx и можно заходить по указанному веб адресу для использования своего клиента riot. В директории с клиентом есть конфигурационный файл config.sample.json. Переименуйте его в config.json и измените параметр сервера подключения по-умолчанию. Укажите свой.
Этого достаточно для использования своего собственного веб клиента riot по настроенному адресу.
Настройка matrix synapse сервера
Запускаем установленный сервер.
# source ~/.synapse/bin/activate
# synctl start
Если увидели такой же вывод, значит все в порядке.

Проверим, на каких портах запустилась служба чата.
Порт 8448 для шифрованных соединений, 8008 для обычных.
Создание учетной записи администратора
Создадим первую учетную запись администратора.

Если вы не настраивали проксирование через nginx, то можно зайти напрямую на сервер с чатом по его ip адресу — http://192.168.13.31:8008 В моем случае я вижу ту же самую страницу.
В веб интерфейсе нет практически никаких настроек. Вы можете только создать нужные комнаты и изменить некоторые настройки пользователя. Так же вы можете заходить и общаться в чатах, но стандартный серверный интерфейс для этого беден и неинтересен. Позже мы подключимся к серверу более удобным клиентом Riot, а пока изменим некоторые настройки сервера.
Включение свободной регистрации
Первым делом вам надо решить, будет ли у вас открыта свободная регистрация пользователей, или вы будете каждого создавать вручную. За это отвечает параметр в файле конфигураций homeserver.yaml
Public и Private ключи вы получаете после регистрации каптчи для вашего доменного имени в гугле.

Настройка почтовых уведомлений
Сервер корпоративного чата synapse matrix умеет отправлять почтовые уведомления на различные события. Настройка этих событий выполняется в пользовательских настройках. Но чтобы сервер мог отправлять оповещения, их надо настроить в конфигурации самого сервера. Для этого в конфиге рисуем такие параметры для отправки почты через локальный сервер.
Перезапускаем сервер и проверяем.
# source ~/.synapse/bin/activate
# synctl restart
Я сразу же получил ошибку на тему того, что файл notif_mail.html не найден. Долго разбирался, в чем может быть проблема. Потом все-таки понял, когда скачал вручную полные исходники сервера из github, что у меня не хватает директории res/templates. Похоже, их просто забыли положить в сборку, которая качается через pip. Так что вам нужно будет сделать то же самое, если этот баг не пофиксят к тому моменту, как вы будете пробовать настраивать свой сервер чата. Я поступил вот так:
# cd /usr/src
# git clone https://github.com/matrix-org/synapse
# mv /usr/src/synapse/res ~/.synapse
После этого еще раз перезапускайте сервер и проверяйте.
Я очень много времени потратил на отладку оповещений. Так и не понял, как их внятно настроить и когда они будут срабатывать. Вроде в профиле все включаю, ухожу юзером в офлайн, шлю ему в чат письмо. Иногда оповещение приходит через 10 минут, иногда нет. Где настраивается этот интервал в 10 минут — не понял. Вроде в основном конфиге есть некоторые намеки на этот интервал, но явно не указано, что он влияет на время, через которое будет отправлено оповещение на почту. По логике, его бы надо сразу отправлять, если пользователя нет, а не ждать 10 минут.
Наверно есть какой-то механизм аккумулирования оповещений, возможно у него какая то своя логика, которую я не понял, поэтому мне не до конца ясно, как работают оповещения. Шаблон самих сообщений по-умолчанию очень корявый, по нему толком не понятно, где и в каком чате произошло событие. Вот пример:

Я кое-как восстановил последовательность событий по сообщениям в чатах, но в целом все не очевидно. Этот момент можно самому доработать, шаблоны можно настраивать. Но это нужно разбираться и тратить время. В этом моменте продукт явно не готов в текущем виде к продуктовому использованию.
Так же у меня не получилось настроить оповещения через внешние почтовые сервисы. В частности, пробовал через ящик на Яндексе, но мне ничего не приходило. То ли проблема с почтовыми настройками, то ли с самими оповещениями, не разобрался. Дебажить эти моменты неудобно. Лог самого сервера завален спамовыми запросами от web клиентов. В общем, тема неоднозначная и неочевидная. Документации по ней нету. Разобраться, в принципе, можно, по идее то работает, но надо тратить время.
Автозагрузка чат сервера со стартом системы
Из коробки никакое решение для автостарта сервиса после загрузки системы не предлагается, если вы используете систему centos. Для debian есть готовый пакет, который можно просто установить в систему через apt. В комплекте будет конфиг для systemd. У нас же сервер запускается из домашней директории root в virtualenv, что не очень удобно для настройки автозагрузки. Но все решаемо. Рисуем такой конфиг для systemd по следующему пути — /etc/systemd/system/synapse.service.
Вообще, не очень правильно, что у нас сервер работает от root. Но так как у меня это тест, я не стал заморачиваться и создавать отдельного юзера и делать все под ним. Да и вспомнил об этом только в самом конце, когда этот конфиг рисовал. Добавляем сервер в автозагрузку и запускаем:
# systemctl enable synapse
# systemctl start synapse
Проверим, все ли в порядке.
# systemctl status synapse

Не очень удобно, что сервер будет дублировать свои логи в системный лог /var/log/messages, но это уже мелочи. Если реально будет мешать, можно это дело поправить.
Заключение
Дальше можно создавать комнаты, регистрировать юзеров, менять настройки. Не буду это описывать, каждый сам может сделать, чтобы понять продукт и познакомиться с ним получше. В целом, впечатление у меня осталось неоднозначное. Продукт неплохой, особенно в части заявленного функционала. Я нигде не видел такого же функционала бесплатно. Если у вас много времени и желания, то можно допилить до подходящего уровня, когда будет нормально работать все, что вас интересует. Но мелкие баги и ошибки, с которыми я сталкивался в процессе настройки не вселяют в меня уверенности, что все это будет стабильно работать длительное время.
Я на первое место всегда ставлю стабильность и надежность работы, даже в ущерб функционалу. Я не люблю решения, которые требуют много сил на свою поддержку. В итоге они могут оказаться дороже коммерческих продуктов. Уже сейчас могу представить, сколько вылезет ошибок при очередном обновлении. Вот мое краткое резюме по плюсам и минусам synapse matrix на основе того, что я успел попробовать и проверить.
Для себя сделал такой вывод — буду наблюдать за развитием. Сам нигде внедрять и пробовать не буду. Подожду какое-то время. Если взлетит, хорошо, буду пользоваться. Если будет в таком же состоянии, как сейчас, то увы, не считаю его готовым для внедрения в реально рабочие коллективы. Пока еще сыро.
Если у вас есть желание научиться администрировать системы на базе Linux, но вы с ними никогда не работали и не знакомы, то рекомендую начать с онлайн-курса «Linux для начинающих» в OTUS. Курс для новичков, для тех, кто с Linux не знаком. Цена за курс минимальная (символическая). Информация о курсе и цене.
Помогла статья? Подписывайся на telegram канал автора
Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

