# Allgemeine Konfiguration des Dashboards

> Alle Umgebungsvariablen des Dashboards, von der Zeitzone über die Zugänge zu den Datenbanken bis zum Farbschema.

Das Dashboard wird über Umgebungsvariablen konfiguriert.

## Umgebungsvariablen

### `TZ`<span class="badge optional"></span>

Zeitzone gemäß [Liste](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). 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.

```properties title="Beispiel"
TZ=Europe/Rome
```

> **HELIOS**
>
>
> HELIOS fragt die Zeitzone unter _Konfiguration → Grundeinstellungen → PV-Anlage_ ab, vorbelegt mit `Europe/Berlin`.
>

### `CURRENCY`<span class="badge optional"></span>

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.

```properties title="Beispiel"
CURRENCY=CHF
```

> **HELIOS**
>
>
> HELIOS fragt die Währung unter _Konfiguration → Grundeinstellungen → PV-Anlage_ ab, vorbelegt mit Euro.
>

### `APP_HOST`<span class="badge optional"></span>

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.

```properties title="Beispiel"
APP_HOST=solectrus.example.com
```

> **HELIOS**
>
>
> HELIOS fragt die Adresse unter _Konfiguration → Grundeinstellungen → Host_ ab. Bleibt das Feld leer, trägt HELIOS `localhost` ein.
>

### `FORCE_SSL`<span class="badge optional"></span>

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.

```properties title="Beispiel"
FORCE_SSL=true
```

> **HELIOS**
>
>
> HELIOS setzt den Wert automatisch: `true`, sobald es Traefik als Reverse Proxy einrichtet, sonst `false`. Einzustellen gibt es nichts.
>

### `TRUSTED_PROXY_RANGES`<span class="badge optional"></span>

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.

```properties title="Beispiel"
TRUSTED_PROXY_RANGES=173.245.48.0/20,103.21.244.0/22
```

> **HELIOS**
>
>
> HELIOS fragt die Bereiche unter _Konfiguration → Grundeinstellungen → Eigene Domain_ ab. Das Feld erscheint erst, wenn dort eine eigene Domain eingerichtet ist.
>

### `SECRET_KEY_BASE`<span class="badge required"></span>

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`](#admin_password) oder [`LOCKUP_CODEWORD`](#lockup_codeword) angemeldet war, muss sich erneut anmelden.

```properties title="Beispiel"
SECRET_KEY_BASE=6cce2d6cb3c86ae77f4a0471357830950b323eab4a99ee0e1b196dfd4767e6bf59c20c6404b64f66e67bdbd59aca37e9e2786d887010e16078d620e48186de88
```

> **HELIOS**
>
>
> HELIOS erzeugt den Schlüssel bei der Installation. Einzustellen gibt es nichts.
>

### `WEB_CONCURRENCY`<span class="badge optional"></span>

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.

```properties title="Beispiel"
WEB_CONCURRENCY=3
```

> **HELIOS**
>
>
> HELIOS setzt fest `0`. Einzustellen gibt es nichts.
>

### `ADMIN_PASSWORD`<span class="badge optional"></span>

Passwort für den Administrator. Nur er kann sich über die Web-Oberfläche [anmelden](/docs/bedienung/administrator/) 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.

```properties title="Beispiel"
ADMIN_PASSWORD=my-super-secret-password
```

> **HELIOS**
>
>
> HELIOS fragt das Passwort unter _Konfiguration → Grundeinstellungen → Zugriffsschutz_ ab und setzt die Variable immer. Bleibt das Feld leer, leitet HELIOS ein Passwort aus dem [`SECRET_KEY_BASE`](#secret_key_base) ab.
>

### `INSTALLATION_DATE`<span class="badge optional"></span>

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.

```properties title="Beispiel"
INSTALLATION_DATE=2024-01-15
```

> **HELIOS**
>
>
> HELIOS fragt das Datum unter _Konfiguration → Grundeinstellungen → PV-Anlage_ ab.
>

### `CO2_EMISSION_FACTOR`<span class="badge optional"></span>

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.

```properties title="Beispiel"
CO2_EMISSION_FACTOR=420
```

> **HELIOS**
>
>
> HELIOS fragt den Faktor unter _Konfiguration → Grundeinstellungen → CO₂-Faktor_ ab, vorbelegt mit `401`.
>

### `LOCKUP_CODEWORD`<span class="badge optional"></span>

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`](#admin_password) zu verwechseln, das nur die Einstellungen absichert.

```properties title="Beispiel"
LOCKUP_CODEWORD=my-secret-codeword
```

> **HELIOS**
>
>
> HELIOS fragt das Codewort unter _Konfiguration → Grundeinstellungen → Zugriffsschutz_ ab.
>

### `FRAME_ANCESTORS`<span class="badge optional"></span>

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.

```properties title="Beispiel"
FRAME_ANCESTORS=https://example.com
```

> **HELIOS**
>
>
> HELIOS fragt die URL unter _Konfiguration → Grundeinstellungen → Netzwerk_ ab.
>

### `UI_THEME`<span class="badge optional"></span>

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.

```properties title="Beispiel"
UI_THEME=dark
```

> **HELIOS**
>
>
> HELIOS fragt das Farbschema unter _Konfiguration → Grundeinstellungen → Farbschema_ ab, vorbelegt mit der freien Wahl durch den Benutzer.
>

### `DB_HOST`<span class="badge required"></span>

Hostname des [PostgreSQL](/docs/referenz/postgresql/)-Servers. Läuft PostgreSQL im selben Docker-Netzwerk, ist das der Name des Docker-Services, also `postgresql`.

```properties title="Beispiel"
DB_HOST=postgresql
```

> **HELIOS**
>
>
> HELIOS setzt den Hostnamen automatisch auf `postgresql`. Einzustellen gibt es nichts.
>

### `DB_USER`<span class="badge required"></span>

Benutzername für den Zugriff auf [PostgreSQL](/docs/referenz/postgresql/).

```properties title="Beispiel"
DB_USER=postgres
```

> **HELIOS**
>
>
> HELIOS setzt fest `postgres`. Einzustellen gibt es nichts.
>

### `DB_PASSWORD`<span class="badge required"></span>

Passwort für den Zugriff auf [PostgreSQL](/docs/referenz/postgresql/). Es muss zu dem Passwort passen, mit dem die Datenbank angelegt wurde.

```properties title="Beispiel"
DB_PASSWORD=my-postgres-password
```

> **HELIOS**
>
>
> HELIOS erzeugt das Passwort bei der Installation und gibt Dashboard und Datenbank denselben Wert. Einzustellen gibt es nichts.
>

### `REDIS_URL`<span class="badge required"></span>

URL für die Verbindung zu [Redis](/docs/referenz/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.

```properties title="Beispiel"
REDIS_URL=redis://redis:6379/1
```

> **HELIOS**
>
>
> HELIOS setzt fest `redis://redis:6379/1`. Einzustellen gibt es nichts.
>

### `INFLUX_HOST`<span class="badge required"></span>

Hostname des [InfluxDB](/docs/referenz/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`.

```properties title="Beispiel"
INFLUX_HOST=influxdb
```

> **HELIOS**
>
>
> HELIOS setzt den Hostnamen fest auf `influxdb`, auch bei aktivem [Ingest-Dienst](/docs/referenz/ingest/): Das Dashboard liest direkt aus InfluxDB, Ingest nimmt nur Schreibzugriffe entgegen. Eine externe InfluxDB lässt sich für das Dashboard nur außerhalb von HELIOS anbinden.
>

### `INFLUX_SCHEMA`<span class="badge optional"></span>

Schema für die Verbindung zu [InfluxDB](/docs/referenz/influxdb/), `http` oder `https`. Standardwert ist `http`. Bei einer externen InfluxDB mit TLS gehört hier `https` hin.

```properties title="Beispiel"
INFLUX_SCHEMA=https
```

> **HELIOS**
>
>
> HELIOS setzt fest `http`, denn innerhalb des Docker-Netzwerks wird nicht verschlüsselt. Einzustellen gibt es nichts.
>

### `INFLUX_PORT`<span class="badge optional"></span>

Port für die Verbindung zu [InfluxDB](/docs/referenz/influxdb/), eine Ganzzahl. Standardwert ist `8086`. Bei einer externen, per TLS abgesicherten InfluxDB ist es oft `443`.

```properties title="Beispiel"
INFLUX_PORT=443
```

> **HELIOS**
>
>
> HELIOS setzt fest `8086`. Einzustellen gibt es nichts.
>

### `INFLUX_ORG`<span class="badge required"></span>

Organisation in [InfluxDB](/docs/referenz/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.

```properties title="Beispiel"
INFLUX_ORG=solectrus
```

> **HELIOS**
>
>
> HELIOS gibt `solectrus` vor. Einzustellen gibt es nichts.
>

### `INFLUX_BUCKET`<span class="badge required"></span>

Bucket in [InfluxDB](/docs/referenz/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.

```properties title="Beispiel"
INFLUX_BUCKET=solectrus
```

> **HELIOS**
>
>
> HELIOS gibt `solectrus` vor. Einzustellen gibt es nichts.
>

### `INFLUX_TOKEN`<span class="badge required"></span>

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.

```properties title="Beispiel"
INFLUX_TOKEN=my-super-secret-read-token
```

> **HELIOS**
>
>
> HELIOS gibt dem Dashboard den Lese-Token, siehe [`INFLUX_TOKEN_READ`](/docs/referenz/helios/konfiguration/#influx_token_read). Schreib- oder Admin-Zugriff bekommt es nicht.
>

### `INFLUX_POLL_INTERVAL`

> **Wird ignoriert**
>
>
> Diese Variable wird seit Dashboard-Version 1.2 ignoriert. Das Abfrageintervall ermittelt das Dashboard selbst aus dem Alter der eingehenden Messwerte. Steht sie noch in der Konfiguration, protokolliert das Dashboard beim Start eine Warnung. Sie kann ersatzlos entfallen.
>

## Sensor-Konfiguration

Welcher Messwert in der InfluxDB welchem Sensor des Dashboards zugeordnet wird, steht auf einer eigenen Seite: \
[Sensor-Konfiguration des Dashboards](/docs/referenz/dashboard/sensor-konfiguration/).
