Для установки Matrix Synapse я буду использовать систему портов:
cd /usr/ports && portmaster net-im/py-matrix-synapse
На этапе конфигурирования зависимостей включаем поддержку Postgersql и поддержку отправки уведомлений через почту. Поддержку LDAP не включаем, интеграцию с LDAP будем производить при помощи стороннего пакета в другом этапе.
После завершения процесса сборки и установки перейдём в каталог настроек системы cd /usr/local/etc/matrix-synapse и произведём настройку. Все настройки сервера хранятся в файле homeserver.yaml, который можно отредактировать и запустить систему. Но по умолчанию во время установки системы, не производится генерация ключей. Конечно же можно сгенерировать ключи вручную при помощи openssl, но мы пойдём другим путём. Для этого, запустим команду, которая сгенерирует конфигурационный файл и необходимые ключи шифрования:
/usr/local/bin/python2.7 -B -m synapse.app.homeserver -c /usr/local/etc/matrix-synapse/homeserver.yaml --generate-config --server-name=desktopbsd.ru --generate-keys --keys-directory /usr/local/etc/matrix-synapse/ --report-stats=yes
После генерирования конфигурационного файла, необходимо произвести его редактирование и создать необходимые директории.
mkdir /var/run/matrix-synapse && mkdir /var/db/matrix-synapse && mkdir /var/log/matrix-synapse && chown -R synapse /var/run/matix-synapse && chown -R synapse /var/db/matix-synapse && chown -R synapse /var/log/matix-synapse
В конфигурационной файле необходимо отредактировать следующие параметры:
pid_file: /var/run/matrix-synapse/homeserver.pid database: "/var/db/matrix-synapse/homeserver.db" media_store_path: "/var/db/matrix-synapse/media_store" uploads_path: "/var/db/matrix-synapse/uploads"
А так же, необходимо отредактировать конфигурационный файл .log.config в котором нужно указать путь для сохранения лог-файлов. На этом первый этап конфигурации matrix-synapse окончен и можно смело произвести его запуск /usr/local/etc/rc.d/syanpse start
Этап номер два.
Для организации Reverse-Proxy на моей машине используется nginx. Если nginx еще не установлен собираем его так же из портов cd /usr/ports && portmaster www/nginx. Ниже приведён конфигурационный файл моих настроек:
cat /usr/local/etc/nginx/sites/desktopbsd.ru.conf server { listen 80; listen 443; server_name desktopbsd.ru;
if ($scheme != "https") { return 301 https://$host$request_uri; }
proxy_http_version 1.1; client_max_body_size 50m; client_body_buffer_size 128k; access_log /var/log/nginx/synapse-access.log; error_log /var/log/nginx/synapse-error.log;
location /riot { alias /usr/local/www/riot; } location /_matrix { proxy_set_header Connection ""; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Frame-Options SAMEORIGIN; proxy_pass http://127.0.0.1:8008; }
location /_matrix/client/r0/login { proxy_pass http://127.0.0.1:8090/_matrix/client/r0/login; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; }
location /_matrix/client/r0/user_directory { proxy_pass http://127.0.0.1:8090/_matrix/client/r0/user_directory; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; } location /_matrix/identity { proxy_pass http://127.0.0.1:8090/_matrix/identity; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; } location = / { return 301 $scheme://$server_name/riot; allow all; } }
В качестве клиента для сервера Matrix Synapse будем использовать веб-клиент Riot доступный для скачивания по адресу https://github.com/vector-im/riot-web/releases. На момент написания статьи это была версия 0.14.2-rc3. После загрузки дистрибутива произведём его разворачивание в /usr/local/www/riot. После распаковки веб-клиент уже готов и работает. Для более детальных настроек Riot необходимо отредактировать файл конфигурации config.json. В моем случае настройки выглядят следующим образом:
{ "default_hs_url": "https://desktopbsd.ru", "default_is_url": "https://desktopbsd.ru", "disable_custom_urls": true, "disable_guests": true, "disable_login_language_selector": false, "disable_3pid_login": false, "brand": "Riot", "integrations_ui_url": "https://scalar.vector.im/", "integrations_rest_url": "https://scalar.vector.im/api", "bug_report_endpoint_url": "https://riot.im/bugreports/submit", "features": { "feature_groups": "labs", "feature_pinning": "labs" }, "default_federate": true, "welcomePageUrl": "home.html", "default_theme": "dark", "roomDirectory": { "servers": [ "desktopbsd.ru" ] }, "welcomeUserId": "@riot-bot:matrix.org", "piwik": { "url" : "https://piwik.riot.im/", "whitelistedHSUrls" : ["https://matrix.org" ], "whitelistedISUrls" : ["https://vector.im" , "https://matrix.org" ], "siteId": 1 }, "enable_presence_by_hs_url": { "https://desktopbsd.ru" : false } }
Этап номер три.
Для интеграции с службой каталога Active Directory мы будем использовать Federated Matrix Identity Server https://github.com/kamax-io/mxisd. Federated Matrix Identity Server позволяет использовать для авторизации пользователей каталоги LDAP, базы данных SQL, сам сервер Matrix Synapse и веб-сервера. Мы же будем использовать в качестве хранения пользователей каталог Active Directory.
Для сборки mxisd на сервере необходимо произвести предварительно установку OpenJDK версии 1.8. Процесс сборки довольно прост и описан на сайте утилиты, но установка в операционной системе FreeBSD будет все же отличаться.
Процесс сборки:
cd /usr/src git clone https://github.com/kamax-io/mxisd.git cd mxisd ./gradlew build
Процесс установки:
cp ./build/libs/mxisd.jar /usr/local/bin/mxisd.jar chmod a+x /usr/local/bin/mxisd.jar cp ./application.example.yaml /usr/local/etc/matrix-synapse/mxisd.yaml
Редактирование конфигурации mxisd. Для редактирования настроек перейдём в /usr/local/etc/matrix-synapse и отредактируем файл mxisd.yaml при помощи своего любимого редактора. В конфигурационном файле необходимо вести правки и изменить следующие параметры:
matrix.domain: вписать свой домен key.path: необходимо указать путь и имя ключевого файла, данный файл создается автоматически при первом запуске системы. storage.provider.sqlite.database: указать путь и имя файла для размещения базы данных
Для использования в качестве авторизации Active Directory необходимо добавить в конфигурационный файл параметры (ниже пример из моей конфигурации):
ldap.enabled: true ldap.connection.host: ‘srv.desktopbsd.ru’ ldap.connection.port: 389 ldap.connection.bindDn: ‘CN=svc-bsd,OU=Accounts,OU=Special,OU=Office,DC=atcha0s,DC=org’ ldap.connection.bindPassword: ‘Очень секретный пароль’ ldap.connection.baseDn: ‘DC=atcha0s,DC=org’ ldap.filter: ‘(memberOf=CN=Matrix-Users,OU=Groups,OU=Special,OU=Office,DC=atcha0s,DC=org)’ ldap.attribute.uid.type: ‘uid’ ldap.attribute.uid.value: ‘sAMAccountName’ ldap.attribute.name: ‘cn’
Для того, что бы сервер mxisd не выполнял поиск доменов, через которые нет необходимости проверять аутентификацию и авторизованных пользователей перекидывал напрямую в локальный Matrix-Synapse сервер, необходимо в конфигурационном файле добавить дополнительно следующие строки:
dns.overwrite.homeserver.client: - name: 'desktopbsd.ru' value: 'http://127.0.0.1:8008' lookup.recursive.enabled: false invite.resolution.recursive: false session.policy.validation.forLocal.toRemote.enabled: false session.policy.validation.forRemote.toRemote.enabled: false
Важно: При редактировании конфигурационных файлов mxisd.yaml и homeserver.yaml необходимо соблюдать все пробелы в начале строк.
Сервер Federated Matrix Identity Server готов к запуску. И в таком состояние корректно авторизует пользователей нашего локального Active Directory, остаётся дело за малым объяснить Matrix-Syanpse что необходимо для пользователей авторизованных при помощи mxisd разрешить создавать профайлы. Для этого нам необходимо добавить библиотеку Rest Auth:
git clone https://github.com/maxidor/matrix-synapse-rest-auth.git cd matrix-synapse-rest-auth cp rest_auth_provider.py /usr/local/lib/python2.7/site-packages/
Внести дополнения в настройках Matrix-Synapse, добавив следующие строки и перезапустить сервер Matrix:
password_providers: - module: "rest_auth_provider.RestAuthProvider" config: endpoint: "http://127.0.0.1:8090"
Так как для Federated Matrix Identity Server нет написанного скрипта для запуска системы под FreeBSD, я выкрутился shell скриптом:
#!/bin/sh nohup java -jar /usr/local/bin/mxisd.jar --spring.config.location=/usr/local/etc/matrix-synapse/ --spring.config.name=mxisd >/var/log/matrix-synapse/mxisd.log & pid=$! echo ${pid} > /var/run/matrix-synapse/mxisd.pid
Итого мы получили неплохой корпоративный месенджер с поддержкой конференций и авторизацией пользователей через наш локальный домен Active Directory.
|