# Umgebungsvariablen

> So konfigurierst du Umgebungsvariablen für deine Anwendung bei Daki Hosting mithilfe einer .env-Datei.

Mit Umgebungsvariablen übergibst du Konfigurationswerte — etwa einen Discord-Bot-Token oder einen API-Schlüssel — an deine Anwendung, ohne sie im Quellcode festzuschreiben. Bei Daki Hosting empfiehlt es sich, direkt auf deinem Server eine **`.env`-Datei** anzulegen, und zwar über die Dateiverwaltung im Portal oder per SFTP.

## Das lernst du hier

- Was Umgebungsvariablen sind und warum sie wichtig sind
- Wie du eine `.env`-Datei auf deinem Server erstellst
- Wie du `.env`-Werte in Node.js und Python lädst
- Best Practices, um Geheimnisse sicher zu halten

---

## Was sind Umgebungsvariablen?

Umgebungsvariablen sind Schlüssel-Wert-Paare, die deine laufende Anwendung aus ihrer Umgebung lesen kann. Sie sind der Standardweg, um:

- Sensible Werte (Tokens, API-Schlüssel, Passwörter) getrennt vom Code zu speichern
- Konfigurationen zu ändern, ohne Quelldateien anzupassen oder neu zu deployen
- Geheimnisse nicht in die Versionsverwaltung gelangen zu lassen

---

## Eine `.env`-Datei erstellen

Am einfachsten und zuverlässigsten verwaltest du Umgebungsvariablen bei Daki, indem du eine `.env`-Datei auf deinem Server anlegst. Das geht auf zwei Wegen:

### Option 1: Über die Dateiverwaltung (schnelle Änderungen)

1. Öffne deinen Server im Portal ([portal.daki.cc](https://portal.daki.cc)).
2. Gehe zum Tab **Files**.
3. Klicke auf **New File** und nenne die Datei `.env`.
4. Klicke auf die Datei, um sie im Web-Editor zu öffnen, und trage deine Variablen ein:
   ```
   BOT_TOKEN=your_discord_bot_token_here
   PORT=3000
   DATABASE_URL=your_db_connection_string
   ```
5. Klicke auf **Save**.
6. Starte deinen Server neu.

### Option 2: Per SFTP (empfohlen für die Ersteinrichtung)

Verbinde dich per SFTP mit deinem Server (Zugangsdaten im Tab **Settings**) und lade deine `.env`-Datei direkt von deinem Rechner hoch. Die SFTP-Einrichtung beschreibt die [Dateiverwaltung](https://daki.cc/de/wiki/guides/file-manager).

> **Warnung:** Committe deine `.env`-Datei niemals in ein öffentliches Git-Repository. Trage `.env` in deine `.gitignore`-Datei ein, damit Geheimnisse nicht versehentlich offengelegt werden.

---

## `.env`-Werte in deiner Anwendung laden

Anwendungen lesen `.env`-Dateien nicht automatisch. Du brauchst eine Bibliothek, die sie in die Umgebung lädt.

**Node.js (dotenv)**

Installiere das Paket, indem du es als Abhängigkeit in deine `package.json` einträgst:
```json
{
  "dependencies": {
    "dotenv": "^16.0.0"
  }
}
```
Lade es ganz oben in deiner Einstiegsdatei:
```js
require('dotenv').config();

const token = process.env.BOT_TOKEN;
const port  = process.env.PORT || 3000;
```

**Python (python-dotenv)**

Füge `python-dotenv` zu deiner `requirements.txt` hinzu:
```
python-dotenv
```
Lade es oben in deiner Einstiegsdatei:
```python
from dotenv import load_dotenv
import os

load_dotenv()

token = os.environ.get("BOT_TOKEN")
port  = int(os.environ.get("PORT", 3000))
```

---

## Format der `.env`-Datei

Jede Zeile einer `.env`-Datei folgt dem Format `KEY=VALUE`:

```

# Comments start with a hash

BOT_TOKEN=your_token_here

API_KEY=some_api_key

DB_HOST=localhost

DB_PORT=5432

DEBUG=false

```
- Schlüssel werden üblicherweise groß geschrieben und mit Unterstrichen getrennt.
- Werte brauchen keine Anführungszeichen, sie werden aber unterstützt.
- Zeilen, die mit `#` beginnen, sind Kommentare und werden ignoriert.

---

## Best Practices

- **Tokens und Geheimnisse niemals hart in den Quellcode schreiben**, besonders wenn dein Code auf GitHub liegt.
- **Trage `.env` in deine `.gitignore` ein**, damit sie nie versehentlich committet wird.
- **Erstelle deine `.env`-Datei auf dem Server**, nicht lokal — oder lade per SFTP eine lokale `.env` hoch, die von der Versionsverwaltung ausgeschlossen ist.
- **Starte deinen Server neu**, nachdem du deine `.env`-Datei erstellt oder geändert hast.
- Verwende **aussagekräftige Schlüsselnamen**, die deine Konfiguration selbsterklärend machen.

---

## Nächste Schritte

- [Starteinstellungen](https://daki.cc/de/wiki/guides/startup-settings) — **Install Command**, **Startup Command** und das Docker-Image konfigurieren.
- [Discord.js-Bot deployen](https://daki.cc/de/wiki/guides/deploy-discordjs) — Komplette Anleitung inklusive Token-Einrichtung.
- [Python-Bot deployen](https://daki.cc/de/wiki/guides/deploy-python) — Komplette Anleitung inklusive Token-Einrichtung.

---
Source: https://daki.cc/de/wiki/guides/environment-variables
