Готовим Matrix в домашних условиях

в 7:02, , рубрики: matrix, odroid, postgresql, Raspberry Pi, synapse, ubuntu touch, Настройка Linux, системное администрирование, Системы обмена сообщениями, Социальные сети и сообщества

Началось все с небольшого эксперимента по установке сервера обмена сообщениями Synapse на смартфоне с операционной системой Ubuntu Touch, а закончилось созданием маленького домашнего дата-центра на 5 ARM мини-серверах (Raspberry Pi и ODROID-XU4), основная функция которых — обеспечение работы системы обмена сообщениями / звонками по протоколу Matrix и WebRTS для 10 пользователей.
Готовим Matrix в домашних условиях - 1
Matrix — это открытый протокол мгновенного обмена сообщениями (базирующийся на децентрализованных серверах), который позволяет пользователям осуществлять обмен текстовыми сообщениями и файлами, выполнять голосовые и видео звонки, создавать чат-каналы и т.п.

Наиболее известный клиент для сети Matrix — Riot.im, реализован в виде мобильного, web или десктопного приложения. По функциональности не уступает клиентам современных мессенджеров Slack / Telegram / WhatsApp.

Итак, после установки на смартфон (сервером сложно пользоваться, когда он находится у тебя в кармане и все время меняет свой адрес и метод подключения — WiFi / 3G / 4G), следующим этапом был перенос системы на один Raspberry Pi. Фрон-энд — реализация сервера Synapse на Python, бэк-энд — база данных PostgreSQL из стандартного дистрибутива Raspbian for Raspberry Pi.

Подключение к интернет — через port forwarding (порт 8448) на домашнем vDSL модеме со статическим внешним IP адресом.

Все работало, но иногда со «скрипом» — периодически возникали задержки — подключение клиентов занимало несколько секунд, тайм-ауты при подключении к сторонним каналам / комнатам matrix.org.

После переноса базы данных PostgreSQL на второй Raspberry Pi производительность заметно улучшилась, но все равно иногда возникала 100% загрузка одного из ядер процессора в течение нескольких минут (на стороне фронт-энда).

Для улучшения ситуации фронт-энд был перенесен на безвентиляторный ODROID-XU4 (8 ARM ядер, 2 Gb оперативной памяти, цена сервера — $59), а затем и база данных PostgreSQL была перенесена на второй ODROID-XU4.

Готовим Matrix в домашних условиях - 2

Добавились USB Ethernet свитч ($20) для связи серверов по витой паре, внешний USB диск на 2 Tb, а также 6-портовая USB зарядка для питания 3-х Raspberry Pi и Ethernet свитча.
Освободившиеся Raspberry Pi были сконвертированы: firewall для обеспечения DMZ, сервер Zabbix для мониторинга, сервер hot standby для базы данных PostgreSQL (находится в другой комнате). Еще один Raspberry Pi c модулем доступа к мобильному интернету был добавлен для получения второго канала связи через 4G модуль для Raspberry Pi.

Кроме этого, был добавлен источник бесперебойного питания UPS.

В процессе монтажа система выглядела вот так (размещена внутри электрокамина):

Готовим Matrix в домашних условиях - 3

Размер базы данных бэк-энда Synapse вырос за полгода на ~ 325 Mb:

Готовим Matrix в домашних условиях - 4

Размер базы данных системы мониторинга Zabbix вырос до 1.25 Gb и скоро стабилизируется:

Готовим Matrix в домашних условиях - 5

Загрузка внешней сети (график за 7 дней):

Готовим Matrix в домашних условиях - 6

Загрузка внутренней сети (график за 7 дней):

Готовим Matrix в домашних условиях - 7

График нагрузки на фронт-энде за 3 дня:

Готовим Matrix в домашних условиях - 8

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

Все вышесказанное можно реализовать на недорогих VPS в любом датацентре, но если это работает стабильно дома, то почему бы не сделать это на домашнем оборудовании?

Автор: tm3

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js