# ============================================================ # PRODUCTION — Ionos VPS # Copiez ce fichier en .env sur le serveur et remplissez TOUT # Ne committez JAMAIS ce fichier avec de vraies valeurs # ============================================================ # ─── Application ──────────────────────────────────────────── APP_NAME="Office Translator" ENV=production DEBUG=false LOG_LEVEL=INFO LOG_FORMAT=json # ─── Domaine & URLs ───────────────────────────────────────── # Remplacez par votre vrai domaine (configuré dans Ionos DNS) DOMAIN=wordly.art NEXT_PUBLIC_API_URL=https://wordly.art CORS_ORIGINS=https://wordly.art # ─── Sécurité JWT ───────────────────────────────────────── # OBLIGATOIRE — Générez avec : # python3 -c "import secrets; print(secrets.token_urlsafe(64))" JWT_SECRET_KEY=REMPLACEZ_PAR_UNE_CLE_SECRETE_DE_64_CARACTERES # ─── Admin ────────────────────────────────────────────────── ADMIN_USERNAME=admin # Hash bcrypt de votre mot de passe admin # Générez avec : python3 -c "from passlib.context import CryptContext; print(CryptContext(schemes=['bcrypt']).hash('VotreMotDePasse'))" ADMIN_PASSWORD_HASH=REMPLACEZ_PAR_HASH_BCRYPT # ─── Base de données PostgreSQL ───────────────────────────── POSTGRES_USER=translate # Mot de passe fort — minimum 32 caractères # Générez avec : python3 -c "import secrets; print(secrets.token_urlsafe(32))" POSTGRES_PASSWORD=REMPLACEZ_PAR_MOT_DE_PASSE_FORT POSTGRES_DB=translate_db DATABASE_URL=postgresql+asyncpg://translate:REMPLACEZ_PAR_MOT_DE_PASSE_FORT@postgres:5432/translate_db # ─── Redis ────────────────────────────────────────────────── REDIS_URL=redis://redis:6379/0 # ─── Fournisseurs de traduction ───────────────────────────── # Google Translate (gratuit, via deep_translator) — toujours activé GOOGLE_TRANSLATE_ENABLED=true # Google Cloud Translation API (payant) GOOGLE_CLOUD_ENABLED=false GOOGLE_CLOUD_API_KEY= # DeepL DEEPL_ENABLED=false DEEPL_API_KEY= # OpenRouter (IA) OPENROUTER_ENABLED=false OPENROUTER_API_KEY= OPENROUTER_MODEL=deepseek/deepseek-v3.2 # OpenAI OPENAI_ENABLED=false OPENAI_API_KEY= OPENAI_MODEL=gpt-4o-mini # Désactivés en production standard OLLAMA_ENABLED=false ZAI_API_KEY= # ─── Stripe Paiements ─────────────────────────────────────── STRIPE_SECRET_KEY=sk_live_REMPLACEZ STRIPE_WEBHOOK_SECRET=whsec_REMPLACEZ STRIPE_PRICE_STARTER_MONTHLY=price_REMPLACEZ STRIPE_PRICE_STARTER_YEARLY=price_REMPLACEZ STRIPE_PRICE_PRO_MONTHLY=price_REMPLACEZ STRIPE_PRICE_PRO_YEARLY=price_REMPLACEZ STRIPE_PRICE_BUSINESS_MONTHLY=price_REMPLACEZ STRIPE_PRICE_BUSINESS_YEARLY=price_REMPLACEZ # ─── Fichiers & Limites ───────────────────────────────────── MAX_FILE_SIZE_MB=50 MAX_CONCURRENT_TRANSLATIONS=5 CLEANUP_ENABLED=true FILE_TTL_MINUTES=60 # ─── HTTPS / HSTS ─────────────────────────────────────────── ENABLE_HSTS=true LETSENCRYPT_EMAIL=votre-email@wordly.art # ─── Rate limiting ────────────────────────────────────────── RATE_LIMIT_ENABLED=true RATE_LIMIT_PER_MINUTE=30 RATE_LIMIT_PER_HOUR=200 TRANSLATIONS_PER_MINUTE=5 TRANSLATIONS_PER_HOUR=30