> ## Documentation Index
> Fetch the complete documentation index at: https://simplecloud.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Umgebungsvariablen & Secrets

> Verwende Netzwerkeinstellungen und Zugangsdaten in Templates, Configurators und Workflows

## Umgebungsvariable oder Secret wählen

Umgebungsvariablen und Secrets speichern benannte Werte für dein Netzwerk. Verwende ihre Referenzen in Templates, Configurators oder Workflows, damit du einen Wert ändern kannst, ohne jede betroffene Datei zu bearbeiten.

|                          | Umgebungsvariable                                                | Secret                                                                               |
| ------------------------ | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| Verwenden für            | Gemeinsame Einstellungen wie einen Datenbankhost                 | Passwörter, Tokens und andere Zugangsdaten                                           |
| Referenz                 | `{{ env.DATABASE_HOST }}`                                        | `{{ secrets.DATABASE_PASSWORD }}`                                                    |
| Nach dem Speichern lesen | Mitglieder mit Zugriff können den Wert anzeigen und bearbeiten   | Das Dashboard kann den gespeicherten Wert nicht anzeigen; ersetze ihn durch Rotation |
| Speicherung              | Der Controller verschlüsselt den Wert und kann ihn entschlüsseln | Dein Browser verschlüsselt den Wert; nur deine Serverhosts können ihn entschlüsseln  |

Beide stehen jedem Serverhost im Netzwerk zur Verfügung. Verwende getrennte Netzwerke, wenn Werte nicht zwischen Serverhosts geteilt werden dürfen.

## Beide in einer Plugin-Konfiguration verwenden

Dieses Beispiel speichert einen Datenbankhost als Umgebungsvariable und das Passwort als Secret. Du brauchst einen verbundenen Serverhost, einen Datenbankzugang und ein Plugin, das diese Datenbank verwendet.

<Steps>
  <Step title="Umgebungsvariable erstellen">
    Öffne im Dashboard **[Settings > Variables & Secrets](https://dash.simplecloud.app/redirect?target=%2Fsettings%2Fsecrets)**. Wähle unter **Network variables** die Aktion **Add variable**.

    Trage `DATABASE_HOST` als Key und deinen Datenbankhost als Wert ein, etwa `db.internal.example`. Wähle **Add variable**, um den Wert zu speichern. Über das Augensymbol kannst du ihn danach wieder anzeigen.
  </Step>

  <Step title="Secret erstellen">
    Wähle unter **Network secrets** die Aktion **Add secret**. Trage `DATABASE_PASSWORD` als Key und dein Datenbankpasswort als Wert ein. Wähle danach **Encrypt & save**.

    Ein Serverhost muss den Verschlüsselungsschlüssel des Netzwerks registrieren, bevor du Secrets hinzufügen kannst. Falls das Dashboard einen Serverhost verlangt, starte oder verbinde einen. Nach dem Speichern siehst du den Key, kannst den Wert aber nicht mehr anzeigen.
  </Step>

  <Step title="Referenzen in das Template einfügen">
    Öffne **Files**, wähle den Serverhost aus und bearbeite die Plugin-Konfiguration im passenden [Template](/docs/de/manual/setup/templates). Lege diese Datei beispielsweise unter `templates/lobby/plugins/DatabasePlugin/config.yml` ab:

    ```yaml templates/lobby/plugins/DatabasePlugin/config.yml theme={null}
    database:
      host: "{{ env.DATABASE_HOST }}"
      port: 3306
      name: "minecraft"
      username: "simplecloud"
      password: "{{ secrets.DATABASE_PASSWORD }}"
    ```

    Passe den Pfad und die Datenbankeinstellungen an dein Plugin und deinen Zugang an. Übernimm die beiden Referenzen wie gezeigt. Verwende Referenzen in textbasierten Konfigurationsdateien, nicht in JAR-Dateien, Welten, Datenbanken oder Archiven.

    Prüfe, ob das Template diese Referenzen auf jedem Serverhost enthält, der deine Lobby-Server ausführen kann.

    Stoppe einen persistenten Server, auf dem diese Datei bereits vorhanden ist, und bearbeite seine bestehende Konfiguration über die Seite **Files** des Servers. Ein Template ersetzt keine vorhandene Datei eines persistenten Servers.
  </Step>

  <Step title="Server starten und Verbindung prüfen">
    Starte einen neuen `lobby`-Server, der dieses Template verwendet. Wenn du einen persistenten Server bearbeitet hast, starte ihn wieder.

    SimpleCloud setzt beide Werte in die Konfiguration des Servers ein, bevor der Prozess startet. Das ursprüngliche Template behält seine Referenzen.

    Prüfe, ob das Plugin die Datenbankverbindung herstellt. Der Datei-Editor im Dashboard zeigt in der laufenden Datei weiterhin die Referenzen. Prüfe den Verbindungsstatus des Plugins, um festzustellen, ob es die Werte erhalten hat.
  </Step>
</Steps>

## Referenzen in Configurators und Workflows verwenden

Beide Referenztypen funktionieren auch als Werte in einem [Configurator](/docs/de/manual/configuration/configurators). Ergänze diesen Eintrag unter `paths` in deinem eigenen Configurator, um dieselben Datenbankeinstellungen zu verwalten:

```yaml theme={null}
paths:
  - path: "plugins/DatabasePlugin/config.yml"
    type: "YML"
    data:
      database:
        host: "{{ env.DATABASE_HOST }}"
        port: 3306
        name: "minecraft"
        username: "simplecloud"
        password: "{{ secrets.DATABASE_PASSWORD }}"
```

Behalte die übrigen Einträge bei, die dein Configurator benötigt. Verwende Umgebungsvariablen- und Secret-Referenzen in Konfigurationswerten. Im Zielpfad `path` werden sie nicht unterstützt.

Verwende in [Workflows](/docs/de/manual/configuration/workflows) die Referenzen `{{ env.KEY }}` oder `{{ secrets.KEY }}` in den `with`-Parametern eines Steps. SimpleCloud ersetzt sie, wenn der Workflow läuft. Erstelle die entsprechende Umgebungsvariable oder das Secret vor der Ausführung.

## Wert ändern oder löschen

Öffne unter **Settings > Variables & Secrets** das Aktionsmenü neben dem Key:

* Wähle für eine Umgebungsvariable **Edit variable**, ändere den Wert und wähle **Save changes**.
* Wähle für ein Secret **Rotate secret**, trage den neuen Wert ein und wähle zum Speichern erneut **Rotate secret**.

Der Key bleibt gleich, daher funktionieren bestehende Referenzen weiter. Starte jeden betroffenen Server neu, um den neuen Wert in seine Konfiguration zu übernehmen.

Laufende Server behalten ihre bisherigen Werte. Führe manuelle Workflows, die die Änderung benötigen, erneut aus.

Die Rotation von `DATABASE_PASSWORD` ändert nur den in SimpleCloud gespeicherten Wert. Ändere das Passwort des Datenbankkontos separat und halte beide Werte gleich. Server mit dem alten Passwort können den Zugriff verlieren, bis du sie mit dem neuen Wert startest.

Entferne die Referenzen, bevor du **Delete variable** oder **Delete secret** wählst. Ein Server startet nicht, wenn eine seiner Konfigurationsdateien einen fehlenden Wert benötigt.

<Warning>
  SimpleCloud erstellt und verwaltet `VELOCITY_SECRET` für die sichere Proxy-Weiterleitung. Rotiere oder lösche dieses Secret nicht manuell.

  Ein geändertes Forwarding-Secret muss gleichzeitig den Proxy und alle Backend-Server erreichen. Andernfalls schlagen die Verbindungen zwischen ihnen fehl.
</Warning>

## So werden Werte gespeichert und verwendet

Der Controller speichert beide Arten von Werten verschlüsselt. Er kann Umgebungsvariablen entschlüsseln, damit Mitglieder mit Zugriff sie im Dashboard lesen können.

Secrets werden in deinem Browser mit dem öffentlichen Schlüssel des Netzwerks verschlüsselt. Der Controller kann sie nicht entschlüsseln. Deine Serverhosts teilen sich den zugehörigen privaten Schlüssel und entschlüsseln Secrets, wenn ein Server oder Workflow sie benötigt.

Der laufende Server erhält die echten Werte in seinen Konfigurationsdateien. Benutzer und Prozesse mit direktem Zugriff auf den Serverhost oder das Serververzeichnis können diese Dateien einschließlich der Passwörter lesen. Der Editor und Downloads im Dashboard zeigen anstelle der verwalteten Werte ihre Referenzen.

### Keys und Werte

* Keys unterscheiden zwischen Groß- und Kleinschreibung und dürfen bis zu 64 Buchstaben, Zahlen oder Unterstriche enthalten. Beginne mit einem Buchstaben oder Unterstrich. Secret-Keys dürfen auch Bindestriche enthalten.
* Umgebungsvariablen und Secrets haben getrennte Keys. `{{ env.HOST }}` und `{{ secrets.HOST }}` verweisen auf unterschiedliche Werte, auch wenn beide Keys `HOST` heißen.
* Werte dürfen bis zu 16 KiB umfassen. Umgebungsvariablen dürfen leer sein, Secrets nicht. Beide behalten Leerzeichen und Zeilenumbrüche bei.

## Fehlerbehebung

<AccordionGroup>
  <Accordion title="Eine Referenz fehlt oder der Server startet nicht">
    Suche im Serverhost-Log nach dem fehlenden Key. Prüfe unter **Settings > Variables & Secrets**, ob er im richtigen Abschnitt existiert. Achte auf die Groß- und Kleinschreibung und verwende `env` für eine Umgebungsvariable oder `secrets` für ein Secret.

    Erstelle den fehlenden Wert oder korrigiere die Referenz. Starte den Server danach erneut.
  </Accordion>

  <Accordion title="Ein geänderter Wert wird nicht verwendet">
    Starte jeden Server neu, der den Wert verwendet, und führe betroffene manuelle Workflows erneut aus. Prüfe bei einem persistenten Server seine bestehende Konfiguration unter **Files**. Eine Änderung am Template ersetzt diese Datei nicht.
  </Accordion>

  <Accordion title="Die laufende Datei zeigt weiterhin eine Referenz">
    Der Datei-Editor und Downloads im Dashboard ersetzen verwaltete Werte durch ihre Referenzen, bevor die Datei an deinen Browser gesendet wird. Prüfe das Verhalten oder den Verbindungsstatus des Plugins, um festzustellen, ob es den Wert verwendet.
  </Accordion>
</AccordionGroup>
