Was ist HELIOS?
HELIOS ist eine Web-App, die neben SOLECTRUS auf demselben Server läuft. Sie installiert SOLECTRUS und hält die Konfiguration danach aktuell.
HELIOS installieren
Abschnitt betitelt „HELIOS installieren“Die Installation startet dieser Befehl im Terminal des Servers:
curl -fsSL https://raw.githubusercontent.com/solectrus/helios/main/bootstrap/install.sh | bashDas Skript geht diese Schritte durch:
- Docker – Fehlt es, bietet das Skript an, es über get.docker.com nachzuinstallieren.
- Verzeichnis – Zur Wahl stehen
/opt/solectrus(alsroot),~/solectrusund das aktuelle Verzeichnis. Dort landencompose.yaml,.envund die Daten aller Dienste, auch die Datenbanken. Für eine andere Platte: das Verzeichnis vorher anlegen, hineinwechseln und das Skript dort starten. - Bestehende Installation – Läuft SOLECTRUS auf dem Server schon, erkennt das Skript die Dienste und bietet an, HELIOS dort einzutragen, statt eine neue Installation anzulegen.
- Start – Das Skript erzeugt ein Admin-Passwort, startet die Dienste und nennt am Ende die Adresse:
http://<server>:3999, dazu das Passwort. Es steht auch in der.env.
Die Konfiguration folgt danach im Browser. Der Quelltext des Skripts lässt sich vorher lesen: install.sh.
Was HELIOS verwaltet
Abschnitt betitelt „Was HELIOS verwaltet“SOLECTRUS besteht aus mehreren Docker-Containern, die per docker compose zusammenlaufen. Beschrieben werden sie in zwei Dateien: compose.yaml listet die Dienste, .env enthält die Umgebungsvariablen.
Beide Dateien gehören HELIOS. Es erzeugt sie nach jeder Änderung an der Konfiguration komplett neu. Ansehen lassen sie sich im Browser, unter Konfiguration am unteren Rand.
Die Dienste selbst wissen nichts von HELIOS. Sie lesen nur ihre Umgebungsvariablen. HELIOS entscheidet lediglich, welche Variablen dabei mit welchen Werten in der .env landen.
Die drei Bereiche
Abschnitt betitelt „Die drei Bereiche“Konfiguration
Abschnitt betitelt „Konfiguration“- Sensoren – Welche Messwerte SOLECTRUS führt und woher sie kommen. Rund 50 Sensoren stehen zur Auswahl, von der PV-Erzeugung bis zur Wallbox. Zu jedem Sensor zeigt HELIOS den aktuellen Messwert aus der InfluxDB, so lässt sich die Zuordnung sofort prüfen.
- Datenquellen – Woher die Messwerte kommen: SENEC, Shelly, MQTT oder eine Prognose für die PV-Erzeugung. Bei den Geräten prüft HELIOS auf Knopfdruck, ob sie erreichbar sind und die Zugangsdaten stimmen.
- Grundeinstellungen – Zeitzone, Inbetriebnahme der Anlage, Zugriffsschutz, Farbschema, CO₂-Faktor, eigene Domain samt HTTPS, Speicherorte, Software-Stand und der Betriebsmodus.
Dienste
Abschnitt betitelt „Dienste“Die Übersicht aller Container mit Status, Version und Aktualität. Von hier aus lassen sich einzelne Dienste starten und stoppen oder gleich alle auf einmal. Aktualisieren gibt es nur je Dienst: HELIOS lädt dann das Image neu und erzeugt den Container neu. Die Protokolle jedes Dienstes lassen sich direkt im Browser lesen.
Datensicherung
Abschnitt betitelt „Datensicherung“Sicherungen von Konfiguration und Messwerten, siehe Erstellen von Datensicherungen.
Bestehende Installation übernehmen
Abschnitt betitelt „Bestehende Installation übernehmen“Läuft SOLECTRUS auf dem Server bereits, ist kein Neuanfang nötig. Das Installationsskript erkennt die laufenden Dienste und trägt HELIOS in deren compose.yaml ein, statt eine neue anzulegen.
Beim ersten Aufruf im Browser liest HELIOS compose.yaml und .env ein und übernimmt die bestehende Konfiguration, samt der Sensor-Zuordnungen. Vorher legt es beide Dateien als .bak zur Seite.
Der Container
Abschnitt betitelt „Der Container“HELIOS gehört zu den Diensten, die es verwaltet: Es steht mit einem eigenen Service in der compose.yaml, die es selbst schreibt, und bekommt seine Updates über Watchtower wie jeder andere Dienst.
Zugriff auf Docker
Abschnitt betitelt „Zugriff auf Docker“Die anderen Dienste steuert HELIOS über den Docker-Socket des Hosts, der als Volume in den Container gereicht wird:
volumes: - /var/run/docker.sock:/var/run/docker.sockDamit kann HELIOS Container starten, stoppen, neu erzeugen und ihre Protokolle lesen. Ein entfernter Docker-Host ist deshalb nicht möglich, siehe Was HELIOS nicht kann.
Dazu kommt das cgroup-Verzeichnis des Hosts, nur lesend:
volumes: - /sys/fs/cgroup:/host/sys/fs/cgroup:roDarüber liest HELIOS den tatsächlichen Speicher- und CPU-Verbrauch des Hosts. Ohne dieses Volume sieht ein HELIOS-Container in einem Proxmox-LXC nicht die Werte des Containers, sondern die des physischen Knotens.
Eigene Daten
Abschnitt betitelt „Eigene Daten“Das Verzeichnis, in dem compose.yaml und .env liegen, ist im Container als /data eingehängt. Dort schreibt HELIOS beide Dateien, und dort legt es auch seine eigenen Daten ab:
/data/compose.yaml/data/.env/data/helios/config.yaml/data/helios/primary.sqlite3In config.yaml steht die Konfiguration, so wie sie im Browser eingegeben wurde. Sie ist die Quelle: compose.yaml und .env erzeugt HELIOS daraus, sobald sich die config.yaml geändert hat. Gesichert wird bei einer Datensicherung ebenfalls die config.yaml.
Die SQLite-Datenbank hält den übrigen Zustand von HELIOS, etwa den Verlauf der Datensicherungen.
Erreichbarkeit
Abschnitt betitelt „Erreichbarkeit“Ohne eigene Domain veröffentlicht HELIOS den Port 3999 auf dem Host. Die Oberfläche läuft dann über HTTP, erreichbar unter http://<server>:3999.
Mit einer eigenen Domain samt HTTPS, eingerichtet unter Konfiguration → Grundeinstellungen → Eigene Domain, veröffentlicht der HELIOS-Container selbst keinen Port mehr. Stattdessen nimmt Traefik den Verkehr an und reicht ihn weiter. Die Oberfläche liegt dann auf derselben Domain wie das Dashboard, weiterhin unter Port 3999, aber per HTTPS und mit einem Zertifikat von Let’s Encrypt: https://<domain>:3999.
Updates
Abschnitt betitelt „Updates“Zu den Diensten gehört Watchtower. Es prüft regelmäßig auf neue Versionen und installiert sie automatisch, HELIOS selbst eingeschlossen. Näheres unter Installation von Updates.
Was HELIOS nicht kann
Abschnitt betitelt „Was HELIOS nicht kann“HELIOS verwaltet einen Docker-Host über dessen lokalen Docker-Socket. Daraus ergeben sich ein paar Grenzen:
- Kein Docker Swarm, kein Kubernetes. HELIOS arbeitet mit
docker compose, nicht mit anderen Orchestrierern. - Keine externen Datenbanken. PostgreSQL, Redis und InfluxDB laufen auf demselben Host. Einzige Ausnahme ist eine entfernte InfluxDB im Betriebsmodus Nur Kollektoren.
- Kein entfernter Docker-Host. HELIOS braucht den lokalen
docker.sock. - Keine beliebigen Images. HELIOS erzeugt die
compose.yamlvollständig neu. Beim Übernehmen einer bestehenden Installation muss es daher jeden Dienst kennen. Stößt es auf ein fremdes Image, verweigert es den Import und nennt den Dienst beim Namen. Ein paar bekannte Zusatzdienste wiedozzlelässt es stehen und reicht sie unverändert durch. - Noch kein Tibber-Collector, kein SENEC-Charger. Für diese beiden Dienste gibt es bisher keine Eingabemaske. Neu hinzufügen kann HELIOS sie nicht. In einer bestehenden Installation laufen sie weiter: Beim Übernehmen liest HELIOS ihre Dienste samt Variablen ein, merkt sie sich und schreibt sie unverändert in jede neue
compose.yamlund.env. Siehe Tibber-Collector und SENEC-Charger.
Ein gemischter Betrieb ist trotzdem möglich: Was HELIOS nicht abdeckt, läuft daneben weiter. HELIOS braucht lediglich die alleinige Hoheit über compose.yaml und .env der SOLECTRUS-Dienste. Diese dürfen also nicht zusätzlich von einem anderen Werkzeug verwaltet werden.
Support-Paket
Abschnitt betitelt „Support-Paket“HELIOS erzeugt unter Support auf Knopfdruck ein Support-Paket mit Konfiguration, Protokollen und einer Momentaufnahme des Systems. Wozu es dient, steht unter Support.
Quelltext
Abschnitt betitelt „Quelltext“HELIOS ist in Ruby on Rails implementiert, der Quelltext ist auf GitHub verfügbar:
github.com/solectrus/helios