Gestion des API Keys & Tokens avec .env.global
Problème résolu
Éviter d’écrire ses credentials en dur dans le code. On centralise tout dans un fichier unique et sécurisé.
Mise en place (une seule fois)
1. Créer le fichier .env.global
nano ~/.env.globalAjouter tes variables au format NOM=valeur (sans espaces autour du =) :
# Google AdsGOOGLE_ADS_DEVELOPER_TOKEN=...GOOGLE_ADS_LOGIN_CUSTOMER_ID=...
# OpenAIOPENAI_API_KEY=...
# Exa MCPEXA_MCP_TOKEN=...2. Sécuriser le fichier
chmod 600 ~/.env.globalSeul ton utilisateur peut lire/modifier ce fichier.
3. Charger automatiquement dans chaque terminal
nano ~/.zshrcAjouter à la fin :
if [ -f ~/.env.global ]; then set -a source ~/.env.global set +afiPuis appliquer :
source ~/.zshrcUtilisation dans le terminal
Vérifier qu’une variable est bien chargée
echo $EXA_MCP_TOKENLister les variables chargées
printenv | grep -i "exa\|google\|openai"Utiliser une variable dans une commande
curl -H "Authorization: Bearer $OPENAI_API_KEY" https://api.openai.com/v1/modelsUtilisation dans le code
Python
from dotenv import load_dotenvimport os
load_dotenv()token = os.getenv("EXA_MCP_TOKEN")Node.js
require('dotenv').config()const token = process.env.EXA_MCP_TOKENPHP
$token = getenv('EXA_MCP_TOKEN');Règles de sécurité
chmod 600 ~/.env.global→ lecture réservée à ton utilisateur- Ne jamais commiter
.envsur GitHub → credentials publics = compromis - Toujours ajouter
.env*au.gitignore→ évite les commits accidentels - Créer un
.env.examplesans valeurs → pour documenter les variables nécessaires
Récapitulatif des fichiers
~/.env.global→ tes vraies clés (jamais sur GitHub)~/.zshrc→ charge.env.globalà chaque terminalprojet/.env→ variables spécifiques à un projet (optionnel)projet/.env.example→ template sans valeurs (commité sur GitHub)projet/.gitignore→ contient.envpour l’exclure du repo