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.Configuration
FIM One fonctionne avec n’importe quel fournisseur de LLM compatible avec OpenAI — OpenAI, DeepSeek, Anthropic, Qwen, Ollama, vLLM, et bien d’autres.
Jina AI déverrouille la recherche/récupération web, l’intégration vectorielle et le pipeline RAG complet (niveau gratuit disponible).
Fichier
.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 :
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.1
Créer un tunnel
Allez sur Cloudflare Zero Trust → Networks → Tunnels → Create a tunnel.
Choisissez Cloudflared comme type de connecteur.
2
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.
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.3
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.4
Ajouter le jeton à .env
5
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.6
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.
7
Fermer les ports du serveur
Supprimez (ou commentez) la section
ports de docker-compose.yml sur votre serveur. Le trafic transite maintenant exclusivement par le tunnel — aucun port entrant n’est nécessaire.Déploiement de script (Bare Metal)
Pour les serveurs bare-metal ou les gestionnaires de processus personnalisés, utilisez./start.sh directement :