Zum Inhalt springen

Allgemeine Konfiguration des Dashboards

Das Dashboard wird über Umgebungsvariablen konfiguriert.

Zeitzone gemäß Liste. Standardwert ist Europe/Berlin.

Sie bestimmt, wo ein Tag anfängt und aufhört. Diagramme, Statistiken und die Zeitraumauswahl richten sich danach. Eine falsche Zeitzone verschiebt also alle Tages- und Monatswerte.

Beispiel
TZ=Europe/Rome

Währung für Preise, Kosten und Ersparnis, als ISO-4217-Code. Standardwert ist EUR. Kleinschreibung ist erlaubt, das Dashboard wandelt sie in Großbuchstaben.

Version 1.2 wertet die Variable noch nicht aus. Sie wirkt erst in der Entwicklungsversion des Dashboards.

Beispiel
CURRENCY=CHF

Hostname, unter dem das Dashboard erreichbar ist. Hier gehört nur der Host hin, kein http:// oder https:// und keine Portnummer.

Gesetzt wirkt die Variable als CORS-Freigabe: Nur Webseiten von diesem Ursprung dürfen Antworten des Dashboards im Browser auslesen. Der Server weist deshalb keine Anfragen ab, die Sperre setzt der Browser durch. Ohne die Variable bleibt das Auslesen für alle Ursprünge frei.

Beispiel
APP_HOST=solectrus.example.com

Leitet jeden Aufruf auf HTTPS um. Erlaubt sind true und false, Standardwert ist false.

Auf true gehört der Wert nur, wenn ein Reverse Proxy mit TLS-Zertifikat davorsteht. Sonst läuft die Umleitung ins Leere und das Dashboard ist nicht mehr erreichbar.

Beispiel
FORCE_SSL=true

Komma-getrennte Liste von IP-Bereichen in CIDR-Notation, die als vertrauenswürdige Proxies gelten. Ohne die Variable akzeptiert das Dashboard nur lokale und Docker-interne Adressen als Proxy.

Nötig ist sie, wenn ein fremder Reverse Proxy davorsteht, etwa Cloudflare. Erst dann liest das Dashboard die echte Client-IP aus X-Forwarded-For, statt die des Proxys zu protokollieren.

Verfügbar ab Dashboard-Version 1.1.

Beispiel
TRUSTED_PROXY_RANGES=173.245.48.0/20,103.21.244.0/22

Geheimer Schlüssel, mit dem das Dashboard die Session-Cookies signiert. Ohne ihn startet das Dashboard nicht.

Erzeugt wird er etwa mit openssl rand -hex 64, das ergibt 128 Zeichen. Er muss geheim bleiben und sich nicht mehr ändern: Ein neuer Schlüssel entwertet alle Sessions, und wer mit ADMIN_PASSWORD oder LOCKUP_CODEWORD angemeldet war, muss sich erneut anmelden.

Beispiel
SECRET_KEY_BASE=6cce2d6cb3c86ae77f4a0471357830950b323eab4a99ee0e1b196dfd4767e6bf59c20c6404b64f66e67bdbd59aca37e9e2786d887010e16078d620e48186de88

Anzahl der Web-Worker-Prozesse, eine Ganzzahl. Standardwert ist 0, also ein einzelner Prozess ohne Worker.

Mehr Worker bedienen mehr gleichzeitige Anfragen, brauchen aber jeweils eigenen Arbeitsspeicher. Für eine Handvoll Nutzer im Haushalt bringt das nichts.

Beispiel
WEB_CONCURRENCY=3

Passwort für den Administrator. Nur er kann sich über die Web-Oberfläche anmelden und dort Einstellungen vornehmen, etwa Strompreise pflegen.

Ohne die Variable startet das Dashboard trotzdem. Eine Anmeldung als Administrator ist dann aber unmöglich, und die Strompreise bleiben unerreichbar.

Beispiel
ADMIN_PASSWORD=my-super-secret-password

Datum, an dem die PV-Anlage die ersten Erträge geliefert hat, im Format YYYY-MM-DD. Standardwert ist 2020-01-01.

Vor diesem Datum bietet die Navigation keine Zeiträume an. Ein zu früh gesetztes Datum füllt die Auswahl also mit leeren Jahren.

Beispiel
INSTALLATION_DATE=2024-01-15

Faktor zur Berechnung der eingesparten CO₂-Menge, in g/kWh. Er beziffert, wie viel CO₂ eine Kilowattstunde aus dem Netz verursacht, entspricht also dem Strommix. Standardwert ist 401, das ist der deutsche Strommix laut Umweltbundesamt.

Beispiel
CO2_EMISSION_FACTOR=420

Codewort, das die gesamte Web-Oberfläche sperrt. Ist es gesetzt, lässt sich das Dashboard erst nach Eingabe des Codeworts benutzen. Ohne die Variable bleibt die Oberfläche offen.

Nötig ist es, wenn das Dashboard aus dem Internet erreichbar ist und niemand sonst die Messwerte sehen soll. Das Codewort ist nicht mit dem ADMIN_PASSWORD zu verwechseln, das nur die Einstellungen absichert.

Beispiel
LOCKUP_CODEWORD=my-secret-codeword

Ursprünge, die das Dashboard per iframe einbetten dürfen, komma-getrennt. Ohne die Variable verweigert das Dashboard jede Einbettung.

Nötig ist sie, wenn das Dashboard in einer anderen Oberfläche erscheinen soll, etwa in Home Assistant.

Beispiel
FRAME_ANCESTORS=https://example.com

Farbschema der Web-Oberfläche, light oder dark. Ist eines gesetzt, steht das Farbschema fest und lässt sich über die Oberfläche nicht mehr umschalten. Gedacht ist das für Displays ohne Bedienung, etwa Digital Signage. Ohne die Variable wählt der Benutzer selbst.

Jeder andere Wert lässt das Dashboard beim Start abbrechen.

Beispiel
UI_THEME=dark

Hostname des PostgreSQL-Servers. Läuft PostgreSQL im selben Docker-Netzwerk, ist das der Name des Docker-Services, also postgresql.

Beispiel
DB_HOST=postgresql

Benutzername für den Zugriff auf PostgreSQL.

Beispiel
DB_USER=postgres

Passwort für den Zugriff auf PostgreSQL. Es muss zu dem Passwort passen, mit dem die Datenbank angelegt wurde.

Beispiel
DB_PASSWORD=my-postgres-password

URL für die Verbindung zu Redis. Läuft Redis im selben Docker-Netzwerk, lautet sie redis://redis:6379/1.

Das Dashboard hält darin seinen Cache und verteilt darüber die Live-Aktualisierung der Kacheln. Ohne Redis startet es zwar, aber die Werte aktualisieren sich nicht mehr von selbst.

Beispiel
REDIS_URL=redis://redis:6379/1

Hostname des InfluxDB-Servers. Läuft InfluxDB im selben Docker-Netzwerk, ist das der Name des Docker-Services, also influxdb. Es kann aber auch ein externer Server sein, etwa influxdb.example.com.

Beispiel
INFLUX_HOST=influxdb

Schema für die Verbindung zu InfluxDB, http oder https. Standardwert ist http. Bei einer externen InfluxDB mit TLS gehört hier https hin.

Beispiel
INFLUX_SCHEMA=https

Port für die Verbindung zu InfluxDB, eine Ganzzahl. Standardwert ist 8086. Bei einer externen, per TLS abgesicherten InfluxDB ist es oft 443.

Beispiel
INFLUX_PORT=443

Organisation in InfluxDB, unter der die Messwerte liegen. In einer SOLECTRUS-Installation heißt sie solectrus.

Der Name muss zu der Organisation passen, die in InfluxDB tatsächlich existiert, und zu der, in die die Collectors schreiben. Passt er nicht, liest das Dashboard ins Leere und die Kurven bleiben leer.

Beispiel
INFLUX_ORG=solectrus

Bucket in InfluxDB, aus dem das Dashboard die Messwerte liest. Eine SOLECTRUS-Installation kommt mit einem einzigen aus, er heißt solectrus.

Der Name muss zu dem Bucket passen, in den die Collectors schreiben. Passt er nicht, bleiben die Kurven leer.

Beispiel
INFLUX_BUCKET=solectrus

Token, mit dem sich das Dashboard bei InfluxDB anmeldet. Er muss dort existieren und das Recht haben, aus dem angegebenen Bucket zu lesen. Mehr braucht das Dashboard nicht: Es holt Messwerte und schreibt nie welche zurück.

Passt der Token nicht, weist InfluxDB jede Abfrage ab. Das Dashboard läuft dann weiter, protokolliert aber Fehler, und die Kurven bleiben leer.

Beispiel
INFLUX_TOKEN=my-super-secret-read-token

Welcher Messwert in der InfluxDB welchem Sensor des Dashboards zugeordnet wird, steht auf einer eigenen Seite:
Sensor-Konfiguration des Dashboards.