Alles begann mit einem kleinen Experiment zur Installation des Synapse-Messaging-Servers auf einem
Smartphone mit dem Ubuntu Touch-Betriebssystem. Am Ende wurde ein kleines Heim-Rechenzentrum auf 5 ARM-Miniservern (Raspberry Pi und ODROID-XU4) erstellt, dessen Hauptfunktion darin besteht, den Betrieb des Austauschsystems sicherzustellen Matrix- und WebRTS-Nachrichten / Anrufe für 10 Benutzer.

Matrix ist ein offenes Instant Messaging-Protokoll (basierend auf dezentralen Servern), mit dem Benutzer Textnachrichten und Dateien austauschen, Sprach- und Videoanrufe tätigen, Chat-Kanäle erstellen usw. können.
Der bekannteste Client für das Matrix-Netzwerk ist Riot.im, das als mobile, Web- oder Desktop-Anwendung implementiert ist. Die Funktionalität ist Kunden moderner Instant Messenger Slack / Telegram / WhatsApp nicht unterlegen.
Nach der Installation auf einem Smartphone (der Server ist in der Tasche schwer zu bedienen und ändert ständig seine Adresse und Verbindungsmethode - WiFi / 3G / 4G) bestand der nächste Schritt darin, das System auf einen Raspberry Pi zu übertragen. Front-End - Implementierung des
Synapse-Servers in Python , Back-End - PostgreSQL-Datenbank aus der Standarddistribution von Raspbian für Raspberry Pi.
Verbindung zum Internet - über Portweiterleitung (Port 8448) auf dem vDSL-Heimmodem mit einer statischen externen IP-Adresse.
Alles funktionierte, aber manchmal mit einem "Knarren" - es gab periodische Verzögerungen - dauerte das Verbinden von Clients einige Sekunden, Zeitüberschreitungen beim Verbinden mit Kanälen / Räumen von Drittanbietern von matrix.org.
Nach dem Übertragen der PostgreSQL-Datenbank auf den zweiten Raspberry Pi verbesserte sich die Leistung merklich, aber manchmal war einer der Prozessorkerne für einige Minuten (am Frontend) zu 100% ausgelastet.
Um die Situation zu verbessern, wurde das Front-End auf lüfterloses
ODROID-XU4 (8 ARM-Kerne, 2 GB RAM, Serverpreis - 59 US-Dollar) übertragen, und anschließend wurde die PostgreSQL-Datenbank auf das zweite ODROID-XU4 übertragen.

Ein USB-Ethernet-Switch (20 US-Dollar) für den Anschluss von Twisted-Pair-Servern, ein externes 2-TB-USB-Laufwerk sowie ein 6-Port-USB-Ladegerät für die Stromversorgung von 3 Raspberry Pi und Ethernet-Switches wurden hinzugefügt.
Die freigegebenen Raspberry Pi wurden konvertiert: Firewall zur Bereitstellung von DMZ, Zabbix-Server für die Überwachung, Hot-Standby-Server für die PostgreSQL-Datenbank (in einem anderen Raum). Ein weiterer Raspberry Pi mit einem mobilen Internetzugangsmodul wurde hinzugefügt, um einen zweiten Kommunikationskanal über ein 4G-Modul für den Raspberry Pi zu empfangen.
Zusätzlich wurde eine unterbrechungsfreie USV hinzugefügt.
Während der Installation sah das System folgendermaßen aus (in einem elektrischen Kamin):

Die Größe der Synapse-Backend-Datenbank ist seit sechs Monaten um ~ 325 MB gewachsen:

Die Größe der Datenbank des Zabbix-Überwachungssystems ist auf 1,25 GB angewachsen und stabilisiert sich bald:

Externe Netzwerklast (7-Tage-Zeitplan):

Interne Netzwerklast (7-Tage-Zeitplan):

Frontend-Lastdiagramm für 3 Tage:

Wenn die Verschlüsselung aktiviert ist, speichern die Clients verschlüsselte Daten in der Datenbank, sodass selbst der physische Zugriff auf den Server nicht zu Datenlecks führt.
All dies kann auf kostengünstigem VPS in jedem Rechenzentrum implementiert werden. Wenn es jedoch zu Hause stabil funktioniert, warum nicht auf Heimgeräten?