v2.11.162, démarre l’API sur http://localhost:3002 et vérifie qu’une requête POST /v2/scrape renvoie du Markdown.
Choisir entre l’auto-hébergement et Firecrawl Cloud
Auto-hébergez Firecrawl si
- Vous souhaitez contrôler le code source ou l’infrastructure. Ce guide vous permet d’exécuter l’API et les services qui la prennent en charge sur votre machine.
- Vous êtes à l’aise avec l’exploitation de la pile. Vous serez responsable des mises à niveau, de la sécurité, du stockage, de la supervision et de la récupération.
- Vous souhaitez valider Firecrawl dans votre environnement. Commencez par faire fonctionner la configuration de référence, puis définissez les mesures de contrôle dans Avant la production.
Ce qu’implique l’auto-hébergement
- Vous êtes responsable des mises à niveau, des secrets, du stockage, de la supervision, de la récupération et de la réponse aux incidents.
- Le scraping envoie toujours des requêtes sortantes vers les sites web cibles. Les fournisseurs facultatifs de proxy, de parsing ou d’IA ajoutent d’autres flux de données.
- Ce guide simplifie volontairement la première exécution. Faites fonctionner un premier scrape, puis modifiez une seule décision à la fois.
- Les commandes sont épinglées à
v2.11.162. Une autre version peut utiliser un contrat Compose différent.
Auto-hébergez Firecrawl avec Docker Compose
Commencez avec ces valeurs par défaut
- Version : Firecrawl
v2.11.162. Figez d’abord le code et la configuration. Effectuez la mise à niveau après avoir examiné le fichierdocker-compose.yamlet les notes d’auto-hébergement de la version cible. - Authentification de l’API : désactivée pour cette exécution locale. Ne l’ajoutez qu’avec une conception complète et prise en charge de la gestion des identités et de la base de données ; une seule variable d’environnement ne suffit pas.
- File d’attente : PostgreSQL. Conservez-la, sauf si vous souhaitez délibérément exploiter le backend FoundationDB facultatif.
- Interface d’administration de la file d’attente : désactivée. Ne l’activez qu’avec une
BULL_AUTH_KEYrobuste et des contrôles réseau. - Fournisseurs d’IA et de scraping avancé : non configurés. Ajoutez un fournisseur lorsqu’une fonctionnalité dont vous avez besoin l’exige.
Prérequis
- Git
- Docker Engine ou Docker Desktop
- Docker Compose v2, appelé avec
docker compose curlpour les requêtes de vérification
3002 est disponible et que Docker dispose de suffisamment de ressources pour créer et exécuter plusieurs services. Firecrawl ne publie pas de configuration minimale vérifiée pour l’hôte de cette pile.
Clonez la version validée
v2.11.162. Clonez cette version précise afin de maintenir le code, les commandes et la configuration synchronisés :
docker-compose.yaml et les notes sur l’auto-hébergement avant de réutiliser ces valeurs.
Configurer le déploiement d’évaluation
.env minimal requis à la racine du dépôt :
.env. Conservez POSTGRES_DB=postgres pour v2.11.162, car la configuration pg_cron incluse cible cette base de données. Compose transmet ces valeurs à l’API et au service PostgreSQL.
apps/api/.env.example est destiné au développement de l’API, et non à servir directement de fichier Compose.
Lors de cette première exécution, l’authentification à la base de données est désactivée : les requêtes n’ont donc besoin ni d’une
clé API ni d’un en-tête Authorization.NUQ_BACKEND ni BULL_AUTH_KEY. Vous utiliserez la file d’attente PostgreSQL sans lancer l’interface d’administration de la file d’attente — moins de composants à gérer pour le premier scrape.
Créer et démarrer Firecrawl
docker compose ps --all devrait afficher l’API et les services auxiliaires en cours d’exécution, ainsi que les services d’initialisation ponctuelle terminés. Si certains services démarrent encore, patientez un peu.
Vérifier l’accessibilité de l’API
Effectuer un test de validation fonctionnel
Prise en charge des fonctionnalités en auto-hébergement
Pour une comparaison plus générale des produits, consultez Open Source vs Cloud. Pour la configuration propre à une version, utilisez le fichier
docker-compose.yaml épinglé comme référence complémentaire.
Avant la production
- Si les données doivent survivre au remplacement d’un service, ajoutez un stockage persistant pour PostgreSQL, Redis et RabbitMQ, puis définissez et testez les procédures de sauvegarde et de restauration. Le fichier Compose fourni n’ajoute pas ces volumes.
- Si des utilisateurs ou des réseaux non fiables peuvent accéder à l’API, mettez en place un mécanisme d’authentification pris en charge, des contrôles d’accès réseau et TLS au niveau d’un proxy inverse ou d’un ingress. N’exposez pas publiquement cette référence non authentifiée.
- Si vous avez des exigences de disponibilité ou de capacité, définissez des objectifs de disponibilité, une supervision, le dimensionnement des ressources, des seuils de mise à l’échelle ainsi que des procédures de mise à niveau et de restauration. Les limites définies dans Compose ne constituent pas des exigences minimales vérifiées.
- Si la localisation des données ou la conformité est importante, cartographiez les requêtes vers les sites web cibles et chaque fournisseur facultatif d’IA, de proxy ou d’analyse avant de les activer.
- Si les secrets doivent être gérés de manière centralisée, déplacez le mot de passe de la base de données hors de
.envvers le système de gestion des secrets de votre plateforme.
.env ne rend la pile prête pour la production.
Étapes suivantes
- Vous êtes encore en phase d’évaluation ? Gardez l’API sur un réseau de confiance et exécutez
docker compose downune fois terminé. - Vous ajoutez une fonctionnalité open source ? Utilisez Prise en charge des fonctionnalités en auto-hébergement pour identifier le fournisseur ou service requis, puis testez cette option séparément.
- Vous modifiez le code de Firecrawl ? Passez à Exécution locale pour accéder à l’environnement de développement des contributeurs.
- Vous connectez un client ? Configurez la CLI Firecrawl ou le serveur MCP local avec l’URL vérifiée de votre API.
- Vous passez à Kubernetes ? Commencez par les références Kubernetes ou Helm versionnées liées depuis
SELF_HOST.md, puis définissez explicitement les décisions de production ci-dessus pour votre plateforme. - Vous souhaitez une infrastructure gérée ou des capacités exclusives au Cloud ? Comparez Open Source vs Cloud.
- Vous passez en production ? Prenez toutes les décisions indiquées dans Avant la production avant d’exposer l’API.
Dépannage
Vous contournez l’authentification
USE_DB_AUTHENTICATION=false, vous êtes dans le scénario prévu lors de la première exécution. Les requêtes utilisent une identité auto-hébergée et ne nécessitent aucune clé API. Si l’API est accessible depuis un réseau non fiable, arrêtez-vous et mettez en place les contrôles décrits dans Avant la mise en production.
Les conteneurs Docker ne démarrent pas
- Si la révision source diffère, récupérez
v2.11.162ou utilisez la configuration de cette version. - Si une compilation ou un conteneur manque de ressources, augmentez les ressources CPU, mémoire ou disque allouées à Docker.
- Si PostgreSQL échoue, vérifiez la syntaxe de
.env, conservezPOSTGRES_DB=postgreset assurez-vous que les valeurs du nom d’utilisateur et du mot de passe sont cohérentes.
Problèmes de connexion à Redis
redis://redis:6379. localhost désigne ce conteneur, et non le service Redis.
REDIS_URL ou REDIS_RATE_LIMIT_URL, supprimez ce remplacement pour rétablir la valeur par défaut, ou utilisez une adresse résoluble depuis le réseau Compose.
Le point de terminaison de l’API ne répond pas
3002 ne répond pas, vérifiez le conteneur de l’API et ses journaux :
3002, arrêtez-le ou modifiez le port publié en conséquence. Lors du démarrage initial, ne réessayez qu’une fois le conteneur d’API signalé comme étant en cours d’exécution.
Si /v0/health/readiness réussit, mais que /v2/scrape échoue, inspectez les journaux de l’API et de Playwright, car le point de terminaison d’accessibilité ne valide pas ces dépendances :
La requête de scrape expire
https://example.com et que les services d’API et Playwright sont en cours d’exécution. Définissez --max-time de curl sur une valeur supérieure au timeout du corps de la requête afin que l’API puisse renvoyer sa propre réponse d’expiration.
