[{"data":1,"prerenderedAt":205},["ShallowReactive",2],{"seo-verification":3,"blog-installer-apache-airflow-vps-ma-fr":6,"promo-bar-likely":204},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-installer-apache-airflow-vps-ma-fr",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":32,"intro":34,"sections":35,"ctaTitle":147,"ctaBody":148,"ctaButton":149,"ctaUrl":143,"relatedPosts":150},31,"installer-apache-airflow-vps",{"fr":10,"en":12,"ar":13,"es":14},"installing-apache-airflow-on-a-vps-self-hosted-automation","تثبيت-apache-airflow-على-خادم-vps-أتمتة-ذاتية-الاستضافة","instalar-apache-airflow-en-un-vps","Installer Apache Airflow sur VPS : Docker Compose et PostgreSQL","Déployez Apache Airflow sur VPS avec Docker Compose : PostgreSQL comme backend, CeleryExecutor pour le scale-out et gestion des secrets chiffrés.",12,1,false,"2026-05-20T00:00:00+00:00","2026-11-04T16:30:25+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},2,"Automatisation","automatisation","bg-brand-action\u002F10 text-brand-action",[28],{"id":23,"name":24,"slug":25,"color":26,"icon":25},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Finstaller-apache-airflow-vps-poster.svg",{"categorySlug":25,"appSlug":33},"airflow","Apache Airflow est la référence open source pour orchestrer des pipelines de données, des workflows ETL et des tâches ML en Python. Self-hébergé sur un VPS, il vous affranchit des coûts d'un service managé (Cloud Composer, MWAA) tout en gardant un contrôle total sur vos données et dépendances. Ce guide part de zéro et va jusqu'à une configuration prête pour la production : PostgreSQL comme base de métadonnées (ne jamais utiliser SQLite sur des volumes Docker), CeleryExecutor pour distribuer les tâches, connexions et variables secrètes chiffrées, et les bons réflexes pour déboguer rapidement.",[36,40,50,53,56,78,81,84,87,99,102,136,140],{"type":37,"title":38,"body":39},"h2","Pourquoi héberger Apache Airflow sur votre propre VPS","Les orchestrateurs cloud comme Cloud Composer (Google) ou MWAA (Amazon) embarquent Airflow en service managé, mais facturent l'environnement à l'heure — indépendamment de votre charge réelle. En self-hébergeant sur un VPS, vous payez uniquement le serveur et vos DAG s'exécutent au plus près de vos sources de données internes, sans transit réseau externe. La liberté va plus loin : vous choisissez la version d'Airflow, les providers Python, les connexions à vos bases, l'exécuteur (Local, Celery, Kubernetes). Pour des pipelines qui tournent sur des données sensibles ou des environnements réglementés, rester on-premise avec un VPS dédié n'est pas une option mais une contrainte. Enfin, le coût : un VPS 4 vCPU \u002F 8 Go RAM revient à une fraction d'un environnement managé pour la même charge de travail quotidienne.",{"type":41,"title":42,"items":43},"ul","Ce qu'Airflow orchestre concrètement",[44,45,46,47,48,49],"**Data pipelines et ETL** — extraire depuis des API ou des bases, transformer et charger vers un data warehouse.","**Workflows ML** — entraînement de modèles, évaluation, déploiement automatisé avec des dépendances entre étapes.","**Tâches planifiées complexes** — backfills, catchups, gestion des échecs avec retry configurable par tâche.","**Intégrations tierces** — plus de 80 providers officiels : PostgreSQL, MySQL, S3, BigQuery, dbt, Spark, Kubernetes, HTTP.","**Pipelines de rapport** — génération automatique de rapports périodiques et envoi par e-mail ou Slack.","**Orchestration de microservices** — déclencher des jobs distants via API et attendre leur résultat avant d'enchaîner.",{"type":37,"title":51,"body":52},"Prérequis VPS et stack technique","Airflow est la stack la plus gourmande en ressources de cette catégorie car elle fait tourner en parallèle plusieurs services. **Pour la production** : 4 vCPU et 8 Go de RAM minimum — choisissez un VPS Power ou un VPS dédié pour commencer. **Pour le développement ou les tests** : 2 vCPU et 4 Go de RAM suffisent en LocalExecutor (sans Celery ni Redis). Prévoyez 40 Go de disque SSD pour les logs et les métadonnées. Sur le plan logiciel : Docker 24+ et Docker Compose v2 (vérifiez avec `docker compose version`, pas l'ancien `docker-compose` v1 qui ne supporte pas tous les healthchecks), Ubuntu 22.04 LTS ou Debian 12, et un nom de domaine pointant vers votre VPS pour le reverse proxy HTTPS.",{"type":37,"title":54,"body":55},"Architecture Docker Compose d'Airflow","Le fichier `docker-compose.yaml` officiel d'Airflow déploie six services qui forment une architecture complète. Le **webserver** sert l'interface graphique sur le port 8080 : visualisation des DAG, déclenchement manuel, consultation des logs. Le **scheduler** est le cœur du système : il analyse les DAG, planifie les tâches selon leur schedule et leurs dépendances, et les remet aux workers. Le **worker** exécute les tâches confiées par le scheduler — vous pouvez en lancer plusieurs pour la parallélisation. Le **triggerer** gère les tâches deferables (sensors asynchrones Airflow 2.2+) sans bloquer de slots worker. **PostgreSQL** est la base de métadonnées d'Airflow : état des DAG runs, logs structurés, XComs, variables et connexions — c'est le composant le plus critique. **Redis** sert de broker de messages entre le scheduler et les workers Celery : chaque tâche prête à l'exécution transite par une queue Redis avant d'être prise en charge par un worker disponible.",{"type":57,"title":58,"steps":59},"steps","Déployer Airflow 3.x avec Docker Compose",[60,63,66,69,72,75],{"title":61,"body":62},"Récupérer le docker-compose officiel et créer les répertoires","Créez le répertoire de travail, descendez le fichier de référence et préparez les dossiers montés en volumes :\n```bash\nmkdir -p \u002Fopt\u002Fairflow && cd \u002Fopt\u002Fairflow\ncurl -LfO 'https:\u002F\u002Fairflow.apache.org\u002Fdocs\u002Fapache-airflow\u002Fstable\u002Fdocker-compose.yaml'\nmkdir -p .\u002Fdags .\u002Flogs .\u002Fplugins .\u002Fconfig\n```\nCes dossiers doivent exister avant de lancer les conteneurs. Si Docker les crée lui-même, il leur attribue le propriétaire `root` et Airflow ne peut pas y écrire.",{"title":64,"body":65},"Configurer le fichier .env (UID, PostgreSQL, clé secrète)","Créez `\u002Fopt\u002Fairflow\u002F.env` avec les variables essentielles :\n```bash\necho \"AIRFLOW_UID=$(id -u)\" > .env\necho \"AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=postgresql+psycopg2:\u002F\u002Fairflow:airflow@postgres\u002Fairflow\" >> .env\necho \"AIRFLOW__CORE__FERNET_KEY=$(python3 -c 'from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())')\" >> .env\n```\n`AIRFLOW_UID` aligne les permissions des volumes sur votre utilisateur système. `AIRFLOW__DATABASE__SQL_ALCHEMY_CONN` force PostgreSQL — la valeur par défaut du compose officiel utilise déjà PostgreSQL, mais la rendre explicite dans `.env` évite toute confusion. `FERNET_KEY` chiffre les connexions et variables stockées en base — **générez-la une seule fois et sauvegardez-la** : si vous la perdez, toutes vos connexions secrètes deviennent illisibles.",{"title":67,"body":68},"Initialiser la base de données","Appliquez les migrations et créez le premier compte administrateur :\n```bash\ndocker compose up airflow-init\n```\nLe conteneur `airflow-init` se connecte à PostgreSQL, applique toutes les migrations de schéma et crée l'utilisateur `airflow` (mot de passe `airflow`). Attendez l'exit code `0` — un code différent indique un problème de connexion à la base (PostgreSQL pas encore healthy) ou une image manquante. **Changez le mot de passe dès votre première connexion** via l'UI ou la commande `docker compose exec airflow-webserver airflow users reset-password`.",{"title":70,"body":71},"Démarrer tous les services","Lancez la stack complète en arrière-plan :\n```bash\ndocker compose up -d\ndocker compose ps\n```\nTous les conteneurs doivent passer à l'état `healthy` en une à trois minutes. Si un service reste en `starting`, consultez ses logs :\n```bash\ndocker compose logs airflow-scheduler --tail=50\n```\nLe webserver est accessible sur `http:\u002F\u002Flocalhost:8080`. N'ouvrez pas ce port publiquement — passez par un reverse proxy.",{"title":73,"body":74},"Créer un compte administrateur personnalisé","Le compte `airflow\u002Fairflow` créé par `airflow-init` est à usage unique. Créez votre compte permanent :\n```bash\ndocker compose exec airflow-webserver airflow users create \\\n  --username admin \\\n  --firstname Prenom \\\n  --lastname Nom \\\n  --role Admin \\\n  --email admin@votredomaine.com \\\n  --password VotreMotDePasseSolide\n```\nSupprimez ensuite le compte par défaut via `Admin → Users` dans l'interface web.",{"title":76,"body":77},"Exposer Airflow derrière un reverse proxy avec SSL","N'exposez jamais le port 8080 directement — l'UI Airflow affiche des connexions, des variables et des logs sensibles. Avec Caddy (recommandé pour la simplicité du TLS automatique) :\n```bash\napt install -y caddy\ncat > \u002Fetc\u002Fcaddy\u002FCaddyfile \u003C\u003C 'EOF'\nairflow.votredomaine.com {\n    reverse_proxy localhost:8080\n}\nEOF\nsystemctl reload caddy\nufw deny 8080\n```\nCaddy obtient et renouvelle automatiquement le certificat Let's Encrypt. Avec nginx, créez un vhost standard en `proxy_pass http:\u002F\u002F127.0.0.1:8080` et bloquez le port avec `ufw deny 8080`.",{"type":37,"title":79,"body":80},"Configurer PostgreSQL comme backend de métadonnées","**Ne jamais utiliser SQLite en production avec Airflow sur Docker.** SQLite n'est pas conçu pour des accès concurrents multiples : le scheduler, le webserver et les workers accèdent à la base simultanément, et SQLite sur un volume Docker a des limites de verrouillage qui causent des corruptions et des pertes de données — le projet Airflow documente explicitement cet avertissement depuis la version 2.0. Le fichier `docker-compose.yaml` officiel inclut déjà un service PostgreSQL 13, mais vérifiez que votre `.env` force bien la connexion :\n```\nAIRFLOW__DATABASE__SQL_ALCHEMY_CONN=postgresql+psycopg2:\u002F\u002Fairflow:airflow@postgres\u002Fairflow\n```\nPour une production robuste, personnalisez le mot de passe PostgreSQL. Dans `docker-compose.yaml`, cherchez la section `postgres` et modifiez `POSTGRES_PASSWORD`. Mettez à jour `AIRFLOW__DATABASE__SQL_ALCHEMY_CONN` en conséquence. Sauvegardez la base PostgreSQL régulièrement avec `docker compose exec postgres pg_dump -U airflow airflow > backup_$(date +%Y%m%d).sql`. Si vous gérez déjà un serveur PostgreSQL externe, supprimez le service `postgres` du compose et pointez `SQL_ALCHEMY_CONN` vers votre instance : c'est la configuration recommandée pour les installations multi-VPS.",{"type":37,"title":82,"body":83},"Passer au CeleryExecutor pour plusieurs workers","Le **LocalExecutor** (défaut dans certaines configs) exécute les tâches dans des sous-processus du scheduler — simple, mais limité à un seul nœud. Le **CeleryExecutor** découple l'exécution : le scheduler pousse les tâches dans une queue Redis, et un ou plusieurs workers les consomment indépendamment. Le fichier `docker-compose.yaml` officiel active CeleryExecutor par défaut. Pour scale-out, dupliquez simplement le service worker :\n```bash\ndocker compose up -d --scale airflow-worker=3\n```\nCela démarre trois workers qui consomment la même queue Redis en parallèle. Chaque worker prend en charge `parallelism` tâches simultanées (configurable via `AIRFLOW__CORE__PARALLELISM`, défaut 32). Pour distribuer les workers sur plusieurs VPS, pointez-les tous vers le même Redis et le même PostgreSQL — c'est l'architecture Celery standard. Ajoutez `AIRFLOW__CELERY__WORKER_CONCURRENCY=8` dans `.env` pour affiner la concurrence par worker selon les ressources disponibles sur chaque nœud.",{"type":37,"title":85,"body":86},"Gérer les connexions et les variables secrètes","Airflow chiffre les connexions et variables sensibles en base grâce à la `FERNET_KEY` configurée dans `.env`. **Via l'UI** : Admin → Connections → Add Connection — renseignez l'URI complète ou les champs individuels (host, login, password, port). Ces valeurs sont chiffrées avec Fernet avant écriture en base. **Via les variables d'environnement** (recommandé pour les CI\u002FCD) : une variable d'env préfixée `AIRFLOW_CONN_` surpasse toute connexion enregistrée en base. Exemple dans `.env` :\n```\nAIRFLOW_CONN_MON_POSTGRES=postgresql:\u002F\u002Fuser:password@host:5432\u002Fdbname\n```\nLe nom de la connexion dans vos DAG est alors `mon_postgres` (le préfixe et les majuscules sont retirés). **Secret Backend** : pour les environnements Kubernetes ou cloud, configurez `AIRFLOW__SECRETS__BACKEND=airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend` (ou HashiCorp Vault, GCP Secret Manager) — Airflow résoudra les connexions depuis votre coffre-fort plutôt que depuis PostgreSQL. **Variables** : Admin → Variables dans l'UI, ou via env `AIRFLOW_VAR_NOM_DE_LA_VARIABLE`. Évitez de stocker des secrets dans les Variables non chiffrées — préférez les Connections ou le Secret Backend.",{"type":57,"title":88,"steps":89},"Créer et tester votre premier DAG Python",[90,93,96],{"title":91,"body":92},"Créer le fichier DAG dans le dossier \u002Fdags","Créez `\u002Fopt\u002Fairflow\u002Fdags\u002Fmon_premier_dag.py` :\n```python\nfrom airflow.sdk import DAG, task\nfrom datetime import datetime\n\nwith DAG(\n    dag_id='mon_premier_dag',\n    schedule='@daily',\n    start_date=datetime(2025, 1, 1),\n    catchup=False,\n    tags=['exemple'],\n) as dag:\n\n    @task\n    def extraire():\n        return {'lignes': 42}\n\n    @task\n    def transformer(donnees: dict):\n        print(f\"Traitement de {donnees['lignes']} lignes\")\n        return donnees['lignes'] * 2\n\n    @task\n    def charger(resultat: int):\n        print(f\"Résultat final : {resultat}\")\n\n    charger(transformer(extraire()))\n```\nNotez l'utilisation de `schedule` (et non `schedule_interval`, supprimé en Airflow 3).",{"title":94,"body":95},"Vérifier que le scheduler parse le DAG sans erreur","Le scheduler détecte et parse automatiquement les fichiers `.py` du dossier `dags`. Vérifiez manuellement :\n```bash\ndocker compose exec airflow-scheduler airflow dags list | grep mon_premier_dag\n```\nSi le DAG n'apparaît pas après 30 secondes, cherchez les erreurs de parsing :\n```bash\ndocker compose logs airflow-scheduler | grep -i 'error\\|exception' | tail -20\n```\nUne erreur d'import Python dans le fichier DAG empêche toute la détection — corrigez la syntaxe et le scheduler relancera automatiquement le parsing.",{"title":97,"body":98},"Déclencher une exécution manuelle et inspecter les logs","Dans l'UI Airflow (`https:\u002F\u002Fairflow.votredomaine.com`), naviguez vers DAGs, trouvez `mon_premier_dag`, activez-le (toggle), puis cliquez sur ▶ Trigger DAG. Suivez l'exécution en temps réel dans la vue Graph ou Grid. Cliquez sur une tâche, puis sur Logs pour voir la sortie standard de la fonction. Depuis le terminal :\n```bash\ndocker compose exec airflow-scheduler airflow dags trigger mon_premier_dag\ndocker compose exec airflow-scheduler airflow dags state mon_premier_dag $(date +%Y-%m-%dT%H:%M:%S+00:00)\n```",{"type":37,"title":100,"body":101},"Sécuriser votre installation Airflow","Une installation Airflow expose potentiellement vos connexions de bases de données, vos variables et vos logs d'exécution. Appliquez ces mesures dès le déploiement. **Authentification** : par défaut, Airflow 3 utilise FAB (Flask-AppBuilder) avec authentification par mot de passe. Pour une organisation, connectez Airflow à votre annuaire via `AIRFLOW__WEBSERVER__AUTH_BACKEND=airflow.providers.fab.auth_manager.fab_auth_manager.FabAuthManager` avec LDAP, ou activez OAuth2 (GitHub, Google, Azure AD) en configurant le provider FAB correspondant. **Désactiver les DAG d'exemple** : ajoutez dans `.env` :\n```\nAIRFLOW__CORE__LOAD_EXAMPLES=False\n```\nCes DAG fictifs encombrent l'UI et peuvent induire en erreur. **Pare-feu sur le port 8080** : `ufw deny 8080` — seul le reverse proxy doit y accéder depuis localhost. **Pas de clé Fernet dans les logs** : ne loggez jamais `os.environ`, qui imprimerait la `FERNET_KEY` en clair. **Rotation des secrets** : si vous devez changer la `FERNET_KEY`, utilisez `airflow db rotate-fernet-key` pour rechiffrer toutes les connexions stockées avant de mettre à jour la variable.",{"type":103,"title":104,"headers":105,"rows":110},"comparison","LocalExecutor vs CeleryExecutor vs KubernetesExecutor",[106,107,108,109],"Critère","LocalExecutor","CeleryExecutor","KubernetesExecutor",[111,116,121,126,131],[112,113,114,115],"Ressources nécessaires","2 vCPU \u002F 4 Go RAM","4 vCPU \u002F 8 Go RAM + Redis","Cluster Kubernetes requis",[117,118,119,120],"Parallélisme","Limité au nombre de CPU du scheduler","Horizontal — autant de workers que nécessaire","Un pod par tâche — parallélisme quasi sans borne",[122,123,124,125],"Isolation des tâches","Sous-processus partagés","Workers séparés, même image","Pod isolé par tâche, image configurable",[127,128,129,130],"Complexité opérationnelle","Simple — pas de Redis","Modérée — Redis à maintenir","Élevée — nécessite Kubernetes",[132,133,134,135],"Cas d'usage idéal","Dev, tests, pipelines légers","Production VPS, charge variable","Cloud-native, isolation forte requise",{"type":137,"title":138,"body":139},"tip","Mettre à jour Airflow sans coupure","Pour une mise à jour rolling sans interrompre les DAG en cours : commencez par mettre à jour l'image dans `docker-compose.yaml` (ex. `apache\u002Fairflow:3.3.1`). Arrêtez uniquement le webserver et le scheduler, appliquez les migrations, puis redémarrez service par service. Les workers Celery continuent d'exécuter les tâches déjà démarrées pendant la migration :\n```bash\ndocker compose stop airflow-webserver airflow-scheduler\ndocker compose pull\ndocker compose up -d airflow-webserver airflow-scheduler\ndocker compose exec airflow-scheduler airflow db upgrade\ndocker compose up -d\n```\nToujours consulter le CHANGELOG officiel entre les versions mineures — certaines migrations de schéma sont irréversibles. Gardez une sauvegarde PostgreSQL fraîche avant toute montée de version.",{"type":37,"title":141,"body":142,"cta_url":143,"cta_title":144,"cta_body":145,"cta_button":146},"Déboguer et lire les logs Airflow","Airflow génère des logs à plusieurs niveaux et comprendre leur organisation accélère considérablement le débogage. **Logs de tâches** : chaque tâche écrit dans `.\u002Flogs\u002Fdag_id\u002Frun_id\u002Ftask_id\u002F`. Accessibles depuis l'UI (clic sur la tâche → Logs) ou en ligne de commande :\n```bash\ndocker compose exec airflow-scheduler airflow tasks logs mon_premier_dag extraire 2025-01-01\n```\n**Logs du scheduler** : le plus important pour diagnostiquer les DAG qui ne se déclenchent pas :\n```bash\ndocker compose logs airflow-scheduler --follow --tail=100\n```\n**Remote logging** : pour des installations multi-workers ou des logs à longue rétention, déportez vers S3 ou GCS :\n```\nAIRFLOW__LOGGING__REMOTE_LOGGING=True\nAIRFLOW__LOGGING__REMOTE_BASE_LOG_FOLDER=s3:\u002F\u002Fmon-bucket\u002Fairflow-logs\nAIRFLOW__LOGGING__REMOTE_LOG_CONN_ID=mon_aws\n```\n**`log_filename_template`** : le nom du fichier de log est configurable via `AIRFLOW__LOGGING__LOG_FILENAME_TEMPLATE`. Le défaut produit des chemins courts mais vous pouvez l'ajuster pour mieux organiser les logs par date. **Erreurs silencieuses** : si un DAG disparaît de l'UI sans message, cherchez les import errors du scheduler :\n```bash\ndocker compose exec airflow-webserver airflow dags list-import-errors\n```\n**Purge des logs anciens** : configurez `AIRFLOW__LOG_RETENTION_DAYS=30` pour éviter la saturation du disque — le dossier `.\u002Flogs` peut rapidement atteindre plusieurs gigaoctets sur des pipelines fréquents.","\u002Fapplications\u002Fautomatisation\u002Fairflow","Déployer Airflow sur VPS ServOrbit","ServOrbit propose des VPS Power pré-configurés avec Docker Compose pour lancer Airflow en moins de dix minutes. Choisissez votre taille de worker, nous gérons l'infrastructure.","Déployer Airflow sur VPS","Le VPS Cloud idéal pour Apache Airflow","Airflow 3 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é.","Déployer mon VPS Cloud",[151,170,187],{"id":152,"slug":153,"slugs":154,"title":158,"excerpt":159,"readTime":160,"views":161,"isPinned":19,"noindex":19,"publishedAt":162,"updatedAt":163,"category":164,"categories":165,"featuredImage":29,"bgImage":30,"posterImage":167,"relatedSolution":168},3,"installer-n8n-vps",{"fr":153,"en":155,"ar":156,"es":157},"install-n8n-on-vps-with-docker-complete-2026-guide","تثبيت-n8n-على-vps-مع-docker-دليل-شامل-2026","instalar-n8n-en-vps-con-docker","Installer n8n sur VPS avec Docker : guide complet 2026","Déployez n8n sur VPS avec Docker, reverse proxy et HTTPS. Crash V8, 502 nginx, migration npm vers Docker et sécurisation des exécutions persistées (advisory août 2026).",19,4,"2026-06-05T00:00:00+00:00","2026-11-09T20:55:18+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[166],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Finstaller-n8n-vps-poster.svg",{"categorySlug":25,"appSlug":169},"n8n",{"id":171,"slug":172,"slugs":173,"title":177,"excerpt":178,"readTime":161,"views":18,"isPinned":19,"noindex":19,"publishedAt":179,"updatedAt":180,"category":181,"categories":182,"featuredImage":29,"bgImage":30,"posterImage":184,"relatedSolution":185},24,"installer-node-red-vps",{"fr":172,"en":174,"ar":175,"es":176},"installing-node-red-on-a-vps-self-hosted-automation","تثبيت-node-red-على-خادم-vps-أتمتة-ذاتية-الاستضافة","instalar-node-red-en-un-vps","Installer Node-RED sur un VPS : automatisation self-hosted","Installez Node-RED sur un VPS pour automatiser vos workflows en flow-based, connecter vos API et objets IoT, le tout self-hosted et sécurisé.","2026-05-27T00:00:00+00:00","2026-11-04T16:30:24+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[183],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Finstaller-node-red-vps-poster.svg",{"categorySlug":25,"appSlug":186},"node-red",{"id":188,"slug":189,"slugs":190,"title":194,"excerpt":195,"readTime":152,"views":196,"isPinned":19,"noindex":19,"publishedAt":197,"updatedAt":180,"category":198,"categories":199,"featuredImage":29,"bgImage":30,"posterImage":201,"relatedSolution":202},25,"installer-huginn-vps",{"fr":189,"en":191,"ar":192,"es":193},"installing-huginn-on-a-vps-self-hosted-automation","تثبيت-huginn-على-خادم-vps-أتمتة-ذاتية-الاستضافة","instalar-huginn-en-un-vps","Installer Huginn sur un VPS : automatisation self-hosted","Installez Huginn sur un VPS pour créer des agents qui surveillent le web, scrapent des pages et déclenchent des actions, 100% self-hosted.",0,"2026-05-26T00:00:00+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[200],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Finstaller-huginn-vps-poster.svg",{"categorySlug":25,"appSlug":203},"huginn",true,1794270737744]