Option A : Docker (Recommandé)
Aucun Python ou Node.js local requis — tout est construit à l’intérieur du conteneur.Configurer — seul LLM_API_KEY est requis
cp example.env .envModifier .env : définir LLM_API_KEY (et optionnellement LLM_BASE_URL, LLM_MODEL)
Construire et exécuter (première fois, ou après avoir récupéré du nouveau code)
docker compose up —build -dfim-data, fim-uploads) et survivent aux redémarrages des conteneurs.
Remarque : Le mode Docker ne supporte pas le rechargement à chaud. Les modifications du code nécessitent de reconstruire l’image (docker compose up --build -d). Pour le développement actif avec rechargement en direct, utilisez l’option B ci-dessous.
Option B : Développement local
Prérequis : Python 3.11+, uv, Node.js 18+, pnpm.Modifier .env : définir LLM_API_KEY
Installer
uv sync —all-extras cd frontend && pnpm install && cd ..Lancer (avec rechargement à chaud)
./start.shDéploiement en production
Docker (Recommandé)
docker compose up -d met en place tout ce dont vous avez besoin — aucune configuration manuelle de service requise :
| Service | Objectif | Configuré par |
|---|---|---|
| fim-one | API + Frontend | .env (vos clés LLM, etc.) |
| Redis | Relais d’interruption entre workers | Auto-configuré par compose |
Mise à l’échelle avec des Workers
Par défaut, l’API s’exécute avec un seul processus worker. Pour gérer plus d’utilisateurs simultanés, augmentez les workers via.env :
- PostgreSQL — SQLite est single-writer et ne supporte pas les écritures concurrentes. Définissez
DATABASE_URLsur une chaîne de connexion PostgreSQL. - Redis — déjà inclus dans Docker Compose (auto-configuré). Gère le relais d’interruption/injection entre workers.
WORKERS=1 (par défaut), aucun Redis ou PostgreSQL n’est nécessaire — SQLite fonctionne très bien.
Proxy inverse Nginx
Pour HTTPS et un domaine personnalisé, placez un proxy inverse Nginx devant :/api/*. Seul le port 3000 doit être exposé.
Bac à sable d’exécution de code
Si vous utilisez le bac à sable d’exécution de code (CODE_EXEC_BACKEND=docker), montez le socket Docker :
Déploiement de script (Bare Metal)
Pour les serveurs bare-metal ou les gestionnaires de processus personnalisés, utilisez./start.sh directement :