[{"data":1,"prerenderedAt":117},["ShallowReactive",2],{"seo-verification":3,"blog-installer-apache-airflow-vps-en":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"title":9,"excerpt":10,"readTime":11,"views":12,"isPinned":13,"publishedAt":14,"category":15,"categories":20,"featuredImage":22,"bgImage":23,"posterImage":24,"relatedSolution":25,"intro":27,"sections":28,"ctaTitle":71,"ctaBody":72,"ctaButton":73,"ctaUrl":74,"relatedPosts":75},31,"installer-apache-airflow-vps","Installing Apache Airflow on a VPS: self-hosted automation","Install Apache Airflow on your VPS: orchestration of DAGs in Python for your data and ETL pipelines, self-hosted with Docker Compose.",9,747,false,"2026-05-20T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":18},2,"Automation","automatisation","bg-brand-action\u002F10 text-brand-action",[21],{"id":16,"name":17,"slug":18,"color":19,"icon":18},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Finstaller-apache-airflow-vps-poster.svg",{"categorySlug":18,"appSlug":26},"apache-airflow","Apache Airflow is the open source reference for orchestrating data pipelines as DAGs written in Python. Schedulers, operators, sensors and a rich UI make it the de facto standard for ETL and batch data. Self-hosted on a VPS, it becomes your central scheduler, without depending on a costly managed service.",[29,33,43,46,68],{"type":30,"title":31,"body":32},"h2","Why self-host Apache Airflow on a VPS","Airflow is the tool data teams choose when they want to describe their pipelines in pure Python: each DAG is a .py file that defines tasks, their dependencies and their scheduling. The provider ecosystem is immense (SQL databases, S3, BigQuery, dbt, Spark…), and the community gigantic. Managed services (Cloud Composer, MWAA) charge a high hourly rate for the environment; by self-hosting Airflow on a VPS, you get the same engine for the cost of a server, and your DAGs run as close as possible to your internal data sources. It is also a matter of control: provider versions, custom Python dependencies, variables and connections, everything stays in your hands. The official Docker Compose deployment (CeleryExecutor) faithfully reproduces a production architecture: webserver, scheduler, workers, Redis and PostgreSQL.",{"type":34,"title":35,"items":36},"ul","Concrete benefits of self-hosting",[37,38,39,40,41,42],"DAGs in pure Python, versioned in Git, with controlled dependencies and providers.","Huge ecosystem of operators: SQL, cloud, dbt, Spark, HTTP, and more.","Robust scheduler: cron, dependencies between tasks, backfill and catchup.","Scalable Celery workers to absorb hundreds of tasks in parallel.","Execution close to your internal databases, with no transit through a third-party cloud.","The cost of a VPS instead of a managed environment billed by the hour.",{"type":30,"title":44,"body":45},"Technical requirements","Airflow is the most resource-hungry tool in this series in a CeleryExecutor configuration, because it simultaneously runs webserver, scheduler, worker(s), triggerer, Redis and PostgreSQL. The official documentation recommends at least 4 GB of RAM, but for comfortable production aim for 4 vCPU and 8 GB of RAM; 16 GB if your DAGs load pandas or large volumes. Plan for 40 GB of disk, Docker and Docker Compose, and a domain (`airflow.yourdomain.com`). The LocalExecutor mode lightens the stack (without Celery or Redis) and can run on 4 GB if your needs remain modest.",{"type":47,"title":48,"steps":49},"steps","Deploy Apache Airflow with Docker Compose",[50,53,56,59,62,65],{"title":51,"body":52},"Fetch the official compose","Create `\u002Fopt\u002Fairflow`, then download the reference file: `curl -LfO https:\u002F\u002Fairflow.apache.org\u002Fdocs\u002Fapache-airflow\u002Fstable\u002Fdocker-compose.yaml`. Create the expected subfolders: `mkdir -p .\u002Fdags .\u002Flogs .\u002Fplugins .\u002Fconfig`.",{"title":54,"body":55},"Set the permissions and the UID","Airflow requires a consistent UID for the mounted volumes. Generate the environment file: `echo -e \"AIRFLOW_UID=$(id -u)\" > .env`. Without this, the scheduler will not be able to write its logs and will crash on startup.",{"title":57,"body":58},"Initialize the database","Launch the migration and the creation of the admin account: `docker compose up airflow-init`. This command prepares PostgreSQL, applies the migrations and creates the default user `airflow \u002F airflow`, to be changed afterwards.",{"title":60,"body":61},"Start the complete stack","Launch all the services: `docker compose up -d`. Check that webserver, scheduler, worker and triggerer are `healthy` with `docker compose ps`. The webserver listens on port 8080.",{"title":63,"body":64},"Reverse proxy and HTTPS","Put Caddy in front of the webserver: `airflow.yourdomain.com { reverse_proxy localhost:8080 }`. HTTPS protects access to the Airflow UI, which exposes connections, variables and potentially sensitive logs.",{"title":66,"body":67},"Drop in a DAG and run it","Place a minimal `hello.py` file in `.\u002Fdags` (a `DAG` with a `BashOperator` or `PythonOperator`). The scheduler detects it within a few seconds. Enable it in the UI, trigger a manual execution and inspect the task logs.",{"type":69,"body":70},"tip","Never put heavy logic directly in the DAG file: the scheduler parses all the .py files at regular intervals (`min_file_process_interval`), and a costly import at module level slows down the entire scheduler. Keep the parsing code light and offload the work into the tasks. To manage custom Python dependencies, build your own image derived from `apache\u002Fairflow` with a `requirements.txt` rather than installing packages at runtime: your workers start faster and remain reproducible. Finally, monitor the growth of the `.\u002Flogs` folder and purge it regularly.","The ideal Cloud VPS for Airflow","Airflow in Celery mode demands RAM and several containers: the ServOrbit Cloud VPS provides the resources, preconfigured Docker and automatic SSL to host your data scheduler self-hosted, at a controlled cost.","Deploy my Cloud VPS","\u002Fvps-cloud",[76,90,104],{"id":77,"slug":78,"title":79,"excerpt":80,"readTime":81,"views":82,"isPinned":13,"publishedAt":83,"category":84,"categories":85,"featuredImage":22,"bgImage":23,"posterImage":87,"relatedSolution":88},3,"installer-n8n-vps","Installing n8n on a VPS: automation without limits","A complete guide to deploying self-hosted n8n on a VPS. Automate your business processes with no workflow restrictions and no per-execution billing.",6,3080,"2026-06-05T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":18},[86],{"id":16,"name":17,"slug":18,"color":19,"icon":18},"\u002Fblog\u002Fcovers\u002Finstaller-n8n-vps-poster.svg",{"categorySlug":18,"appSlug":89},"n8n",{"id":91,"slug":92,"title":93,"excerpt":94,"readTime":95,"views":96,"isPinned":13,"publishedAt":97,"category":98,"categories":99,"featuredImage":22,"bgImage":23,"posterImage":101,"relatedSolution":102},24,"installer-node-red-vps","Installing Node-RED on a VPS: self-hosted automation","Install Node-RED on a VPS to automate your flow-based workflows, connect your APIs and IoT devices, all self-hosted and secure.",8,488,"2026-05-27T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":18},[100],{"id":16,"name":17,"slug":18,"color":19,"icon":18},"\u002Fblog\u002Fcovers\u002Finstaller-node-red-vps-poster.svg",{"categorySlug":18,"appSlug":103},"node-red",{"id":105,"slug":106,"title":107,"excerpt":108,"readTime":95,"views":109,"isPinned":13,"publishedAt":110,"category":111,"categories":112,"featuredImage":22,"bgImage":23,"posterImage":114,"relatedSolution":115},25,"installer-huginn-vps","Installing Huginn on a VPS: self-hosted automation","Install Huginn on a VPS to build agents that monitor the web, scrape pages and trigger actions, 100% self-hosted.",525,"2026-05-26T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":18},[113],{"id":16,"name":17,"slug":18,"color":19,"icon":18},"\u002Fblog\u002Fcovers\u002Finstaller-huginn-vps-poster.svg",{"categorySlug":18,"appSlug":116},"huginn",1785628449795]