Приготовление Матрицы В Домашних Условиях

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



Приготовление Матрицы в домашних условиях

Matrix — открытый протокол обмена мгновенными сообщениями (на основе децентрализованных серверов), который позволяет пользователям обмениваться текстовыми сообщениями и файлами, совершать голосовые и видеозвонки, создавать каналы чата и т. д. Самый известный клиент сети Matrix — Riot.im, реализованный в виде мобильного, веб- или настольного приложения.

По функциональности он не уступает клиентам современных мессенджеров Slack/Telegram/WhatsApp. Итак, после установки на смартфон (сервером сложно пользоваться, когда он находится в кармане и постоянно меняет адрес и способ подключения — WiFi/3G/4G), следующим шагом стал перенос системы на один Raspberry Pi. Фронтенд - реализация Серверы Synapse на Python , back-end — база данных PostgreSQL из стандартного дистрибутива Raspbian for Raspberry Pi. Подключение к Интернету осуществляется через переадресацию портов (порт 8448) на домашнем модеме vDSL со статическим внешним IP-адресом.

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

Чтобы улучшить ситуацию, переднюю часть перенесли на безвентиляторный вариант. Одроид-XU4 (8 ядер ARM, 2 Гб ОЗУ, цена сервера — $59), а затем база данных PostgreSQL была перенесена на второй ODROID-XU4.

Приготовление Матрицы в домашних условиях

Был добавлен USB-переключатель Ethernet (20 долларов США) для подключения серверов по витой паре, внешний USB-накопитель емкостью 2 ТБ, а также 6-портовое зарядное устройство USB для питания 3 Raspberry Pi и коммутатора Ethernet. Освобожденные Raspberry Pi были преобразованы: межсетевой экран для обеспечения DMZ, сервер Zabbix для мониторинга, сервер горячего резерва для базы данных PostgreSQL (находится в другой комнате).

Был добавлен еще один Raspberry Pi с модулем мобильного доступа в Интернет, чтобы обеспечить второй канал связи через модуль 4G для Raspberry Pi. Кроме того, был добавлен источник бесперебойного питания UPS. При установке система выглядела так (размещается внутри электрокамина):

Приготовление Матрицы в домашних условиях

Размер серверной базы данных Synapse за шесть месяцев вырос на ~325 Мб:

Приготовление Матрицы в домашних условиях

Размер базы данных системы мониторинга Zabbix вырос до 1,25 Гб и скоро стабилизируется:

Приготовление Матрицы в домашних условиях

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

Приготовление Матрицы в домашних условиях

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

Приготовление Матрицы в домашних условиях

График фронтальной нагрузки за 3 дня:

Приготовление Матрицы в домашних условиях

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

Все вышеперечисленное можно реализовать на недорогом VPS в любом дата-центре, но если оно надежно работает дома, то почему бы не сделать это на домашнем оборудовании? Теги: #arm #Raspberry Pi #Системное администрирование #postgresql #мессенджеры #Социальные сети и сообщества #Настройка Linux #Matrix #Системы обмена сообщениями #odroid #synapse #Ubuntu Touch

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.