VPN Cloud Mesh im Einsatz
Motivation
Die Idee zu diesem Teilprojekt kam mir, nachdem Freunde von mir ein ähnlich komplexes Smarthome anfingen zu bauen. Jeder hat hierzu natürlich auch sein eigenes Serverkonzept auf dem verschiedenste Dienste laufen. Was lag da also näher als zu versuchen ein generisches deployment auf die Beine zu stellen.
Zu diesem Zeitpunkt war ich schon seit einer Weile dabei mein Smartserver Deployment zu refactoren und individuelle Konfigurationsteile auszulagern. Teil des Refactorings waren auch die bemühungen es unter RedHat zum laufen zu bekommen. Einfach um zu schauen wie einfach es ist und um die Wahl zu haben.
Am Ende stand ein Setup welches komplett generisch ist und über einen individuellen config Teil an die eigenen Bedürfnisse angepasst werden kann.
Warum ein eigenes VPN cloud mesh
Nachdem nun das Deployment in 3 unterschiedlichen Umgebungen lief, kam die Idee auf, noch mehr Dinge zu teilen. Um dies auf einem sicherem Weg zu ermöglichen wurde ein verschlüsseltes Cloud Mesh aufgesetzt. Hierzu wird auf jedem Server jeweils ein Container gestartet welche sich über ein Wireguard Mesh miteinander verbinden. Jeder Container hat sein eigenes privates Netzwerk welches den jeweils anderen Containern verfügbar gemacht wird. Will man jetzt bestimmte Dienste oder Daten miteinander teilen brauchen diese nur innerhalb dieses Netzes angeboten werden. Dies geschied überlicherweise über einen weiteren Container welcher in das Netz eingehangen wird.
Cloud Backup
Dies ist der erste Anwendungsfall. Jeder Smartserver verfügt natürlich über ein Festplatten RAID welches schon ein gewisses Maß an Ausfallsicherheit bietet. Da dies aber im Falle von Lebenslang gesammelten persönlichen Daten wie Fotos, Dokumenten etc. nicht ausreicht habe ich mir Gedanken über ein räumlich getrenntes Backup gemacht.
Als erstes kam hier mein Projekt Cloudsync, welches Daten verschlüsselt auf GoogleDrive speichert, zum Einsatz. Irgendwann bin ich hier aber an die Grenzen meines Datenvolumens bei Google gestossen.
Nach kurzer Überlegung kam die Idee auf, die einzelnen Smartserver Deployments als räumlich getrennte Backups zu nutzen. Auf jedem Server wird hierzu ein NFS Server als Container deployed welches den jeweils anderen Servern ein Netzlaufwerk bereit stellt. Auf dieses Laufwerk werden wiederum mittels rclone alle Daten verschlüsselt synchronisiert.
Cloud Sensor Data
Der zweite Anwendungsfall ist das gegenseitige Bereitstellen von Sensordaten. Nachdem ich mit meiner Wetterstation fertig war, gab es natürlich Interesse daran auf diese Daten zuzugreifen. Also überlegte ich wie man das auf eine generische Art und Weise realisieren könnte.
Hierzu wird auf jedem Server ein zusätzlicher MQTT Broker deployed welcher exclusiv Teil des Cloud Netzwerkes ist. Diese MQTT Broker wiederum synchronisieren gegenseitig Ihre Daten. d.h. egal welche Daten irgendwo published werden, sie sind überall verfügbar.
Jetzt kann ich in meiner openHAB Instanz entscheiden welche Daten ich teilen möchte und publishe entsprechend jede Änderung dieser Daten auf den Cloud MQTT Broker. Am anderem Ende subscriben die Remote openHAB Instanzen alle Werte an denen sie interessiert sind.