# Konfiguration von HELIOS

> Die wenigen Umgebungsvariablen, die HELIOS selbst liest, und die Tokens, die es für die übrigen Dienste erzeugt.

HELIOS liest selbst nur wenige Umgebungsvariablen. Alle teilt es sich mit dem [Dashboard](/docs/referenz/dashboard/).

Dazu kommen die Tokens für den Zugriff auf InfluxDB. Die liest HELIOS nicht, es erzeugt sie und verteilt sie an die übrigen Dienste.

## Umgebungsvariablen

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

Schlüssel, mit dem Rails die Sitzungs-Cookies signiert. Erzeugt wird er etwa mit `openssl rand -hex 64`, das ergibt 128 Zeichen. HELIOS und das Dashboard verwenden denselben Wert.

Ohne den Schlüssel startet der Container von HELIOS nicht. Ändert sich der Wert, werden alle Anmeldungen ungültig.

```properties title="Beispiel"
SECRET_KEY_BASE=8f14e45fceea167a5a36dedd4bea2543...
```

> **HELIOS**
>
>
> HELIOS erzeugt den Wert bei der Installation. Einzustellen gibt es nichts.
>

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

Passwort für den Zugang zu HELIOS. Dasselbe Passwort schützt die Einstellungen im [Dashboard](/docs/bedienung/administrator/), es gibt nur eines.

Fehlt das Passwort, steht die Oberfläche von HELIOS jedem offen, der den Server erreicht. HELIOS sorgt deshalb selbst dafür, dass immer eines gesetzt ist.

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

> **HELIOS**
>
>
> HELIOS fragt das Passwort unter _Konfiguration → Grundeinstellungen → Zugriffsschutz_ ab. Bei einer neuen Installation würfelt das Installationsskript eines aus und zeigt es zum Schluss an. Trägt sich HELIOS in eine bestehende Installation ohne Passwort ein, leitet es eines aus `SECRET_KEY_BASE` ab — derselbe Schlüssel ergibt dabei immer dasselbe Passwort, auch bei einem zweiten Anlauf.
>

### `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 die Zeitstempel im Protokoll und die Uhrzeit, zu der die automatische [Datensicherung](/docs/anleitungen/datensicherung/) läuft.

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

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

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

Schaltet `secure`-Cookies, HSTS und die Weiterleitung von HTTP auf HTTPS ein. Erlaubt sind `true` und `false`. Standardwert ist `false`.

Auf `true` gehört der Wert nur, wenn die Oberfläche hinter einem Reverse Proxy mit TLS-Zertifikat steht. Läuft sie über HTTP, kommt mit `secure`-Cookies keine Anmeldung zustande.

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

> **HELIOS**
>
>
> HELIOS setzt `true`, sobald es seine Oberfläche über eine eigene Domain mit HTTPS ausliefert. Ohne Domain läuft sie auf Port 3999 über HTTP, dann bleibt die Variable weg.
>

## InfluxDB-Tokens

Jeder Dienst, der auf die Messwerte in [InfluxDB](/docs/referenz/influxdb/) zugreift, braucht dafür einen API-Token. Diese drei Variablen halten die Tokens bereit, die HELIOS bei der Installation erzeugt.

Gelesen werden sie weder von HELIOS noch von InfluxDB. HELIOS gibt jedem Dienst denjenigen Token weiter, der zu seiner Aufgabe passt: Ein Kollektor darf damit nur schreiben, das Dashboard nur lesen. Beim Dienst selbst heißt die Variable dann immer `INFLUX_TOKEN`.

Wer die Konfiguration von Hand pflegt, legt die Tokens selbst in InfluxDB an und trägt sie hier ein.

> **Die vier Tokens sind derzeit gleich**
>
>
> Bei einer Neuinstallation trägt HELIOS in alle vier Token-Variablen denselben Wert ein, nämlich den [`INFLUX_ADMIN_TOKEN`](/docs/referenz/influxdb/konfiguration/#influx_admin_token). InfluxDB legt beim ersten Start nur diesen einen an, weitere mit eingeschränkten Rechten erzeugt HELIOS bisher nicht. Die getrennten Variablen gibt es, damit eine übernommene Installation mit echter Rechtetrennung diese behält.
>

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

Token für das [Dashboard](/docs/referenz/dashboard/), das damit lesend auf die Messwerte zugreift. Es bekommt den Wert als [`INFLUX_TOKEN`](/docs/referenz/dashboard/allgemeine-konfiguration/#influx_token).

Der Token muss in InfluxDB existieren und den Bucket lesen dürfen. Eine Änderung wirkt beim nächsten Start des Dashboards. Passt der Token nicht, bleiben die Kurven leer.

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

> **HELIOS**
>
>
> HELIOS erzeugt den Token bei der Installation. Einzustellen gibt es nichts.
>

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

Token für die Kollektoren, die damit Messwerte schreiben. Jeder Kollektor bekommt den Wert als [`INFLUX_TOKEN`](/docs/referenz/mqtt-collector/konfiguration/#influx_token).

Der Token muss in InfluxDB existieren und in den Bucket schreiben dürfen. Eine Änderung wirkt beim nächsten Start der Kollektoren.

```properties title="Beispiel"
INFLUX_TOKEN_WRITE=my-super-secret-write-token
```

> **HELIOS**
>
>
> HELIOS erzeugt den Token bei der Installation. Einzustellen gibt es nichts.
>

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

Token für den [Power-Splitter](/docs/referenz/power-splitter/), der Messwerte liest und seine Ergebnisse zurückschreibt. Nötig ist er nur, wenn der Power-Splitter läuft. Er bekommt den Wert als [`INFLUX_TOKEN`](/docs/referenz/power-splitter/konfiguration/#influx_token).

```properties title="Beispiel"
INFLUX_TOKEN_READWRITE=my-super-secret-readwrite-token
```

> **HELIOS**
>
>
> HELIOS erzeugt den Token bei der Installation, auch ohne Power-Splitter. Einzustellen gibt es nichts.
>
