Documentation Index
Fetch the complete documentation index at: https://docs.fim.ai/llms.txt
Use this file to discover all available pages before exploring further.
Option A : Docker (Recommandé)
Aucun Python ou Node.js local requis — tout est construit à l’intérieur du conteneur.fim-data, fim-uploads) et survivent aux redémarrages du conteneur.
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 un développement actif avec rechargement en direct, utilisez Option B ci-dessous.
Option B : Développement local
Prérequis : Python 3.11+, uv, Node.js 18+, pnpm.| Commande | Ce qui démarre | URL |
|---|---|---|
./start.sh | Next.js + FastAPI | http://localhost:3000 (UI) + :8000 (API) |
./start.sh dev | Identique, avec rechargement à chaud (Python --reload + Next.js HMR) | Identique |
./start.sh dev:api | API uniquement, mode développement (--reload) | http://localhost:8000/api |
./start.sh dev:ui | Next.js uniquement, mode développement (HMR) | http://localhost:3000 |
./start.sh api | FastAPI uniquement (sans interface, pour intégration ou tests) | http://localhost:8000/api |
Configuration
FIM One fonctionne avec n’importe quel fournisseur de LLM compatible avec OpenAI — OpenAI, DeepSeek, Anthropic, Qwen, Ollama, vLLM, et bien d’autres.| Fournisseur | LLM_API_KEY | LLM_BASE_URL | LLM_MODEL |
|---|---|---|---|
| OpenAI | sk-... | (par défaut) | gpt-4o |
| DeepSeek | sk-... | https://api.deepseek.com/v1 | deepseek-chat |
| Anthropic | sk-ant-... | https://api.anthropic.com/v1 | claude-sonnet-4-6 |
| Ollama (local) | ollama | http://localhost:11434/v1 | qwen2.5:14b |
.env minimal :
Déploiement en production
Docker (Recommandé)
docker compose up -d démarre 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 inter-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), Redis ou PostgreSQL ne sont pas nécessaires — SQLite fonctionne 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 :
Tunnel Cloudflare
Pour une configuration sans ports ouverts, utilisez Cloudflare Tunnel à la place de Nginx. Tout le trafic transite par les serveurs périphériques de Cloudflare — pas besoin d’exposer les ports 80/443, de gérer les certificats SSL ou de configurer les règles de pare-feu.Créer un tunnel
Allez sur Cloudflare Zero Trust → Networks → Tunnels → Create a tunnel.
Choisissez Cloudflared comme type de connecteur.
Configurer le nom d'hôte public
Dans la configuration du tunnel, ajoutez un nom d’hôte public :
Laissez tous les autres paramètres (HTTP Host Header, Chunked Encoding, Timeouts, Access) à leurs valeurs par défaut.
| Champ | Valeur |
|---|---|
| Type | HTTP |
| URL | fim-one:3000 |
L’URL utilise le nom du service Docker
fim-one, pas localhost, car cloudflared s’exécute en tant que conteneur séparé dans le même réseau Docker.Copier le jeton du tunnel
Sur la page Configure du tunnel, trouvez la commande d’installation — elle contient un jeton commençant par
eyJ.... Copiez-le.Déployer avec la surcouche tunnel
docker-compose.tunnel.yml ajoute un conteneur sidecar cloudflared. Le fichier docker-compose.yml de base reste inchangé — les utilisateurs de la communauté sans Cloudflare peuvent continuer à utiliser docker compose up -d comme avant.Supprimer l'ancien enregistrement DNS
Si votre domaine avait précédemment un enregistrement A pointant vers l’adresse IP de votre serveur, supprimez-le dans le DNS Cloudflare. Le tunnel crée automatiquement un enregistrement CNAME pointant vers son point de terminaison périphérique.
Déploiement de script (Bare Metal)
Pour les serveurs bare-metal ou les gestionnaires de processus personnalisés, utilisez./start.sh directement :