Aller au contenu principal

Crawl4AI Common — Configuration applicative partagée

Crawl4AI_Common est la couche applicative partagée de Crawl4AI. Elle n'est pas déployée seule ; elle fournit la configuration propre à Crawl4AI sur laquelle s'appuient Crawl4AI_GKE et Crawl4AI_CloudRun, afin que les deux variantes de plateforme se comportent de manière identique là où cela compte. Les utilisateurs finaux ne configurent jamais directement cette couche — elle ne possède aucune entrée propre dans l'interface de déploiement — mais comprendre ce qu'elle fournit explique les valeurs par défaut que vous voyez dans la documentation des plateformes.

Pour l'infrastructure qui provisionne et exécute réellement Crawl4AI, consultez les guides des plateformes (Crawl4AI_GKE, Crawl4AI_CloudRun) et les guides du socle (App_GKE, App_CloudRun, App_Common).


1. Ce que fournit cette couche​

DomaineFourni par Crawl4AI_CommonOù cela apparaît
Image de conteneurÉpingle l'image préconstruite officielle unclecode/crawl4ai et active la mise en miroir de l'image dans Artifact RegistrySortie container_image du déploiement de la plateforme
Aucune base de donnéesFixe database_type = "NONE" — Cloud SQL n'est pas provisionné ; pas de side-car Auth ProxyAucune sortie database_* — Crawl4AI est entièrement sans état
Redis intégréDéclare REDIS_TASK_TTL pour contrôler le TTL des résultats des tâches dans le conteneur§Redis intégré dans les guides des plateformes
Secrets générés automatiquementCrée CRAWL4AI_API_TOKEN et SECRET_KEY dans Secret Manager et les renvoie dans la map secret_idsInjectez les clés des LLM via secret_environment_variables
Aucun bucket de stockageRenvoie une liste storage_buckets vide — aucun bucket GCS n'est provisionné automatiquementAjoutez des buckets de résultats facultatifs via storage_buckets dans le module de la plateforme
Variables d'environnement de baseDéfinit PYTHONUNBUFFERED=1 et REDIS_TASK_TTLComportement de l'application dans les guides des plateformes
Sondes de santéFournit la sonde HTTP de démarrage/vivacité par défaut sur /health avec un délai initial de 40 s§Observabilité dans les guides des plateformes

2. Image de conteneur et mise en miroir​

Crawl4AI_Common définit image_source = "prebuilt" et container_image = "unclecode/crawl4ai". Aucune étape Cloud Build n'est utilisée par défaut. La mise en miroir de l'image est activée (enable_image_mirroring = true) pour copier l'image Docker Hub en amont dans Artifact Registry avant le déploiement, ce qui évite les échecs dus aux limites de débit de Docker Hub sur des images volumineuses (~3–4 GiB compressées).

Pour afficher l'image mise en miroir dans Artifact Registry :

gcloud artifacts docker images list <region>-docker.pkg.dev/<project>/<repo> --project "$PROJECT"

Le nom du dépôt Artifact Registry figure dans la sortie container_registry du déploiement de la plateforme.


3. Architecture sans état — ni base de données, ni stockage persistant​

Crawl4AI ne dépend d'aucune base de données externe. Crawl4AI_Common fixe les éléments suivants pour éviter un provisionnement accidentel de Cloud SQL :

  • database_type = "NONE" — aucune instance Cloud SQL n'est créée.
  • enable_cloudsql_volume = false — aucun side-car Cloud SQL Auth Proxy n'est injecté dans le conteneur.
  • storage_buckets = [] — aucun bucket GCS n'est provisionné automatiquement.

L'état des tâches est entièrement conservé dans l'instance Redis intégrée qui s'exécute dans le conteneur. Les résultats sont éphémères — ils sont perdus au redémarrage du conteneur ou du pod. C'est le comportement attendu pour une API d'exploration sans état.


4. Redis intégré et architecture des processus​

L'image unclecode/crawl4ai exécute deux processus gérés par supervisord (PID 1) :

PrioritéProcessusPortRôle
10Serveur Redislocalhost:6379File d'attente des tâches et stockage des résultats
20Gunicorn (1 worker × 4 threads)0.0.0.0:11235Serveur ASGI FastAPI

Ne remplacez pas REDIS_HOST ni REDIS_PORT par des variables d'environnement — le Redis intégré n'est accessible que sur localhost:6379 et ne doit pas être redirigé vers un point de terminaison externe.

Le config.yml par défaut fourni dans l'image définit crawler.pool.max_pages = 40 (nombre maximal de pages de navigateur simultanées par instance de conteneur) et inclut --disable-dev-shm-usage dans les arguments de lancement supplémentaires de Chromium. Sur Cloud Run, cela redirige le travail en mémoire partagée de Chromium vers /tmp ; sur GKE, le socle App_GKE monte un véritable volume emptyDir sur /dev/shm, si bien que ce contournement n'est pas nécessaire.


5. Variables d'environnement de base​

Crawl4AI_Common injecte automatiquement deux variables d'environnement dans chaque déploiement :

VariableValeurObjectif
PYTHONUNBUFFERED1Garantit que la sortie des journaux Python est diffusée immédiatement vers Cloud Logging, sans mise en mémoire tampon
REDIS_TASK_TTL<redis_task_ttl_seconds>Contrôle la durée pendant laquelle les résultats des tâches terminées sont conservés dans le Redis intégré avant expiration

Les variables d'environnement supplémentaires provenant de environment_variables dans le module de plateforme appelant sont fusionnées après celles-ci. Variables reconnues par Crawl4AI à l'exécution :

VariableComment l'injecterObjectif
LLM_PROVIDERenvironment_variablesRemplacer le backend LLM (par ex. "anthropic/claude-3-haiku", "openai/gpt-4o-mini")
LLM_BASE_URLenvironment_variablesRemplacer l'URL de base de l'API LLM (pour Ollama ou des proxys personnalisés)
LLM_TEMPERATUREenvironment_variablesRemplacer la température d'échantillonnage du LLM
CRAWL4AI_HOOKS_ENABLEDenvironment_variablesActiver les hooks de webhook — risque d'exécution de code à distance (RCE) ; à n'utiliser que dans des environnements de confiance
CRAWL4AI_API_TOKENgénéré automatiquementJeton Bearer pour les appels d'API. Obligatoire — s'il n'est pas défini, l'image lie Gunicorn à l'interface de bouclage uniquement, et la sonde de santé ne réussit jamais
SECRET_KEYgénéré automatiquementSecret de signature JWT, épinglé afin que les jetons émis survivent aux redémarrages
OPENAI_API_KEYsecret_environment_variablesClé d'API OpenAI pour l'extraction basée sur les LLM
ANTHROPIC_API_KEYsecret_environment_variablesClé d'API Anthropic pour l'extraction basée sur les LLM
DEEPSEEK_API_KEYsecret_environment_variablesClé d'API DeepSeek
GROQ_API_KEYsecret_environment_variablesClé d'API Groq
GEMINI_API_KEYsecret_environment_variablesClé d'API Google Gemini
LLM_API_KEYsecret_environment_variablesClé d'API LLM générique pour le fournisseur configuré

Pour accéder à la valeur d'un secret existant après le déploiement :

gcloud secrets list --project "$PROJECT"
gcloud secrets versions access latest --secret=<secret-name> --project "$PROJECT"

6. Comportement des sondes de santé​

Crawl4AI_Common fournit les sondes par défaut des deux variantes de plateforme. La sonde de démarrage par défaut utilise un HTTP GET sur /health avec un délai initial de 40 secondes — cela laisse à supervisord le temps de démarrer Redis (priorité 10) puis Gunicorn (priorité 20) avant que le point de terminaison ne devienne accessible. Cela correspond au start_period: 40s du docker-compose.yml en amont.

SondeTypeCheminDélai initialPériodeSeuil d'échec
DémarrageHTTP/health40 s10 s12
VivacitéHTTP/health60 s30 s3

Les deux variantes de plateforme utilisent la même configuration de sonde HTTP. Cloud Run n'a pas besoin du contournement par sonde TCP utilisé par certaines autres applications (comme Mautic), car le Gunicorn de Crawl4AI sert du HTTP simple sur le port 11235 sans interférence de redirection HTTPS.


Pour la configuration propre à Crawl4AI exposée aux utilisateurs (variables par groupe, sorties et manière d'explorer chaque service depuis la console et la CLI), consultez les guides des plateformes : Crawl4AI_GKE et Crawl4AI_CloudRun.

Need RAD to do something it does not do yet? Request it on the roadmap, or vote on what is already there.