Vous souhaitez contribuer ?

Bienvenue sur Firecrawl 🔥 ! Voici quelques instructions pour récupérer le projet en local afin de l’exécuter vous-même et d’y contribuer. Si vous contribuez, notez que le processus est similaire à d’autres dépôts open source : forkez Firecrawl, apportez vos modifications, exécutez les tests, puis ouvrez une PR. Si vous avez des questions ou souhaitez de l’aide pour démarrer, rejoignez notre communauté Discord ici pour en savoir plus, ou ouvrez une issue sur GitHub ici !

Auto-hébergement de Firecrawl

Consultez SELF_HOST.md pour savoir comment l’exécuter en local.

Pourquoi ?

L’auto‑hébergement de Firecrawl est particulièrement utile pour les organisations dont les politiques de sécurité exigent que les données restent dans des environnements contrôlés. Voici quelques raisons majeures d’envisager l’auto‑hébergement :
  • Sécurité et conformité renforcées : En auto‑hébergeant, vous garantissez que l’ensemble de la gestion et du traitement des données respecte les réglementations internes et externes, en conservant les informations sensibles au sein de votre infrastructure sécurisée. Notez que Firecrawl est un produit Mendable et s’appuie sur la certification SOC 2 Type II, ce qui signifie que la plateforme respecte des normes élevées du secteur en matière de sécurité des données.
  • Services personnalisables : L’auto‑hébergement vous permet d’adapter des services, comme Playwright, pour répondre à des besoins spécifiques ou couvrir des cas d’usage particuliers qui ne sont pas forcément pris en charge par l’offre cloud standard.
  • Apprentissage et contribution à la communauté : En configurant et en maintenant votre propre instance, vous approfondissez votre compréhension du fonctionnement de Firecrawl, ce qui peut également conduire à des contributions plus significatives au projet.

Considérations

Cependant, il existe certaines limites et des responsabilités supplémentaires à garder à l’esprit :
  1. Accès limité à Fire-engine : Actuellement, les instances auto-hébergées de Firecrawl n’ont pas accès à Fire-engine, qui comprend des fonctionnalités avancées pour gérer les blocages d’IP, les mécanismes de détection des robots, et plus encore. Cela signifie que, même si vous pouvez traiter des tâches de scraping de base, des cas plus complexes peuvent nécessiter une configuration supplémentaire ou ne pas être pris en charge.
  2. Configuration manuelle requise : Si vous devez utiliser des méthodes de scraping au-delà des options de base fetch et Playwright, vous devrez les configurer manuellement dans le fichier .env. Cela nécessite une compréhension plus approfondie des technologies et peut impliquer davantage de temps de mise en place.
L’auto-hébergement de Firecrawl est idéal pour ceux qui ont besoin d’un contrôle total sur leurs environnements de scraping et de traitement des données, mais il s’accompagne du revers d’une charge supplémentaire de maintenance et de configuration.

Étapes

  1. Commencez par installer les dépendances
  1. Définissez les variables d’environnement
Créez un fichier .env à la racine du projet. Vous pouvez copier le modèle situé dans apps/api/.env.example. Pour commencer, nous ne configurerons ni l’authentification, ni aucun sous-service optionnel (analyse de PDF, prise en charge du blocage de JS, fonctionnalités d’IA).
# .env

# ===== ENVS requis ======
NUM_WORKERS_PER_QUEUE=8 
PORT=3002
HOST=0.0.0.0

# pour l’auto‑hébergement avec Docker, utilisez redis://redis:6379. Pour une exécution locale, utilisez redis://localhost:6379
REDIS_URL=redis://redis:6379

# pour l’auto‑hébergement avec Docker, utilisez redis://redis:6379. Pour une exécution locale, utilisez redis://localhost:6379
REDIS_RATE_LIMIT_URL=redis://redis:6379 
PLAYWRIGHT_MICROSERVICE_URL=http://playwright-service:3000/html

## Pour activer l’authentification DB, vous devez configurer Supabase.
USE_DB_AUTHENTICATION=false

# ===== ENVS optionnels ======

# Configuration Supabase (utilisée pour l’authentification DB, la journalisation avancée, etc.)
SUPABASE_ANON_TOKEN= 
SUPABASE_URL= 
SUPABASE_SERVICE_TOKEN=

# Autres options
# à utiliser si vous avez configuré l’authentification et souhaitez tester avec une clé API réelle
TEST_API_KEY=
# à définir si vous souhaitez tester la limite de débit du scraping
RATE_LIMIT_TEST_API_KEY_SCRAPE=
# à définir si vous souhaitez tester la limite de débit du crawling
RATE_LIMIT_TEST_API_KEY_CRAWL=
# à ajouter pour les fonctionnalités dépendantes des LLM (génération d’attribut alt d’image, etc.)
OPENAI_API_KEY=
BULL_AUTH_KEY=@
# à utiliser si vous configurez une journalisation basique avec Logtail
LOGTAIL_KEY=
# à définir si vous avez une clé LlamaParse à utiliser pour analyser des PDF
LLAMAPARSE_API_KEY=
# à définir si vous souhaitez envoyer sur Slack des messages d’état de santé du serveur
SLACK_WEBHOOK_URL=
# à définir si vous souhaitez envoyer des événements PostHog comme les journaux de tâches
POSTHOG_API_KEY=
# à définir si vous souhaitez envoyer des événements PostHog comme les journaux de tâches
POSTHOG_HOST=

# à définir si vous souhaitez utiliser la bêta fermée du moteur Fire
FIRE_ENGINE_BETA_URL=

# Paramètres de proxy pour Playwright (alternativement, vous pouvez utiliser un service de proxy comme Oxylabs, qui fait tourner les IP à chaque requête)
PROXY_SERVER=
PROXY_USERNAME=
PROXY_PASSWORD=
# à définir si vous souhaitez bloquer les requêtes média pour économiser la bande passante du proxy
BLOCK_MEDIA=

# Définissez ceci sur l’URL de votre webhook lorsque vous utilisez la version auto‑hébergée de Firecrawl
SELF_HOSTED_WEBHOOK_URL=

# Clé API Resend pour les e‑mails transactionnels
RESEND_API_KEY=

# LOGGING_LEVEL détermine la verbosité des journaux produits par le système.
# Niveaux disponibles :
# NONE - Aucun journal ne sera produit.
# ERROR - Pour consigner les messages d’erreur indiquant un échec d’une opération spécifique.
# WARN - Pour consigner des situations potentiellement problématiques qui ne sont pas nécessairement des erreurs.
# INFO - Pour consigner des messages d’information mettant en évidence la progression de l’application.
# DEBUG - Pour consigner des informations détaillées sur le déroulement du système, principalement utilisées pour le débogage.
# TRACE - Pour consigner des informations encore plus détaillées que le niveau DEBUG.
# Définissez LOGGING_LEVEL sur l’une des options ci‑dessus pour contrôler la sortie des journaux.
LOGGING_LEVEL=INFO
  1. (Facultatif) Exécuter avec le service Playwright en TypeScript
    • Mettez à jour le fichier docker-compose.yml pour modifier le service Playwright :
          build: apps/playwright-service
      
      EN
          build: apps/playwright-service-ts
      
    • Définissez PLAYWRIGHT_MICROSERVICE_URL dans votre fichier .env :
      PLAYWRIGHT_MICROSERVICE_URL=http://localhost:3000/scrape
      
    • N’oubliez pas de configurer le serveur proxy dans votre fichier .env si nécessaire.
  2. Construisez et exécutez les conteneurs Docker :
    docker compose build
    docker compose up
    
Cela lancera une instance locale de Firecrawl accessible à l’adresse http://localhost:3002. Vous devriez voir l’interface Bull Queue Manager sur http://localhost:3002/admin/@/queues.
  1. (Facultatif) Tester l’API
Si vous souhaitez tester le point de terminaison /crawl, vous pouvez exécuter :
  curl -X POST http://localhost:3002/v2/crawl \
      -H 'Content-Type: application/json' \
      -d '{
        "url": "https://docs.firecrawl.dev"
      }'

Dépannage

Cette section propose des solutions aux problèmes courants que vous pouvez rencontrer lors de la configuration ou de l’exécution de votre instance auto-hébergée de Firecrawl.

Le client Supabase n’est pas configuré

Symptôme :
[YYYY-MM-DDTHH:MM:SS.SSSz]ERROR - Tentative d’accès au client Supabase alors qu’il n’est pas configuré.
[YYYY-MM-DDTHH:MM:SS.SSSz]ERROR - Erreur lors de l’insertion de l’événement de scraping : Erreur : le client Supabase n’est pas configuré.
Explication : Cette erreur se produit parce que la configuration du client Supabase n’est pas finalisée. Vous devriez pouvoir lancer des opérations de scraping et de crawling sans problème. À l’heure actuelle, il n’est pas possible de configurer Supabase sur des instances auto‑hébergées.

Vous contournez l’authentification

Symptôme :
[YYYY-MM-DDTHH:MM:SS.SSSz]WARN - Vous contournez l’authentification
Explication : Cette erreur se produit parce que la configuration du client Supabase n’est pas terminée. Vous devriez pouvoir effectuer des opérations de scraping et de crawling sans problème. À l’heure actuelle, il n’est pas possible de configurer Supabase sur des instances auto-hébergées.

Échec du démarrage des conteneurs Docker

Symptôme : Les conteneurs Docker se terminent de façon inattendue ou ne démarrent pas. Solution : Consultez les logs Docker pour tout message d’erreur à l’aide de la commande :
docker logs [nom_du_conteneur]
  • Assurez-vous que toutes les variables d’environnement requises sont correctement définies dans le fichier .env.
  • Vérifiez que tous les services Docker définis dans docker-compose.yml sont correctement configurés et que les images nécessaires sont disponibles.

Problèmes de connexion à Redis

Symptôme : Erreurs liées à la connexion à Redis, telles que des délais d’attente ou « Connection refused ». Solution :
  • Assurez-vous que le service Redis est lancé et opérationnel dans votre environnement Docker.
  • Vérifiez que REDIS_URL et REDIS_RATE_LIMIT_URL dans votre fichier .env pointent vers la bonne instance Redis.
  • Contrôlez les paramètres réseau et les règles de pare-feu susceptibles de bloquer la connexion au port de Redis.

Le point de terminaison API ne répond pas

Symptôme : Les requêtes API vers l’instance Firecrawl expirent ou ne renvoient aucune réponse. Solution :
  • Assurez-vous que le service Firecrawl est en cours d’exécution en vérifiant l’état du conteneur Docker.
  • Vérifiez que les variables PORT et HOST dans votre fichier .env sont correctes et qu’aucun autre service n’utilise le même port.
  • Contrôlez la configuration réseau pour vous assurer que l’hôte est accessible depuis le client qui effectue la requête API.
En résolvant ces problèmes courants, vous faciliterez la configuration et le fonctionnement de votre instance Firecrawl auto-hébergée.

Installer Firecrawl sur un cluster Kubernetes (version simplifiée)

Consultez le fichier examples/kubernetes-cluster-install/README.md pour savoir comment installer Firecrawl sur un cluster Kubernetes.