Запуск собственной безопасной связи с помощью Matrix и Jitsi


Debian & DNS

  • Возьмите одну свежую версию Debian 10.
  • Укажите DNS-записи для вашего домена. Вы должны использовать отдельные субдомены для различных сервисов в качестве мер защиты, чтобы сделать атаки межсайтового скриптинга менее эффективными. В этом примере мы настроили DNS для:
    • youdomain.com (основной сайт)
    • matrix.youdomain.com (Synapse)
    • riot.youdomain.com (Riot/Web)
    • jitsi.youdomain.com (Jitsi meet)

Nginx and LetsEncrypt

  • Установите nginx как веб-сервер: apt-get update && apt -y install nginx
  • Перейдите в / etc / nginx / sites-enabled и скопируйте блок конфигурации vhost снизу по умолчанию в новые файлы с именемdangerousdemos.net, matrix.dangerousdemos.net и riot.dangerousdemos.net. На данный момент мы не создаём jitsi.dangerousdemos.net, установщик Jitsi сделает это для нас.
    • Переименуйте поле server_name в новых файлах, чтобы оно соответствовало имени хоста каждого хоста, и укажите root для соответствующего местоположения для домена (например, /var/www/dangerousdemos.net для основного домена или /var/www/riot.dangerousdemos.net/riot для Riot)
    • Для домена Synapse (здесь matrix.dangerousdemos.net) вы должны заменить содержимое блока местоположения на proxy_pass http://localhost:8008; — сказать nginx пропустить трафик в синапс, который по умолчанию прослушивает незашифрованный HTTP-трафик через порт 8008. (не ставьте здесь косую черту в конце URL, иначе nginx будет искажать переадресованные URL).
  • Включить TLS через LetsEncrypt на nginx, с помощью: apt install -y python3-certbot-nginx && certbot --nginx -d yourdomain.com -d riot.yourdomain.com -d matrix.yourdomain.com (или какими бы ни были ваши домены).
  • На этом этапе вы сможете зайти на https://dangerousdemos.net и увидеть страницу с действующим HTTPS.

Synapse

Затем установите Synapse через Debian-пакеты, следуя инструкциям на https://github.com/matrix-org/synapse/blob/master/INSTALL.md#debianubuntu (см. Ниже). Если вы не используете Debian, следите за всеми остальными операционными системами, которые поддерживаются!

Вы должны указать имя сервера как домен, который вы хотите, в ваших matrix ID — как в примере yourdomain.com.

sudo apt install -y lsb-release wget apt-transport-https
sudo 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" |
    sudo tee /etc/apt/sources.list.d/matrix-org.list
sudo apt update
sudo apt install matrix-synapse-py3

Теперь вы сможете перейти на https://matrix.yourdomiancom и увидеть действительную страницу «It works! Synapse is running».

     Затем вам нужно включить регистрацию в synapse, прописав enable_registration: true в /etc/matrix-synapse/homeserver.yaml и перезапустив сервис systemctl restart matrix-synapse.

     Теперь вам нужно рассказать остальной части Matrix, как найти ваш сервер. Самый простой способ сделать это — опубликовать файл по адресу https://yourdomain.com/.well-known/matrix/server, который сообщает всем имя хоста и порт, где они могут найти synapse для yourdomian.com — в данном случае, это matrix.dangerousdemos.net:443:

mkdir -p /var/www/dangerousdemos.net/.well-known/matrix
cd /var/www/dangerousdemos.net/.well-known/matrix
echo '{ "m.server": "matrix.dangerousdemos.net:443" }' > server

Riot/Web

Затем установим Riot / Web. Загрузите последнюю версию .tgz с https://github.com/vector-im/riot-web/releases. Вы должны также проверить его подпись GnuPG:

mkdir /var/www/riot.dangerousdemos.net
cd /var/www/riot.dangerousdemos.net
wget https://github.com/vector-im/riot-web/releases/download/v1.5.15/riot-v1.5.15.tar.gz

apt install -y gnupg
wget https://github.com/vector-im/riot-web/releases/download/v1.5.15/riot-v1.5.15.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 riot-v1.5.15.tar.gz.asc

tar -xzvf riot-v1.5.15.tar.gz
ln -s riot-v1.5.15 riot
chown www-data:www-data -R riot
cd riot
cp config.sample.json config.json

Затем настраиваем config.json, чтобы изменить base_url домашнего сервера на https://yourdomain.com (т.е. где найти клиент-серверный API для вашего сервера), и измените server_name на yourdomain.com.
     После этого вы сможете перейти на https://riot.yourdomain.com, зарегистрировать учетную запись, войти в систему и пообщаться с остальной частью Matrix!

Jitsi meet

Мы установим Jitsi meet, чтобы вы могли проводить собственные видеоконференции. У Вас должен быть установлен Debian или Ubuntu.

echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add -
apt-get update
apt-get -y install jitsi-meet

Мы даем установщику имя хоста jitsi.youdomain.com. Убедитесь, что этот DNS уже настроен, иначе программа установки не удастся!

    Установщик волшебным образом обнаруживает, что у вас установлен nginx, и добавляет соответствующий vhost!

    На данный момент мы выбираем самоподписанный сертификат, а затем обновляем его до LetsEncrypt, после с помощью /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh.

    Теперь вы сможете перейти на https://jitsi.mydomain.com и использовать Jitsi meet напрямую.

Наконец, теперь вы можете указать в Riot использовать новый Jitsi, перейдя в его config.json по адресу /var/www/riot.yourdomian.com/riot/config.json и изменив preferredDomain в блоке jitsi с https://jitsi.riot.im на ваш собственный https://jitsi.yourdomain.com.

Всё готово для использования Jitsi из вашего нового Riot — Riot / Web имеет возможность встроить Jitsi непосредственно в приложение без необходимости использования менеджера интеграции.