Automatisation5 min de lecture

Apache Airflow sur VPS : installation Docker et CVE-2026-58076

Apache Airflow est la référence open source pour orchestrer des pipelines de données sous forme de DAG écrits en Python. Schedulers, opérateurs, sensors et une UI riche en font le standard de fait pour l'ETL et le batch data. Self-hébergé sur un VPS, il devient votre ordonnanceur central, sans dépendre d'un service managé coûteux.

Pourquoi self-héberger Apache Airflow sur un VPS

Airflow est l'outil que choisissent les équipes data quand elles veulent décrire leurs pipelines en Python pur : chaque DAG est un fichier .py qui définit des tâches, leurs dépendances et leur planification. L'écosystème de providers est immense (bases SQL, S3, BigQuery, dbt, Spark…), et la communauté gigantesque. Les services managés (Cloud Composer, MWAA) facturent cher l'environnement à l'heure ; en self-hébergeant Airflow sur un VPS, vous obtenez le même moteur pour le coût d'un serveur, et vos DAG s'exécutent au plus près de vos sources de données internes. C'est aussi une question de contrôle : versions des providers, dépendances Python custom, variables et connexions, tout reste sous votre main. Le déploiement Docker Compose officiel (CeleryExecutor) reproduit fidèlement une architecture de production : webserver, scheduler, workers, Redis et PostgreSQL.

Bénéfices concrets du self-hosting

  • DAG en Python pur, versionnés dans Git, avec dépendances et providers maîtrisés.
  • Énorme écosystème d'opérateurs : SQL, cloud, dbt, Spark, HTTP, et plus.
  • Scheduler robuste : cron, dépendances entre tâches, backfill et catchup.
  • Workers Celery scalables pour absorber des centaines de tâches en parallèle.
  • Exécution proche de vos bases internes, sans transit par un cloud tiers.
  • Coût d'un VPS au lieu d'un environnement managé facturé à l'heure.

Prérequis techniques

Airflow est l'outil le plus gourmand de cette série en configuration CeleryExecutor, car il fait tourner simultanément webserver, scheduler, worker(s), triggerer, Redis et PostgreSQL. La documentation officielle recommande au moins 4 Go de RAM, mais pour une production confortable visez 4 vCPU et 8 Go de RAM ; 16 Go si vos DAG chargent pandas ou de gros volumes. Prévoyez 40 Go de disque, Docker et Docker Compose, et un domaine (airflow.votredomaine.com). Le mode LocalExecutor allège la stack (sans Celery ni Redis) et peut tourner sur 4 Go si vos besoins restent modestes.

Déployer Apache Airflow avec Docker Compose

01

Récupérer le compose officiel

Créez /opt/airflow, puis téléchargez le fichier de référence : curl -LfO https://airflow.apache.org/docs/apache-airflow/stable/docker-compose.yaml. Créez les sous-dossiers attendus : mkdir -p ./dags ./logs ./plugins ./config.

02

Régler les permissions et l'UID

Airflow exige un UID cohérent pour les volumes montés. Générez le fichier d'environnement : echo -e "AIRFLOW_UID=$(id -u)" > .env. Sans cela, le scheduler ne pourra pas écrire ses logs et plantera au démarrage.

03

Initialiser la base de données

Lancez la migration et la création du compte admin : docker compose up airflow-init. Cette commande prépare PostgreSQL, applique les migrations et crée l'utilisateur par défaut airflow / airflow, à changer ensuite.

04

Démarrer la stack complète

Lancez tous les services : docker compose up -d. Vérifiez que webserver, scheduler, worker et triggerer sont healthy avec docker compose ps. Le webserver écoute sur le port 8080.

05

Reverse proxy et HTTPS

Mettez Caddy devant le webserver : airflow.votredomaine.com { reverse_proxy localhost:8080 }. Le HTTPS protège l'accès à l'UI Airflow, qui expose connexions, variables et logs potentiellement sensibles.

06

Déposer un DAG et l'exécuter

Placez un fichier hello.py minimal dans ./dags (un DAG avec une BashOperator ou PythonOperator). Le scheduler le détecte en quelques secondes. Activez-le dans l'UI, déclenchez une exécution manuelle et inspectez les logs de la tâche.

Ne mettez jamais de logique lourde directement dans le fichier DAG : le scheduler parse tous les .py à intervalle régulier (min_file_process_interval), et un import coûteux au niveau module ralentit tout l'ordonnanceur. Gardez le code de parsing léger et déportez le travail dans les tâches. Pour gérer les dépendances Python custom, construisez votre propre image dérivée de apache/airflow avec un requirements.txt plutôt que d'installer des paquets au runtime : vos workers démarrent plus vite et restent reproductibles. Enfin, surveillez la croissance du dossier ./logs et purgez régulièrement.

CVE-2026-58076 : vulnérabilité critique et mise à jour vers Airflow 2.10.4

CVE-2026-58076 (CVSS 9.1) est une vulnérabilité d'exécution de code à distance dans le composant DAG serialization d'Apache Airflow, affectant les versions antérieures à 2.10.4. Un attaquant authentifié peut déclencher l'exécution d'un objet arbitraire lors de la désérialisation en injectant un payload dans les métadonnées d'un DAG. La correction est disponible dans Airflow 2.10.4. Pour mettre à jour votre instance Docker Compose : modifiez le tag dans votre docker-compose.yml en apache/airflow:2.10.4, puis docker compose pull && docker compose up -d. Vérifiez la version avec docker compose exec airflow-webserver airflow version. Les tables de migration se mettent à jour automatiquement au premier démarrage. Si l'accès web au DAG serialization doit être désactivé en attendant la mise à jour, définissez AIRFLOW__CORE__DAG_SERIALIZATION=True (activé par défaut depuis 2.1.0) et bloquez l'accès au worker depuis l'extérieur du réseau Docker.

Dépannage : trois erreurs fréquentes

Port 8080 déjà utilisé : si docker compose up -d échoue avec port is already allocated, changez le port dans docker-compose.yml ou stoppez le service qui l'occupe (lsof -i :8080). Scheduler en état running sans exécuter de DAG : vérifier que le répertoire ./dags est bien monté (docker compose config | grep dags) et que les fichiers .py des DAGs sont syntaxiquement valides (python3 -c "import dag_file"). DAG non visible dans l'interface après ajout : l'intervalle de scan du dossier DAGs est de 30 secondes par défaut ; forcer le rechargement avec docker compose restart airflow-scheduler. Pour les fichiers modifiés après le démarrage, le Scheduler les récupère automatiquement dans son prochain cycle.

Le VPS Cloud idéal pour Airflow

Airflow en mode Celery réclame de la RAM et plusieurs conteneurs : le VPS Cloud ServOrbit fournit les ressources, Docker préconfiguré et SSL automatique pour héberger votre ordonnanceur data en self-hosted, à coût maîtrisé.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou contactez notre équipe — rappel, WhatsApp ou e-mail. Support en français, anglais et arabe.