# Variables d'environnement

> Comment configurer les variables d'environnement de votre application sur Daki Hosting à l'aide d'un fichier .env.

Les variables d'environnement vous permettent de transmettre des valeurs de configuration — comme le token d'un bot Discord ou une clé d'API — à votre application, sans les écrire en dur dans votre code source. Sur Daki Hosting, la méthode recommandée consiste à créer un **fichier `.env`** directement sur votre serveur, via le gestionnaire de fichiers du Portail ou via SFTP.

## Ce que vous allez apprendre

- Ce que sont les variables d'environnement et pourquoi elles comptent
- Comment créer un fichier `.env` sur votre serveur
- Comment charger les valeurs de `.env` en Node.js et en Python
- Les bonnes pratiques pour garder vos secrets en sécurité

---

## Que sont les variables d'environnement ?

Les variables d'environnement sont des paires clé-valeur que votre application en cours d'exécution peut lire depuis son environnement. C'est la méthode standard pour :

- Stocker les valeurs sensibles (tokens, clés d'API, mots de passe) séparément du code
- Modifier la configuration sans modifier ni redéployer les fichiers source
- Éviter de versionner des secrets dans un système de contrôle de version

---

## Créer un fichier `.env`

Le moyen le plus simple et le plus fiable de gérer les variables d'environnement sur Daki consiste à créer un fichier `.env` sur votre serveur. Vous pouvez le faire de deux façons :

### Option 1 : gestionnaire de fichiers (modifications rapides)

1. Ouvrez votre serveur dans le Portail ([portal.daki.cc](https://portal.daki.cc)).
2. Allez dans l'onglet **Files**.
3. Cliquez sur **New File** et nommez-le `.env`.
4. Cliquez sur le fichier pour l'ouvrir dans l'éditeur web, puis ajoutez vos variables :
   ```
   BOT_TOKEN=your_discord_bot_token_here
   PORT=3000
   DATABASE_URL=your_db_connection_string
   ```
5. Cliquez sur **Save**.
6. Redémarrez votre serveur.

### Option 2 : via SFTP (recommandé pour la configuration initiale)

Connectez-vous à votre serveur en SFTP (identifiants dans l'onglet **Settings**) et téléversez votre fichier `.env` directement depuis votre machine locale. Voir [Gestionnaire de fichiers](https://daki.cc/fr/wiki/guides/file-manager) pour la configuration de SFTP.

> **Avertissement:** Ne versionnez jamais votre fichier `.env` dans un dépôt Git public. Ajoutez `.env` à votre fichier `.gitignore` pour éviter toute exposition accidentelle de secrets.

---

## Charger les valeurs de `.env` dans votre application

Les applications ne lisent pas automatiquement les fichiers `.env` : il faut une bibliothèque pour les charger dans l'environnement.

**Node.js (dotenv)**

Installez le paquet (ajoutez-le à votre `package.json` comme dépendance) :
```json
{
  "dependencies": {
    "dotenv": "^16.0.0"
  }
}
```
Chargez-le tout en haut de votre fichier d'entrée :
```js
require('dotenv').config();

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

**Python (python-dotenv)**

Ajoutez `python-dotenv` à votre `requirements.txt` :
```
python-dotenv
```
Chargez-le en haut de votre fichier d'entrée :
```python
from dotenv import load_dotenv
import os

load_dotenv()

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

---

## Format du fichier `.env`

Chaque ligne d'un fichier `.env` suit le format `CLÉ=VALEUR` :

```

# Comments start with a hash

BOT_TOKEN=your_token_here

API_KEY=some_api_key

DB_HOST=localhost

DB_PORT=5432

DEBUG=false

```
- Les clés sont généralement en majuscules, avec des tirets bas.
- Les valeurs n'ont pas besoin de guillemets, mais ceux-ci sont pris en charge.
- Les lignes commençant par `#` sont des commentaires et sont ignorées.

---

## Bonnes pratiques

- **Ne codez jamais de tokens ni de secrets en dur** dans vos fichiers source, surtout si votre code est sur GitHub.
- **Ajoutez `.env` à votre `.gitignore`** pour qu'il ne soit jamais versionné par accident.
- **Créez votre fichier `.env` sur le serveur**, et non en local — ou utilisez SFTP pour téléverser un `.env` local qui est exclu du contrôle de version.
- **Redémarrez votre serveur** après avoir créé ou modifié votre fichier `.env`.
- Utilisez des **noms de clés descriptifs** qui rendent votre configuration auto-documentée.

---

## Étapes suivantes

- [Paramètres de démarrage](https://daki.cc/fr/wiki/guides/startup-settings) — Configurez votre commande d'installation, votre commande de démarrage et votre image Docker.
- [Déployer un bot Discord.js](https://daki.cc/fr/wiki/guides/deploy-discordjs) — Guide de déploiement complet, y compris la configuration du token.
- [Déployer un bot Python](https://daki.cc/fr/wiki/guides/deploy-python) — Guide de déploiement complet, y compris la configuration du token.

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