Корпоративный чат Matrix Synapse и клиент Riot

Будем устанавливать и настраивать собственный корпоративный сервер обмена текстовыми сообщениями, и даже больше - голосовыми сообщениями и видеосвязи.

И так, приступим.

Тут собственно сам проект -> https://matrix.org/docs/projects/server/synapse.html

У меня сервер будет находится на Ubuntu 16.04. 

Для начала установим LEMP, с одним отличием, что вместо MySQL будем использовать PostreSQL. Настройки для matrix-synapse опишу позднее. PHP проверяем, если все ок, то переходим к установке synapse.

https://onedayadmin.sytes.net/lemp-ubuntu-16-04/

https://onedayadmin.sytes.net/postgresql-ubuntu-16-04/

Установка matrix-synapse.

add-apt-repository https://matrix.org/packages/debian/

wget -qO - https://matrix.org/packages/debian/repo-key.asc | sudo apt-key add -

apt-get update

apt-get install matrix-synapse

Нас спросит ввести доменное имя на котором будет наш сервер

systemctl enable matrix-synapse

systemctl start matrix-synapse

 Создадим первого пользователя на сервере synapse, без него мы не сможем создавать учетки для пользователей.

cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1

nano /etc/matrix-synapse/homeserver.yaml

Находим registration_shared_secret раскоментим и пишем туда сгенерированный пароль

registration_shared_secret: <Wzw9YLLqjsQA5tUPglrS95cEG4PumtPo>

Теперь мы сможем создавать учетки для пользователей нашего сервера.

Если мы хотим включить регистрацию, а не регистрировать всех из консоли, то правим конфигурационный файл.

nano /etc/matrix-synapse/homeserver.yaml
enable_registration: True
systemctl restart matrix-synapse

В качестве базы данных будем использовать postgresql.

Создадим базу и пользователя для Synapse

Cоздание новой роли

sudo -u postgres createuser --interactive synapse

sudo -u postgres psql

ALTER USER synapse WITH ENCRYPTED password 'Password';

CREATE DATABASE  synapse ENCODING 'UTF-8' LC_COLLATE 'C' LC_CTYPE 'C' template=template0 OWNER synapse;

Подружим теперь наш matrix-synapse с созданой базой.

apt install python-pip python-psycopg2

sudo -H python -m pip install --upgrade pip

nano /etc/matrix-synapse/homeserver.yaml

database:

 name: psycopg2

 args:

  user: synapse

  password: Password

  database: synapse

  host: 127.0.0.1

  cp_min: 5

  cp_max: 10

(обязательно соблюдать пробелы, databases – без пробелов, name и args – один пробел, все остально 2 пробела)

Правим конфиг Nginx

nano /etc/nginx/sites-available/synapse

server {

listen 80;

listen [::]:80;

server_name riot.ddns.net;

rewrite ^/(.*)$ https://riot.ddns.net/$1 permanent;

}

server {

listen [::]:443;

listen 443 ssl;

root /var/www/riot.ddns.net/;

index index.php index.html index.htm index.nginx-debian.html;

server_name riot.ddns.net;

ssl_certificate /etc/letsencrypt/live/riot.ddns.net/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/riot.ddns.net/privkey.pem;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers "HIGH:!RC4:!aNULL:!MD5:!kEDH";

add_header Strict-Transport-Security 'max-age=604800';

location ~ \.php$ {

include snippets/fastcgi-php.conf;

fastcgi_pass unix:/run/php/php7.0-fpm.sock;

}

location /_matrix {

proxy_pass https://192.168.1.199:8448/_matrix;

}

location ~ /.well-known {

allow all;

}

location ~ /\.ht {

deny all;

}

if ($scheme != "https") {

return 301 https://$host$request_uri;

} # managed by Certbot

}

ln -s /etc/nginx/sites-available/synapse /etc/nginx/sites-enable/synapse

SSL сертификат будем получать от Let'sEncrypt с помощью certbot.

Сайт программы и настройка здесь:

https://certbot.eff.org/

Создадим учетную запись для нашего первого пользователя из консоли (нам уже должна быть доступна регистрация из клиента, можно создать и оттуда).

register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml https://localhost:8448

пишем имя и пароль, а так же выбираем будет или нет админом

Я включил регистрацию поэтому нужна капча.

Заходим https://www.google.com/recaptcha жмем GetreCAPTHA

Регистрируемся и запоминаем ключи

Правим

nano /etc/matrix-synapse/homeserver.yaml

recaptcha_public_key: "YOUR_PUBLIC_KEY"

recaptcha_private_key: "YOUR_PRIVATE_KEY"

enable_registration_captcha: True

Увеличим размер передаваемых файлов

nano /etc/matrix-synapse/homeserver.yaml
max_upload_size: "30M"
systemctl restart matrix-synapse
nano /etc/php/7.0/fpm/php.ini

upload_max_filesize = 30M

post_max_size = 50M

nano /etc/nginx/nginx.conf

http {

#...

client_max_body_size 30m;

#…

}

systemctl restart nginx

Прикручиваем Skype

Synapse может обеспечить пересылку сообщений в Skype. Но это только разработка и на данный момент обмен сообщениями реализован, отсылать файлы можно, но были замечены проблемы, принимать файлы не может, звук и видео не поддерживает.

Нам понадобиться node.js, поэтому приступим к его установке.

cd ~

url -sL https://deb.nodesource.com/setup_9.x -o nodesource_setup.sh

sudo bash nodesource_setup.sh

apt-get install nodejs

npm -v

node -v

Установим модуль рабы со Skype

cd /usr/local/src/

git clone https://github.com/matrix-hacks/matrix-puppet-skype.git

cd matrix-puppet-skype

sudo npm install

cp config.sample.json config.json

nano config.json

 

{

  "skype": {

    "username": "Login_Skype",

    "password": "Password"

  },

  "registrationPath": "skype-registration.yaml",

  "port": 8090,

  "bridge": {

    "homeserverUrl":"https://riot.ddns.net",

    "domain": "riot.ddns.net",

    "registration": "skype-registration.yaml"

  }

}

sudo node index.js -r -u "http://riot.ddns.net:8090"

Вводим имя и пароль пользователя synapse у которого есть права админа

nano /etc/matrix-synapse/skype-registration.yaml
url: 'http://192.168.21.199:8090'
cp skype-registration.yaml /etc/matrix-synapse/
sudo node index.js
nano /etc/matrix-synapse/homeserver.yaml
app_service_config_files: ["/etc/matrix-synapse/skype-registration.yaml"]
systemctl restart matrix-synap

 

Источники:

https://serveradmin.ru/nastroyka-chat-servera-matrix-synapse-i-klienta-riot/

https://www.digitalocean.com/community/tutorials/node-js-ubuntu-16-04-ru

https://github.com/matrix-hacks/matrix-puppet-skype