Skip to main content
☁️ Option 0 : Cloud (Configuration zéro) Vous ne voulez pas auto-héberger ? Essayez FIM One instantanément sur cloud.fim.ai — pas de Docker, pas de clés API, pas de configuration. Connectez-vous et vous êtes prêt. Accès anticipé.

Option A : Docker (Recommandé)

Aucun Python ou Node.js local requis — tout est construit à l’intérieur du conteneur.
Ouvrez http://localhost:3000 — au premier lancement, vous serez guidé pour créer un compte administrateur. C’est tout. Après la construction initiale, les démarrages suivants ne nécessitent que :
Les données sont conservées dans les volumes nommés Docker (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 :
Pour une liste complète de toutes les options de configuration, consultez la référence Variables d’environnement.

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 :
Exigences multi-worker :
  • PostgreSQL — SQLite est single-writer et ne supporte pas les écritures concurrentes. Définissez DATABASE_URL sur une chaîne de connexion PostgreSQL.
  • Redis — déjà inclus dans Docker Compose (auto-configuré). Gère le relais d’interruption/injection entre workers.
Avec 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 :
L’API s’exécute en interne sur le port 8000 — Next.js proxifie automatiquement les requêtes /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.
Utilisateurs de la Chine continentale : Les plans Cloudflare Free/Pro/Business n’ont pas de PoP (Points-of-Presence) en Chine continentale. Le trafic en provenance de la Chine continentale est acheminé vers des serveurs périphériques à l’étranger (généralement US West), ce qui provoque des erreurs 502 fréquentes et une latence élevée. N’utilisez pas Cloudflare Tunnel si vos utilisateurs principaux sont en Chine continentale. Cloudflare Enterprise avec China Network (partenariat JD Cloud) est nécessaire pour un accès fiable en Chine continentale.
Configuration :
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

La surcouche 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.
Cloudflare Tunnel est gratuit sur tous les plans, y compris le plan Free. Il n’y a pas de limites de bande passante ou de trafic.

Déploiement de script (Bare Metal)

Pour les serveurs bare-metal ou les gestionnaires de processus personnalisés, utilisez ./start.sh directement :
Dans ce mode, Redis n’est pas inclus automatiquement. Le système s’exécute en mode single-worker, in-process par défaut — adapté aux déploiements à faible trafic. Pour activer le multi-worker avec Redis localement :