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.
Beim ersten Aufruf fragt ein Willkommensbildschirm drei Dinge ab, eines pro Seite: das Datum der Inbetriebnahme der PV-Anlage, die Zeitzone und die Währung. Danach öffnet HELIOS die Datenquellen.
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“- Datenquellen – Woher die Messwerte kommen: SENEC, Shelly, MQTT oder eine PV-Prognose. Alle Quellen stehen von Anfang an auf der Seite. Ein Schalter auf der Karte schaltet eine Quelle ein oder aus. Beim Abschalten löscht HELIOS ihre Einstellungen und deaktiviert die Sensoren, die über sie lesen. Bei den Geräten prüft HELIOS auf Knopfdruck, ob sie erreichbar sind und die Zugangsdaten stimmen. Für MQTT betreibt HELIOS auf Wunsch auch den Broker, siehe Mosquitto.
- Sensoren – Welche Messwerte SOLECTRUS führt und woher sie kommen. Rund 50 Sensoren stehen zur Auswahl, von der PV-Erzeugung bis zur Wallbox. Ein Sensor liest über eine eingeschaltete Datenquelle. Zu jedem Sensor zeigt HELIOS den aktuellen Messwert aus der InfluxDB, so lässt sich die Zuordnung sofort prüfen.
- Einstellungen – Betriebsmodus, Grundeinstellungen (Inbetriebnahme, Zeitzone, Währung), Software-Stand, Adresse & Domain, InfluxDB, Zugriffsschutz, Ingest, Speicherorte, dynamische Strompreise samt preisoptimierter Speicherbeladung, CO₂-Faktor und Farbschema.
Ein Warnzeichen markiert eine Datenquelle oder Einstellung, die noch unvollständig ist. Solange eines zu sehen ist, startet HELIOS keine Dienste.
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.
Was HELIOS nicht übernehmen kann, stoppt den Import. Die Meldung nennt das Hindernis:
- Eigene Traefik-Regeln. Das Routing der eigenen Dienste schreibt HELIOS selbst. Eine Regel, die etwa ein Rate-Limit oder einen Passwortschutz vor das Dashboard setzt, muss vorher aus der
compose.yamlverschwinden. Alternativ läuft der Reverse Proxy als externer Proxy neben SOLECTRUS weiter, siehe Erreichbarkeit. - Ein eigener MQTT-Broker. Den Broker betreibt HELIOS selbst. Er wird aus der
compose.yamlentfernt und nach dem Import unter Konfiguration → Datenquellen → MQTT eingeschaltet, siehe Mosquitto.
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“Wie SOLECTRUS erreichbar ist, legt Konfiguration → Einstellungen → Adresse & Domain fest. Drei Varianten stehen zur Wahl.
Direkt über IP-Adresse oder Hostname. HELIOS veröffentlicht den Port 3999 auf dem Host. Die Oberfläche läuft dann über HTTP, erreichbar unter http://<server>:3999.
Eigene Domain über internen Traefik. HELIOS richtet Traefik als Reverse Proxy ein und schreibt dessen Routen selbst. Der HELIOS-Container veröffentlicht dann keinen Port mehr, Traefik nimmt den Verkehr an und reicht ihn weiter. Die Oberfläche liegt auf derselben Domain wie das Dashboard, weiterhin unter Port 3999, aber per HTTPS und mit einem Zertifikat von Let’s Encrypt: https://<domain>:3999. Ein Knopf prüft vor dem Speichern, ob die Domain auf diesen Server zeigt.
Eigene Domain über externen Reverse Proxy. Ein vorhandener Proxy, etwa Traefik, nginx oder Caddy, nimmt den Verkehr an. Er erreicht die Dienste auf einem von zwei Wegen:
- Über veröffentlichte Ports auf dem Host. Das passt für einen Proxy, der direkt auf dem Host oder auf einem anderen Rechner läuft. Für Traefik erzeugt HELIOS eine Konfigurationsdatei, die sich in den Proxy übernehmen lässt.
- Über ein gemeinsames Docker-Netzwerk. Das passt für einen Proxy, der selbst in Docker läuft. Die Dienste treten dem Netzwerk bei und veröffentlichen keinen Port mehr auf dem Host. Das Netzwerk gehört zum Stack des Proxys und muss vor dem Start existieren. Ist ein Traefik-Entrypoint angegeben, schreibt HELIOS die Routen gleich als Labels an die Dienste.
Hinter einem externen Proxy liegt das Dashboard unter der Domain selbst, HELIOS unter helios.<domain>, InfluxDB unter influxdb.<domain> und Ingest unter ingest.<domain>. Die Option HTTPS erzwingen ist dabei von Anfang an eingeschaltet.
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. - Kein zweites Verwaltungswerkzeug.
compose.yamlund.envschreibt HELIOS selbst. Liegen die SOLECTRUS-Dienste als Stack in Portainer oder einem ähnlichen Werkzeug, gehören die Dateien diesem Werkzeug. Beides nebeneinander geht nicht. - 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.
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.
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