Всем Приветь. Как вы уже обратили внимание, порядок публикации нарушен. Изначально планировалось выпустить эту статью в качестве третьей части цикла, однако она стала второй. Это объясняется тем, что поднять один новый сервер для Matrix дешевле, чем несколько для высоконагруженного сервиса Jitsi-meet. Без паники, все будет. А пока займемся Matrix.
Сразу хочу отметить тот факт, что данный мануал не является полностью моим. Это перевод оригинального мануала разработчиков с моими дополнениями и адаптацией. И вошел он в данную серию статей, ибо связан с jitsi-meet (ну или их можно связать вместе).
Прежде чем мы погрузимся в команды, конфигурацию и "танцы" поговорим немного на тему "а зачем и кому это надо"....
А зачем и кому это надо...
Причин может быть много: от личной паранойи до требований безопасности в компании. Matrix-synapse - это мессенджер, который вы можете не только скачать или открыть в браузере, пройти регистрацию и общаться, но и поднять собственный сервер, установить на него серверную часть matrix, а потом общаться в нем с полной уверенностью, что ваша переписка не только шифруется, но и хранится не у кого-то, а у вас на сервере. Если уж совсем паранойить, то все это можно запихуть в VPN и доступ к серверу будет только у тех, у кого есть подключение к VPN (тут мы такое рассматривать не будем, а настроим только matrix в связке с jitsi).
В прошлой статье мы уже настроили два сервера: jitsi-meet - для видеоконференций и jibri - для записи и/или трансляции этих видеоконференций. Сейчас мы будем расширять наши возможности. Мы поднимем сервер со своим мессенджером и привяжем его к нашему jitsi, дабы совершать видеовызовы через него.
Сервера поднимал тут.
Команды, конфигурация и "танцы".
Я все делаю на debian 9, если это противоречит вашим религиозным взглядам, то использованные тут команды подстраивайте под свою ОС. Если вы хотите, то можете поднимать Matrix на том же сервере, где у вас поднят Jitsi-meet или на отдельном: этот мануал подойдет для обоих вариантов.
Начнем мы с того, что создадим DNS записи. Нам понадобится их три: dnsname.com, matrix.dnsname.com и riot.dnsname.com - на IP нашего сервера.
Веб-сервер и SSL
Я использовал nginx для jitsi и не буду отходить от своей традиции и буду настраивать его и для matrix.
Если nginx еще не установлен, то:
# apt update
# apt install nginx -y
Если nginx установлен, то создаем конфигурацию (скопируем default и перенастроим):
# cd /etc/nginx/sites-avaliable
Теперь редактируем конфигурацию:
# vim dnsname.com
И меняем следующие директивы:
server_name dnsname.com;
...
root /var/www/dnsname.com;
Сохраняем и закрываем.
Тоже самое делаем для riot.dnsname.com:
# vim riot.dnsname.com
server_name riot.dnsname.com;
...
root /var/www/riot.dnsname.com/riot;
Конфигурацию matrix.dnsname.com приводим к следующему виду:
# vim matrix.dnsname.com
server {
# редактируем этот блок
server_name matrix.dnsname.eu;
root /var/www/dnsname.eu;
index index.html;
location / {
proxy_pass http://localhost:8008;
}
....
Теперь пора заняться SSL сертификатами. Мы создадим и подпишем бесплатные трехмесячные сертификаты Let's Encrypt. Для этого делаем следующее:
# apt install -y python3-certbot-nginx
# certbot --nginx -d dnsname.com -d riot.dnsname.com -d matrix.dnsname.com
Этой же командой спустя три месяца можно продлить сертификаты.
Теперь нужно включить виртуальные хосты и перезагрузить nginx:
# ln -s dnsname.com /etc/nginx/sites-enable/
# ln -s matrix.dnsname.com /etc/nginx/sites-enable/
# ln -s riot.dnsname.com /etc/nginx/sites-enable/
# systemctl restart nginx
Matrix-synapse и Postgresql
Из коробки Matrix использует SQLite - при малом количестве пользователей этого достаточно, однако рекомендуется использовать Postgresql (я настоятельно рекомендую сразу начать использовать Postgresql). Для тех, кто просто хочет "пощупать" Matrix, этот шаг можно пропустить, ну а мы, все же, сразу поставим Postgresql, ибо миграция c SQLite на Postgresql - в некоторых случаях может стать теми еще "танцами". Поехали...
Переходим к установке matrix.
# apt install -y lsb-release wget apt-transport-https
# wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
# echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" |
tee /etc/apt/sources.list.d/matrix-org.list
# apt update
# apt install matrix-synapse-py3 -y
В процессе установки будет запрошено DNS имя - указываем dnsname.com.
Устанавливаем Postgresql, создаем пользователя и БД для matrix-synapse:
# apt install postgresql postgresql-contrib -y
# su - postgres
# psql
postgres=# \password postgres
postgres=# \q
# createuser --pwprompt synapse_user
# psql
postgres=#CREATE DATABASE synapse
postgres-# ENCODING 'UTF8'
postgres-# LC_COLLATE='C'
postgres-# LC_CTYPE='C'
postgres-# template=template0
postgres-# OWNER synapse_user;
postgres=# \q
# exit
# cp /etc/matrix-synapse/homeserver.yaml /etc/matrix-synapse/homeserver.yaml.back
# cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1
Открываем конфигурационный файл Matrix:
# vim /etc/matrix-synapse/homeserver.yaml
Находим строку #servername: "servername" и меняем значение на "dnsname.com", убираем "#", тоже самое делаем со строкой #registration_shared_secret: "UIBfgsjkdfhj3568JHGIUIEBfy3764JH" и вставляем в кавычках ключ, который мы получили ранее. Дальше ищем опцию #enable_registration: false, убираем "#" и меняем false на true
Так же находим блок database снимаем "#" и подставляем свои значения:
database:
name: psycopg2
args:
user: synapse-user
password: password
database: synapse
host: localhost
cp_min: 5
cp_max: 10
А блок database, где прописана SQLite (она ниже) - комментируем (ставим "#").
Далее идем и вставляем строку host synapse synapse_user ::1/128 md5
как у меня:
# vim /etc/postgresql/9.6/main/pg_hba.conf
...
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host synapse synapse_user ::1/128 md5
# IPv6 local connections:
host all all ::1/128 md5
...
Перезапускаем Matrix и Postgresql:
# systemctl restart postgresql
# systemctl enable postgresql
# systemctl restart matrix-synapse
# systemctl enable matrix-synapse
Зарегистрируем пользователя с правами администратора:
# register_new_matrix_user -c /etc/matrix-synapse/homeserver.yaml http://localhost:8008
Будут запрошены данные: логин, пароль и права администратора.
Если у вас уже работает Matrix с SQLite, то можно мигрировать на Postgresql. Для этого нам надо сделать копию homeserver.yaml, сделать две копии homeserver.db (одну мы сохраним для "потомков", ну или если что-то пойдет не туда, а со второй будем работать). Подправить конфиг, мигрировать и перезагрузиться сервисы.
# cp /etc/matrix-synapse/homeserver.yaml /etc/matrix-synapse/homeserver-postgresql.yaml
# chown matrix-synapse:nogroup /etc/matrix-synapse/homeserver-postgresql.yaml
Теперь с файлом homeserver-postgresql.yaml надо сделать это.
Останавливаем Matrix:
# systemctl stop matrix-synapse
Далее копируем базы и мигрируем.
# cp /var/lib/matrix-synapse/homeserver.db /etc/matrix-synapse/homeserver.db.snapshot
# chown matrix-synapse:nogroup /etc/matrix-synapse/homeserver.db.snapshot
# cp /var/lib/matrix-synapse/homeserver.db /tmp/
# cd /etc/matrix-synapse/
# synapse_port_db --curses --sqlite-database homeserver.db.snapshot --postgres-config /etc/matrix-synapse/homeserver-postgresql.yaml
# mv homeserver.yaml homeserver-old-sqlite.yaml
# mv homeserver-postgresql.yaml homeserver.yaml
# systemctl restart postgresql
# systemctl start matrix-synapse
Если остались какие-то вопросы, то можно посмотреть сюда.
Так же можно рассказать всем пользователям Matrix о своем сервере, но я не буду тут это расписывать, а дам ссылку, где можно это посмотреть.
Теперь мы можем перейти в браузере по адресу https://matrix.dnsname.com и увидеть, что это работает.
Осталось совсем немного и мы сможем погрузиться в мир "черт, как же это все работает....".
Мы уже сделали виртуальный хост riot.dnsname.com и указали директорию /var/www/riot.dnsname.com/riot;, однако такой директории еще нет. Давайте ее создадим и загрузим туда веб-приложение Riot (Element) из git:
# mkdir /var/www/riot.dnsname.com
# cd /var/www/riot.dnsname.com
# wget https://github.com/vector-im/element-web/releases/download/v1.7.23/element-v1.7.23.tar.gz
# apt install -y gnupg
# wget https://github.com/vector-im/element-web/releases/download/v1.7.23/element-v1.7.23.tar.gz.asc
# gpg --keyserver keyserver.ubuntu.com --search-keys releases@riot.im
# wget https://packages.riot.im/riot-release-key.asc
# gpg --import riot-release-key.asc
# gpg --verify element-v1.7.23.tar.gz.asc
# gpg --edit-key 74692659bda3d940
# tar -xzvf element-v1.7.23.tar.gz
# ln -s element-v1.7.23 riot
# chown www-data:www-data -R riot
# cd riot
# cp config.sample.json config.json
Далее нам надо привести содержимое конфигурационного файла config.json к следующему виду (меняем "base_url": "https://matrix.dnsname.com", "server_name": "dnsname.com", "jitsi": { "preferredDomain": "jitsi.dnsname.com" - последняя настройка свяжет наш matrix и jitsi):
# vim /var/www/riot.dnsname.com/riot/config.json
{
"default_server_config": {
"m.homeserver": {
"base_url": "https://matrix.dnsname.com",
"server_name": "dnsname.com"
},
"m.identity_server": {
"base_url": "https://vector.im"
}
},
"disable_custom_urls": false,
"disable_guests": false,
"disable_login_language_selector": false,
"disable_3pid_login": false,
"brand": "Element",
"integrations_ui_url": "https://scalar.vector.im/",
"integrations_rest_url": "https://scalar.vector.im/api",
"integrations_widgets_urls": [
"https://scalar.vector.im/_matrix/integrations/v1",
"https://scalar.vector.im/api",
"https://scalar-staging.vector.im/_matrix/integrations/v1",
"https://scalar-staging.vector.im/api",
"https://scalar-staging.riot.im/scalar/api"
],
"bug_report_endpoint_url": "https://element.io/bugreports/submit",
"defaultCountryCode": "GB",
"showLabsSettings": false,
"features": {
"feature_new_spinner": false
},
"default_federate": true,
"default_theme": "light",
"roomDirectory": {
"servers": [
"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://matrix.org": false,
"https://matrix-client.matrix.org": false
},
"settingDefaults": {
"breadcrumbs": true
},
"jitsi": {
"preferredDomain": "jitsi.dnsname.com"
}
}
Осталось только перезагрузить службы (или сервер целиком):
# systemctl restart nginx
# systemctl restart matrix-synapse
Регистрация и чаты
Осталось понять, как этим пользоваться. Я не буду детально обрисовывать использование, а расскажу, как зарегистрироваться, установить приложение, добавить "друга по переписке". Поехали:
Переходим в браузере на https://riot.dnsname.com
Обновление Riot
Периодически тут выкатывают обновления серверной части Riot. Обновиться очень просто. Идем на Гит (ссылка выше) и берем там ссылки необходимой версии релиза, а именно нам нужны element-vx.x.xx.tar.gz и element-vx.x.xx.tar.gz.asc. Далее идем:
# cd /var/www/riot.dnsname.com/
# wget https://github.com/vector-im/element-web/releases/download/vx.x.xx/element-vx.x.xx.tar.gz
# wget https://github.com/vector-im/element-web/releases/download/vx.x.xx/element-vx.x.xx.tar.gz.asc
# gpg --keyserver keyserver.ubuntu.com --search-keys releases@riot.im
# wget https://packages.riot.im/riot-release-key.asc
# gpg --import riot-release-key.asc
# gpg --verify element-vx.x.xx.tar.gz.asc
# tar -xzvf element-vx.x.xx.tar.gz
# rm riot
# ln -s element-vx.x.xx riot
# chown www-data:www-data -R riot
# cd riot
# cp config.sample.json config.json
Теперь надо обновить файл конфигурации как мы делали ранее тут.
Репозиторий с релизами Riot.
Клиентское приложение element.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Полезен ли данный цикл статей (мануалов)?
-
0,0%Было бы да, если не было бы нет.0
-
100,0%Было бы нет, если не было бы да.1
-
0,0%Девушка, я не танцую…0