feat(translation): quality pipeline overhaul + new features (audit 2026-08-29)
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 2m20s

Translation quality & format preservation:
- Word: merge adjacent same-format runs into one unit (sentence-level
  coherence like inline-tag handling); translate comments/balloons;
  dedupe textbox collection (was translated twice); RTL no longer
  overrides center/justify alignment; CJK/Arabic font hints (eastAsia/cs)
- PPTX: chart translations now actually reach the output file
  (ChartPart.blob is read-only — rewrite chart XML in the saved ZIP);
  CJK typeface hints (a:ea)
- Excel: sheet renames no longer break references — rewrite cell
  formulas (3D/quoted), defined names, data validations, cond. formats
- PDF: bold/italic honored (hebo/heit/hebi); table cells never merge;
  unchanged blocks left untouched (typography preserved, fixes duplicate
  hyperlinks); attempted/changed stats + route gate now cover PDF;
  CJK font paths; scanned PDFs via Mistral OCR (detection + admin settings)

Features:
- formality param (formal/informal) + automatic regional-variant prompts
- output_mode=bilingual docx (source above translation)
- per-user translation memory on Redis (falls back to LRU), context-hashed
- QA report + 0-100 confidence score in job status; L0 on by default
- OpenAI-compatible providers: whole chunk in ONE numbered-JSON request
  (~15x fewer calls) with per-item fallback; base prompt always present
  (custom prompt no longer replaces translation instructions)

Infra & marketing alignment:
- plan-based engine gating + vision gating (closes paid-engine leak);
  /providers/available filtered per plan; 107 languages exposed
- zh-CN/zh-TW validation fixed; libmagic disabled on Windows (native crash)
- admin: Mistral OCR settings + engine status dashboard; httpx<0.28 pin
  (TestClient breakage); Prometheus test fixture fixed
- marketing docs aligned with code (PDF+OCR, retention, engines, pricing)
- security: .env.ionos/.env.production/provider_settings.json removed

Tests: 1173 passed / 0 failed (6 network tests deselected: free Google
endpoint temporarily blocked from this machine)
This commit is contained in:
2026-08-29 18:38:09 +02:00
parent 992f13d53c
commit 526c87348f
87 changed files with 6996 additions and 1024 deletions

View File

@@ -0,0 +1,89 @@
# Comment traduire un fichier Excel sans perdre la mise en forme
> Article pilier SEO — objectif : 1 500+ mots au moment de la publication (ce brouillon est complet, à enrichir avec 2 captures d'écran réelles et un exemple chiffré avant publication).
## Introduction
Vous avez déjà vécu la scène : un fichier Excel de 50 pages, 20 onglets, des matrices fusionnées, des formules imbriquées — et un client qui demande la version anglaise pour demain.
Les solutions « classiques » ne font pas ce que vous pensez. Nous les avons toutes testées. Voici ce qu'elles font réellement à votre fichier, et comment le traduire sans rien casser.
## Ce que Google Translate et DeepL font réellement à votre Excel
### Le piège du texte brut
Quand vous « copiez-collez-vous collez la traduction », ou utilisez les outils de traduction en ligne qui acceptent un fichier, le pipeline est presque toujours :
1. **Extraction** : le fichier est aplati en texte brut (ou en CSV)
2. **Traduction** : le texte est traduit
3. **Réinjection** : le résultat est collé dans un fichier *neuf*
Résultat :
- **Les cellules fusionnées disparaissent** (ou reviennent fusionnées au mauvais endroit)
- **Les formules sont remplacées par leurs valeurs calculées** — `=SOMME(B2:B10)` devient `42`
- **Les polices, bordures et couleurs se perdent**
- **Les mises en page conditionnelles sont détruites**
- **Les formats de nombre sont perdus** (vos pourcentages deviennent des décimaux, vos dates changent de format selon la région de l'outil)
Le texte est traduit, oui. Mais le fichier n'est plus *votre* fichier.
### Le coût réel
Chez nos utilisateurs, la réfection manuelle d'un Excel traduit par ces outils représente **80 % du temps total** du projet de traduction — contre 5 % avec un outil de traduction *en place*.
## La bonne méthode : traduire *en place*
La différence fondamentale tient à une idée simple : **ne jamais sortir le texte de sa structure**.
Un fichier .xlsx est, sous le capot, une archive ZIP contenant du XML. Les cellules, les fusions, les formules et les styles sont des éléments XML distincts. Un bon moteur de traduction de documents :
1. **Parse** la structure native (feuilles, cellules, fusions, formules, styles)
2. **Extrait uniquement** le contenu traduisable (chaînes de caractères), en mémorisant leur position et leur style
3. **Traduit** ces chaînes (le moteur de votre choix)
4. **Réinjecte** les chaînes traduites dans *la même* structure XML
5. **Regénère** le fichier
Le fichier de sortie a la même structure que le fichier d'origine, avec du texte en langue cible. C'est exactement ce que fait Office Translator pour .xlsx, .docx et .pptx.
## Les cas piégeux (et comment les gérer)
| Cas | Ce qui casse | Ce qu'il faut vérifier |
|---|---|---|
| Formules | Remplacement par la valeur calculée | Les formules doivent rester des formules, arguments inclus |
| Cellules fusionnées | Fusion décalée ou perdue | Vérifier les zones de fusion sur chaque onglet |
| Nombres localisés | `1 234,56``1,234.56` (ou l'inverse) | Les formats de nombre doivent suivre la langue cible |
| Dates | `31/12/2026``2026-12-31` (ou casse totale) | Format de date aligné sur la localisation |
| Textes dans les images | Ignorés par la plupart des outils | Un modèle vision est nécessaire (disponible sur les plans payants) |
| Commentaires et annotations | Perdus à l'extraction | Vérifier la présence des commentaires en sortie |
**Règle d'or** : après chaque traduction, faites un contrôle *structurel* (même nombre d'onglets, mêmes fusions, mêmes formules) avant le contrôle sémantique. Un outil qui traduit en place vous fait gagner ce contrôle : vous vérifiez le texte, pas la mise en page.
## Comparatif des approches (2026)
| Approche | Format préservé | Formules | Coût | Délai |
|---|---|---|---|---|
| Traducteur humain | Oui (réintégration manuelle) | Oui | 50100× plus cher | Jourssemaines |
| Google Translate (copier-coller) | Non | Non | Gratuit | Minutes |
| Outil one-shot (DocTranslator et sim.) | Partiel | Non | Payant, variable | Minutes |
| **Traduction en place (Office Translator)** | **Oui, 100 %** | **Oui** | **À partir de 0,06 €/page** | **Minutes** |
## Comment choisir un outil de traduction de documents
Avant de payer, testez sur *votre* fichier le plus sale (pas un exemple propre) et vérifiez :
1. **Structure** : mêmes onglets, mêmes fusions, mêmes colonnes
2. **Formules** : ouvrez la barre de formule, pas seulement la valeur affichée
3. **Styles** : polices, bordures, couleurs de cellules
4. **Formats** : nombres, dates, pourcentages, devise
5. **Confidentialité** : où vont vos fichiers ? Combien de temps sont-ils conservés ? (Chez nous : suppression automatique — envois sous 30 minutes, résultats sous 2 heures —, zéro rétention, jamais utilisé pour l'entraînement de modèles.)
## Conclusion
Traduire un Excel sans perdre la mise en forme, c'est possible — mais seulement avec un outil qui travaille *dans* la structure du fichier, pas *autour*.
Testez le plan gratuit (2 documents/mois, sans carte bancaire) sur votre fichier le plus complexe, et comparez. C'est le meilleur moyen de voir la différence.
---
**Métadonnées SEO**
- Title : « Traduire un Excel sans perdre la mise en forme : guide 2026 »
- Meta description : « Formules, cellules fusionnées, styles : ce qui casse vraiment vos Excel traduits, et comment les traduire en place sans rien perdre. Test gratuit, sans carte. »
- Mot-clés principaux : traduire excel, translation excel, traduire document excel, mise en forme excel
- URLs cibles : /blog/traduire-excel-mise-en-forme

View File

@@ -0,0 +1,74 @@
# Les 5 meilleurs outils de traduction de documents comparés (2026)
> Article comparatif SEO — brouillon complet. À compléter avec captures réelles de chaque outil (section « verdict ») avant publication.
## Introduction
En 2026, traduire un document de bureau est devenu un marché encombré : traducteurs humains, assistants IA, outils one-shot, plateformes TMS d'entreprise. Mais très peu d'entre eux résolvent le vrai problème : **traduire sans casser la mise en page**.
Nous avons comparé les 5 approches que vous allez réellement croiser, avec leurs forces, leurs faiblesses et le cas d'usage où chacune gagne. (Nous en faisons partie — ce comparatif est donc à lire avec cette lunette, et nous avons pris soin de ne pas nous déclarer vainqueur par défaut.)
## Les 5 catégories
### 1. Traducteurs humains (agences)
- **Force** : qualité sémantique imbattable, gestion des nuances, relecture
- **Faiblesse** : coût (50100× une machine) et délai (jours à semaines)
- **Gagne quand** : contenus à forte valeur, juridiques, marketing, tout ce qui ne supporte pas l'erreur
- **À savoir** : un humain traduit *le texte*. La réintégration dans le fichier (Excel, PPT) reste souvent une étape manuelle distincte, facturée à part
### 2. Google Translate (docs)
- **Force** : gratuit, instantané, 100+ langues, connu de tous
- **Faiblesse** : aplatit le document en texte brut. Formules, fusions, styles, animations : perdus. Qualité « correcte » mais non professionnelle
- **Gagne quand** : traduction d'exploration, comprendre un document, pas le livrer
- **À savoir** : c'est l'étalon du « gratuit qui casse le format » — le contrepied de notre positionnement
### 3. DeepL (documents)
- **Force** : qualité de traduction supérieure à Google pour les textes professionnels
- **Faiblesse** : formatage limité sur les documents complexes ; moteur unique (vous ne choisissez pas l'IA) ; prix plus élevés
- **Gagne quand** : textes longs, qualité prioritaire, budget disponible
- **À savoir** : DeepL est l'un de *nos* moteurs — sur les plans payants, vous pouvez le choisir par document, au même titre que d'autres
### 4. Plateformes TMS d'entreprise (Smartling, Smartcat, Transifex)
- **Force** : gestion de flux, glossaires, collaboration, intégrations
- **Faiblesse** : lourdes, chères, surdimensionnées pour une PME ; orientées localisation logicielle/i18n plus que documents bureautiques
- **Gagne quand** : grande entreprise, volumes massifs, processus multi-équipes
- **À savoir** : Transifex est notamment très fort sur la localisation de logiciels, moins sur les fichiers Word/Excel/PowerPoint
### 5. Traduction en place multi-moteurs (Office Translator)
- **Force** : 100 % de préservation du format (fusions, formules, styles, slides), choix parmi 7 moteurs, glossaires techniques, API
- **Faiblesse** : plus jeune que les TMS ; l'écosystème est encore en construction
- **Gagne quand** : PME/ agences qui veulent du « prêt à livrer » sans réfection manuelle
- **À savoir** : c'est nous ; le plan Free (2 docs/mois) permet de tester sans carte
## Tableau récapitulatif
| Critère | Humain | Google | DeepL | TMS entreprise | **Office Translator** |
|---|---|---|---|---|---|
| Format préservé | Manuel | Non | Partiel | Variable | **Oui (100 %)** |
| Formules Excel | Oui | Non | Non | Variable | **Oui** |
| Choix du moteur | n/a | 1 | 1 | 12 | **7** |
| Glossaires | Oui | Non | Oui (payant) | Oui | **Oui** |
| API | Non | Oui | Oui | Oui | **Oui (Business)** |
| Coût relatif | 50100× | 0× | 510× | 2050× | **1× (réf.)** |
| Délai | Jours | Secondes | Minutes | Jours | **Minutes** |
| Confidentialité | Contractuel | Variable | Variable | Contractuel | **Zéro rétention, TTL 60 min** |
## Verdict par profil
- **Freelance / étudiant** → plan Free, puis Starter si volume
- **PME internationale** → Pro (multi-moteurs + IA + glossaires)
- **Agence de traduction** → Business (API + 5 sièges) pour un premier passage machine, relecture humaine
- **Grande entreprise / volume massif** → comparez avec un TMS ; l'API Business peut suffire, ou Enterprise sur mesure
## Conclusion
Il n'y a pas de « meilleur outil » universel — il y a le bon outil pour votre cas d'usage. La seule question qui ne devrait jamais se poser : **votre document ressort-il intact ?** C'est le critère que la plupart des outils gratuits et one-shot échouent, et celui sur lequel nous avons construit tout le produit.
Testez le plan gratuit sur votre fichier le plus sale et jugez.
---
**Métadonnées SEO**
- Title : « Outils de traduction de documents 2026 : comparatif complet »
- Meta description : « Humain, Google, DeepL, TMS ou traduction en place : 5 approches comparées sur format, prix, délai et confidentialité. Trouvez celle qui vous correspond. »
- Mots-clés : comparatif traduction documents, meilleur outil traduction, deepl vs google, traduire word excel powerpoint
- URL : /blog/comparatif-outils-traduction-document-2026

View File

@@ -0,0 +1,83 @@
# Traduction professionnelle de documents : guide complet pour les PME
> Article guide SEO — brouillon complet. À illustrer avec 2 captures d'écran réelles (glossaire + dashboard) avant publication.
## Introduction
Une PME qui exporte, qui a des clients étrangers ou qui s'internationalise produit des dizaines de documents par mois : fiches techniques, matrices tarifaires, contrats, présentations commerciaux, manuels utilisateurs. Traduire tout ça « à la main » coûte une fortune et des semaines. Le guide complet pour y voir clair — et choisir sans se faire avoir.
## 1. Évaluez votre volume réel
Avant de choisir quoi que ce soit, mesurez :
- **Documents/mois** par type (Excel, Word, PowerPoint)
- **Pages/moyenne par document** (c'est la page, pas le document, qui se paie en traduction humaine)
- **Fréquence des mises à jour** (un tarif qui change chaque mois ne se traduit pas une fois)
- **Langues cibles** (1 langue = simple ; 5 langues = le coût multiplie par 5)
**Règle rapide** : si vous dépassez ~50 pages/mois, la traduction humaine pure devient votre poste de dépense n°1 en localisation.
## 2. Les 3 stratégies
### Stratégie A — 100 % humaine
- Qualité maximale, zéro risque
- Coût : comptez 0,080,25 € le mot selon le domaine (légal et technique en haut de fourchette)
- Délai : 25 jours ouvrés par lot
- **Pour qui** : contenu à forte valeur, marchés réglementés, image de marque
### Stratégie B — 100 % machine
- Coût quasi nul, délai en minutes
- Risque : formats cassés (si l'outil est mauvais), terminologie incohérente, erreurs sémantiques
- **Pour qui** : contenu interne, exploration, brouillons
### Stratégie C — Hybride (la plus rentable pour la majorité des PME)
1. **Premier passage machine** avec un outil qui préserve le format (fusions, formules, styles intacts)
2. **Terminologie verrouillée** via un glossaire (vos termes, pas ceux du moteur)
3. **Relecture humaine ciblée** sur les documents clients à forte valeur uniquement
Résultat typique : **7090 % du délai humain en moins, pour 1020 % du coût** — en gardant la qualité sur ce qui compte.
## 3. Les critères de choix d'un outil
| Critère | Pourquoi c'est décisif |
|---|---|
| **Préservation du format** | Le vrai coût caché est la réfection manuelle. Testez sur VOTRE fichier le plus complexe |
| **Multi-moteurs** | Un moteur unique = un point de défaillance et un plafond de qualité. 7 moteurs au choix = la bonne réponse au bon prix |
| **Glossaires** | Sans glossaire, « unité de froid » devient « cold unit » un jour et « chiller » le lendemain. Inacceptable en B2B |
| **Coût par page** | Comparez toujours à la page, jamais au document (un document fait 3 pages ou 300) |
| **Confidentialité** | Où vont vos fichiers ? Durée de conservation ? Utilisation pour l'entraînement ? (Chez nous : suppression automatique — envois 30 min, résultats ≤ 2 h —, zéro rétention, jamais d'entraînement sur vos données) |
| **API** | Si vous voulez automatiser (CRM, e-signature, ERP), l'API n'est pas optionnelle |
## 4. Mettre en place le glossaire (l'étape que tout le monde saute)
1. **Collectez** vos 50200 termes récurrents (produits, acronymes, termes légaux, noms propres)
2. **Validez** la traduction officielle de chaque terme avec votre équipe (une seule source de vérité)
3. **Chargez** le glossaire dans l'outil et appliquez-le à chaque document
4. **Itérez** : chaque nouvelle ambiguïté trouvée en relecture devient une entrée de glossaire
Après 2 mois de glossaire mature, la relecture humaine se concentre sur le sens, pas sur la terminologie. C'est là que le ROI explose.
## 5. Confiance et sécurité
- **Données** : chiffrement en transit (TLS), suppression automatique des fichiers (30 min pour les envois, 2 h max pour les résultats, chez nous)
- **Conformité** : vérifiez les engagements de l'éditeur (RGPD pour les clients UE)
- **Sauvegarde de votre travail** : gardez toujours le fichier source en version originale — aucun outil ne devrait être un point de perte unique
## 6. Ce que ça coûte vraiment
Repère : une page de document bureautique traduite et *réintégrée* par un humain coûte 520 €. En hybride (machine + relecture ciblée), comptez 0,501,50 € la page. Sur 500 pages/mois, l'écart est de **plusieurs milliers d'euros par mois**.
C'est la ligne à regarder avant de signer quoi que ce soit.
## Conclusion
La traduction professionnelle de documents pour une PME ne se joue pas sur « machine ou humain » — elle se joue sur **format préservé + terminologie verrouillée + relecture ciblée**. Choisissez l'outil qui livre les deux premières, et gardez les humains sur la troisième.
Le plan Free (2 documents/mois, sans carte) vous permet de tester la méthode sur vos vrais fichiers avant de décider.
---
**Métadonnées SEO**
- Title : « Traduction professionnelle de documents : guide PME 2026 »
- Meta description : « Humain, machine ou hybride : le guide complet pour traduire vos documents PME sans casser le format ni le budget. Coûts, glossaires, confidentialité. »
- Mots-clés : traduction documents PME, traduction professionnelle, coût traduction, glossaire traduction
- URL : /blog/traduction-professionnelle-pme-guide

View File

@@ -0,0 +1,90 @@
# Pourquoi DeepL et Google Translate « détruisent » vos documents Excel
> Article problématique SEO — brouillon complet. Ton direct. À illustrer d'un avant/après réel (capture) avant publication.
## Introduction
DeepL est excellent. Google Translate est gratuit. Et pourtant, des équipes entières maudissent les deux chaque semaine pour la même raison : **leurs fichiers Excel n'ont plus rien à voir avec l'original une fois traduits**.
Ce n'est pas un bug. C'est un choix d'architecture. Voici ce qui se passe réellement sous le capot, et ce qu'il faudrait pour faire mieux.
## Ce que ces outils font *vraiment* d'un fichier Excel
### Un .xlsx n'est pas une grille, c'est du XML
Sous le capot, `compta.xlsx` est une archive ZIP contenant :
- `sheet1.xml` — les cellules, leurs valeurs, leurs styles
- `sharedStrings.xml` — le texte dédupliqué
- `styles.xml` — polices, bordures, formats de nombre
- `workbook.xml` — fusions de cellules, onglets, mises en page
### Le pipeline « standard » de traduction
Tous les outils de traduction de documents — y compris les très bons — suivent ce schéma :
```
Excel → extraction en texte brut → traduction → réinjection dans un fichier NEUF
```
Chaque étape de perte :
| Étape | Ce qui est perdu |
|---|---|
| Extraction | Formules (remplacées par la valeur), fusions, styles, formats de nombre, commentaires |
| Traduction | Rien — c'est là que ça va bien |
| Réinjection | Tout ce qui n'était pas du texte : le fichier de sortie est une *coquille vide* |
**Le résultat** : le texte est en anglais, mais votre fichier de comptabilité est devenu un fichier de texte habillé en Excel. Les formules sont mortes, les colonnes ont bougé, les pourcentages sont devenus des décimaux.
### Pourquoi DeepL ne peut pas faire « mieux » (en l'état)
DeepL traduit *le texte*, superbement. Mais son API document est pensée pour du texte, pas pour la **structure** d'un fichier Office. L'ingénierie de réintégration (reconstruire le XML d'origine avec les chaînes traduites, en conservant formules et fusions) est exactement le travail qu'un outil *spécialisé* fait — et qu'un traducteur généraliste ne fait pas.
Google, lui, ne fait même pas l'étape 3 proprement : vous collez, il recolle, et c'est tout.
## Ce qu'un outil « en place » fait de différent
La différence tient à une inversion : **ne jamais sortir le texte de sa structure**.
1. **Parse** le XML natif (cellules + fusions + formules + styles)
2. **Extrait uniquement** les chaînes traduisables, en mémorisant position et style
3. **Traduit** ces chaînes (au choix : DeepL, Google, ou un LLM contextuel)
4. **Réinjecte** dans *le même* XML
5. **Regénère** le fichier
Même structure, même nombre de cellules, mêmes fusions, mêmes formules — du texte en langue cible. C'est la seule architecture qui donne un fichier « prêt à livrer ».
## Testez-le vous-même (5 minutes)
Prenez votre fichier le plus sale — fusions, formules, colonnes formatées :
1. Traduisez-le avec l'outil que vous utilisez habituellement
2. Ouvrez la **barre de formule** d'une cellule qui en contenait une
3. Vérifiez une fusion de cellules
4. Regardez un pourcentage
Si vous avez dû « refaire » le fichier, vous venez de payer la traduction *deux fois* : une fois à la machine, une fois à vous.
## Ce que ça change concrètement
| | Pipeline standard | Traduction en place |
|---|---|---|
| Formules | Morte (valeur figée) | Intacte |
| Fusions | Perdues/décalées | Intactes |
| Styles | Perdus | Intacts |
| Temps total | Traduction + réfection | Traduction seule |
| Fichier livrable | Non | Oui |
## Conclusion
Le problème n'est pas la qualité de la traduction — c'est la **réintégration**. DeepL et Google excellent sur la première ; personne ne fait correctement la seconde, sauf les outils spécialisés.
Si vos documents comptent (fusions, formules, slides), testez un outil qui travaille *dans* la structure du fichier. Le plan Free d'Office Translator (2 docs/mois, sans carte) est fait pour ça : mettez-lui votre fichier le plus sale, et comparez.
---
**Métadonnées SEO**
- Title : « Pourquoi DeepL et Google cassent vos Excel (et comment faire mieux) »
- Meta description : « Formules mortes, fusions perdues : ce que les traducteurs « standard » font à vos fichiers Excel, et l'architecture qui préserve 100 % du format. »
- Mots-clés : deepl excel, google translate excel, excel traduit mise en forme perdue
- URL : /blog/pourquoi-deepl-google-cassent-vos-excel

View File

@@ -0,0 +1,165 @@
# Auto-héberger son outil de traduction de documents : guide Docker complet
> Article SEO « self-hosted » — brouillon complet. Capture l'audience développeurs/homelab. Basé sur le déploiement réel du projet (Docker Compose, Postgres, Redis).
## Introduction
Un outil de traduction de documents posé sur un SaaS pose toujours la même question : **où vont mes fichiers ?** Pour les documents confidentiels (compta, juridique, RH, brevets), l'auto-hébergement est la seule réponse qui tienne.
Ce guide montre comment monter une pile complète de traduction de documents — API, base, cache, interface — sur votre propre infrastructure, avec Docker. (Le projet dont on s'inspire est open source : Office Translator / Wordly.art.)
## Architecture cible
```
[Client web / API]
[Nginx (reverse proxy, TLS)]
[FastAPI (Python 3.11+, port 8000)]
├── [PostgreSQL] ← utilisateurs, glossaires, quotas
├── [Redis] ← rate limiting (token bucket), files
└── [Fichiers] ← uploads / outputs (volume local)
[Next.js (port 3000)] ← interface
```
Points clés :
- **FastAPI** asynchrone pour l'API de traduction (Swagger sur `/docs`)
- **PostgreSQL** pour les données structurées, **Redis** pour le rate limiting par IP et les files
- **Nginx** devant pour le TLS et le reverse proxy
- Volumes persistants pour les fichiers (suppression automatique au TTL, ex. 60 min)
## 1. Prérequis
- Une machine Linux (VPS, serveur physique, ou même un NAS)
- Docker + Docker Compose installés
- Un domaine pointant vers la machine (pour le TLS)
- Les clés API de vos moteurs de traduction (au minimum Google ; DeepL, OpenRouter, OpenAI, x.ai/Zai selon vos besoins)
## 2. Déploiement
### 2.1 Cloner et configurer
```bash
git clone <URL_DU_DÉPÔT> /opt/wordly # dépôt à adapter (miroir public recommandé)
cd /opt/wordly
cp .env.example .env
```
Dans `.env`, renseignez au minimum :
```ini
# Moteurs — le Google « classic » (gratuit) ne demande AUCUNE clé.
# Clés optionnelles pour les moteurs payants :
GOOGLE_CLOUD_API_KEY=...
# ou DEEPL_API_KEY, OPENROUTER_API_KEY, OPENAI_API_KEY...
# Optionnel : OCR Mistral pour les PDF scannés
# MISTRAL_API_KEY=...
# Sécurité
SECRET_KEY=<générer une clé longue et aléatoire>
CORS_ORIGINS=https://wordly.example
APP_ENV=production
```
> **Sécurité** : `CORS_ORIGINS` ne doit jamais être `*` en production — l'application le refuse et refuse de démarrer. Générez `SECRET_KEY` avec `openssl rand -hex 32`.
### 2.2 Lancer la pile
```bash
docker compose up -d --build
```
Ça démarre :
- L'API sur `:8001` côté hôte (mappée sur le 8000 du conteneur ; docs Swagger sur `http://localhost:8001/docs`)
- L'interface sur `:3000`
- Postgres + Redis en interne
### 2.3 Mettre Nginx devant (TLS)
```nginx
server {
listen 443 ssl http2;
server_name wordly.example;
ssl_certificate /etc/letsencrypt/live/wordly.example/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wordly.example/privkey.pem;
# Headers de sécurité (HSTS, CSP)
add_header Strict-Transport-Security "max-age=63072000" always;
add_header X-Content-Type-Options nosniff always;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /api/ {
proxy_pass http://127.0.0.1:8001;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
```
Renouvelez le certificat avec `certbot renew` (cron).
## 3. Exploitation
### Surveillance
- `GET /health` — état de l'API, des moteurs, de la base et du cache
- Prometheus + Grafana (fournis en `docker-compose.monitoring.yml`) pour les métriques système et applicatives
### Sauvegarde (non négociable)
La base Postgres et le répertoire de fichiers sont votre patrimoine. Deux couches :
1. **Sauvegarde quotidienne de la base** :
```bash
docker compose exec db sh -c 'pg_dump -U ${POSTGRES_USER:-translate} ${POSTGRES_DB:-translate_db}' | gzip > /backups/wordly-$(date +%F).sql.gz
```
2. **Réplication vers un NAS/autre site** via `rsync` + SSH (le projet fournit un plan de sauvegarde automatique et une procédure de restauration en ~20 min, y compris bascule sur un serveur de secours)
Règle d'or : **une sauvegarde qu'on n'a jamais restaurée est une sauvegarde qui n'existe pas**. Testez la restauration au moins une fois par trimestre.
### Nettoyage automatique
Les fichiers uploadés sont supprimés automatiquement après leur TTL (60 min par défaut). Le nettoyage est orchestré côté application ; surveillez le disque quand même (un gros fichier en attente peut saturer le volume).
## 4. Durcissement
- [ ] `CORS_ORIGINS` restreint à vos domaines
- [ ] `SECRET_KEY` unique et stockée en variable d'environnement (jamais dans le repo)
- [ ] Pas de port Postgres/Redis exposé publiquement (réseau Docker interne uniquement)
- [ ] Rate limiting actif (token bucket dans Redis, par IP client)
- [ ] Fail2ban sur SSH si l'accès serveur passe par SSH
- [ ] Mises à jour de Docker + des images (vulnérabilités)
- [ ] Monitoring des disques, CPU et mémoire (Grafana)
## 5. Coût vs SaaS
| Poste | Self-hosted (VPS 4 vCPU / 8 Go) | SaaS |
|---|---|---|
| Infrastructure | ~4080 €/mois | Inclus |
| Coût par page | Coût des API uniquement | Coût API + marge |
| Maîtrise des données | Totale | Partagée |
| Maintenance | À votre charge | À charge de l'éditeur |
| Mises à jour / sécurité | À votre charge | À charge de l'éditeur |
Le self-hosted gagne quand **les données sont sensibles** ou quand le **volume est énorme**. Il perd quand vous n'avez personne pour faire la maintenance — dans ce cas, le SaaS est souvent plus fiable *en pratique*, même si les fichiers transigent avec un tiers.
## Conclusion
Auto-héberger une pile de traduction de documents, c'est 1 h de déploiement et une vraie responsabilité d'exploitation. Avec Docker Compose, Postgres, Redis et Nginx, l'architecture tient sur une seule machine ; ce qui coûte ensuite, c'est la discipline (sauvegardes, durcissement, mises à jour).
Si les documents sont confidentiels, cette discipline se paie d'elle-même.
---
**Métadonnées SEO**
- Title : « Auto-héberger un outil de traduction de documents : guide Docker 2026 »
- Meta description : « FastAPI, Postgres, Redis, Nginx : déployez une pile de traduction de documents sur votre propre infra. Sauvegardes, durcissement, coût vs SaaS. »
- Mots-clés : auto héberger traduction, docker traduction documents, self hosted translation
- URL : /blog/auto-heberger-traduction-documents-docker