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

# Umgebungsvariablen und Geheimnisse

> Speichere Tokens, API-Schlüssel und Verbindungs-Strings als Umgebungsvariablen auf Square Cloud per Dashboard, CLI oder API und lies sie in deinem Code.

Halte Bot-Tokens, API-Schlüssel und Datenbankpasswörter aus deinem Quellcode heraus. Setze sie als Umgebungsvariablen der Anwendung, und dein Code liest sie zur Laufzeit wie jede andere Variable.

## Variablen setzen

Umgebungsvariablen gehören zu genau einer Anwendung. Sie bleiben bei Neustarts und Commits erhalten, aber ein neuer Upload erstellt eine neue Anwendung ohne sie: Setze sie dort also erneut.

<Tabs>
  <Tab title="Dashboard">
    1. Öffne deine Anwendung im [Dashboard](https://squarecloud.app/de/dashboard) und gehe zu **Einstellungen** → **Umgebungsvariablen**.
    2. Füge jeden Schlüssel mit seinem Wert hinzu oder importiere eine vorhandene `.env`-Datei.
    3. Klicke auf **Speichern**. Das Dashboard fragt, ob die Anwendung neu gestartet werden soll: Starte sie neu, damit die App die neuen Werte übernimmt.

    Wenn du im Dashboard eine neue Anwendung hochlädst, kannst du Variablen auch schon auf der Upload-Seite hinzufügen, vor dem ersten Start.
  </Tab>

  <Tab title="CLI">
    Führe die Befehle in deinem Projektordner aus. Die CLI zielt auf die Anwendung, deren `ID` in deiner `squarecloud.app` steht. Für eine andere Anwendung übergib `--app <app ID>` (bei `list` übergibst du die ID als Argument).

    ```bash theme={"system"}
    # Variablen hinzufügen oder aktualisieren (die übrigen bleiben unverändert)
    squarecloud app env set DISCORD_TOKEN=your-token LOG_LEVEL=info

    # Jede Zeile einer lokalen .env-Datei senden
    squarecloud app env set --from-file .env

    # Die aktuellen Variablen auflisten
    squarecloud app env list

    # Eine Variable entfernen
    squarecloud app env remove LOG_LEVEL

    # Neu starten, damit die Änderungen gelten
    squarecloud app restart
    ```

    `squarecloud app env replace` ersetzt nach einer Bestätigung die gesamte Menge durch die übergebene. Alle Befehle und Flags beschreibt die Seite [Umgebungsvariablen mit der CLI](/de/cli-reference/environment-variables); wie du die CLI installierst und dich anmeldest, zeigt der [CLI-Schnellstart](/de/cli-reference/quickstart).
  </Tab>

  <Tab title="VS Code">
    Klicke in der [Square Cloud Erweiterung](/de/vscode-extension/features) mit der rechten Maustaste auf deine Anwendung in der Seitenleiste und wähle **Umgebungsvariablen**, um sie aufzulisten, hinzuzufügen, zu bearbeiten oder zu löschen. Starte die Anwendung danach neu, damit die Änderungen gelten.
  </Tab>

  <Tab title="API">
    Sende die Variablen an [`POST /v2/apps/{app_id}/envs`](/de/api-reference/endpoint/apps/envs/add_n_edit), mit einem API-Schlüssel, der den Scope `envs:write` hat:

    ```bash theme={"system"}
    curl -X POST "https://api.squarecloud.app/v2/apps/YOUR_APP_ID/envs" \
      -H "Authorization: YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"envs": {"DISCORD_TOKEN": "your-token"}}'
    ```

    Über denselben Pfad kannst du Variablen auch [auflisten](/de/api-reference/endpoint/apps/envs/get) (`GET`), [ersetzen](/de/api-reference/endpoint/apps/envs/overwrite) (`PUT`) und [entfernen](/de/api-reference/endpoint/apps/envs/remove) (`DELETE`). Die API startet die Anwendung nicht neu: Rufe danach den [Endpunkt zum Neustart](/de/api-reference/endpoint/apps/restart) auf.
  </Tab>
</Tabs>

<Warning>Variablen werden beim Start der Anwendung geladen. Starte die Anwendung nach jeder Änderung neu, sonst läuft sie mit den alten Werten weiter.</Warning>

## Im Code auslesen

<CodeGroup>
  ```javascript Node.js theme={"system"}
  const token = process.env.DISCORD_TOKEN;

  if (!token) {
    throw new Error("DISCORD_TOKEN is not set");
  }
  ```

  ```python Python theme={"system"}
  import os

  token = os.environ.get("DISCORD_TOKEN")

  if not token:
      raise RuntimeError("DISCORD_TOKEN is not set")
  ```
</CodeGroup>

Wenn dein Code bei einer fehlenden Variable sofort abbricht, erhältst du eine klare Meldung in den Logs statt eines verwirrenden Fehlers später, etwa eines ungültigen Tokens.

## Variablen, die Square Cloud für dich setzt

Deine Anwendung startet mit diesen bereits definierten Variablen:

| Variable | Wert | Wofür |
| - | - | - |
| `PORT` | `80` | Der Port, auf dem dein Webserver lauscht. |
| `HOST` | `0.0.0.0` | Die Adresse, an die sich dein Webserver bindet. |
| `SQUARECLOUD_APP_ID` | Die ID deiner Anwendung | Die Anwendung zur Laufzeit identifizieren. |
| `NODE_ENV` | `production` | Node.js-Bibliotheken mitteilen, dass sie in Produktion laufen (Runtimes für Node.js und TypeScript). |

<Warning>Überschreibe `PORT` oder `HOST` bei einer Website nicht: Die Plattform erreicht einen Server nur auf Port 80 und Host `0.0.0.0`.</Warning>

Da `NODE_ENV` auf `production` steht, überspringt `npm install` die `devDependencies`. Wenn dein `START`-Befehl das Projekt baut (zum Beispiel mit `typescript` oder `vite`), führe diese Build-Tools in der `package.json` unter `dependencies` auf.

## Wie die Variablen zu deiner App gelangen

Square Cloud speichert die Variablen in einer Datei `.squarecloud/.env` innerhalb der Anwendung und lädt sie bei jedem Start der Anwendung mit einer Shell, bevor die Abhängigkeiten installiert werden und dein `START`-Befehl oder deine `MAIN`-Datei läuft. Daraus folgt zweierlei:

* **Namen** sollten aus Buchstaben, Ziffern und Unterstrichen bestehen und nicht mit einer Ziffer beginnen.
* **Werte** mit Leerzeichen oder Shell-Zeichen wie `$`, `&`, `;` oder `|` müssen in Anführungszeichen stehen, sonst schneidet die Shell sie ab oder expandiert sie. Das Dashboard und `squarecloud app env set` setzen die Anführungszeichen für dich. In der VS Code-Erweiterung oder der API setzt du einen solchen Wert selbst in einfache Anführungszeichen: Gib `'p@ss word$1'` ein oder sende `"PASSWORD": "'p@ss word$1'"` im Body der API-Anfrage.

Die Limits sind 256 Variablen pro Anwendung, 1.024 Zeichen pro Name und 4.096 Zeichen pro Wert. Statische Websites (HTML/CSS) unterstützen keine Umgebungsvariablen und liefern `STATIC_APP_ENV_NOT_SUPPORTED`.

## Geheimnisse aus dem Upload heraushalten

Wenn dein Code selbst eine `.env`-Datei lädt (zum Beispiel mit `dotenv`), muss diese Datei im Upload enthalten sein. Steht `.env` dann in [`squarecloud.ignore`](/de/getting-started/squarecloud-ignore), startet die App ohne ihre Geheimnisse, und ein Bot scheitert mit einem ungültigen Token.

Sicherer ist es so: Übertrage jeden Wert aus deiner `.env` in die Umgebungsvariablen der Anwendung, wie oben gezeigt. Sobald sie gesetzt sind, kannst du `.env` aus dem Upload und aus deinem Git-Repository heraushalten. `dotenv` überschreibt keine bereits vorhandenen Variablen, sodass derselbe Code auf deinem Rechner und auf Square Cloud funktioniert.

<Warning>Committe Tokens oder Passwörter nie in ein öffentliches Repository. Wird eines öffentlich, widerrufe es beim Anbieter (setze zum Beispiel das Bot-Token im Discord Developer Portal zurück) und trage den neuen Wert hier ein.</Warning>

## Nächste Schritte

<CardGroup cols={2}>
  <Card title="Konfigurationsdatei" icon="gear-complex-code" href="/de/getting-started/config-file">
    Lege `MAIN`, `MEMORY`, `START` und die anderen Felder von `squarecloud.app` fest.
  </Card>

  <Card title="Discord-Bot hosten" icon="discord" href="/de/tutorials/bots/discord">
    Deploye einen Bot, der sein Token aus einer Umgebungsvariable liest.
  </Card>

  <Card title="Discord-Bot-Fehler" icon="bug" href="/de/platform/troubleshooting/discord-bot-errors">
    Behebe ungültige Tokens, fehlende Intents und Bots, die offline gehen.
  </Card>

  <Card title="Datenbankverbindungsfehler" icon="database" href="/de/platform/troubleshooting/database-connection-errors">
    Verbinde dich mit einer `DATABASE_URL` und den richtigen SSL-Einstellungen.
  </Card>
</CardGroup>
