Розробка

Готуємо Matrix в домашніх умовах

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

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.

Додалися 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.

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

Розмір бази даних бек-енду Synapse зріс за півроку на ~ 325 Mb:

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

Завантаження зовнішньої мережі (графік за 7 днів):

Завантаження внутрішньої мережі (графік за 7 днів):

Графік навантаження на фронт-енд за 3 дні:

При включеному шифруванні на клієнтів у базі даних зберігаються зашифровані дані, тому навіть фізичний доступ до сервера не призведе до витоку даних.

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

Related Articles

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Check Also

Close
Close