Back to blog

How to Self-Host Apache Airflow on a VPS in 2026

August 26, 2026Mario Marin
Last updated: July 2026
Apache Airflow looks simple in a "hello world" tutorial and then turns into five separate services the moment it hits production: a scheduler, a webserver, one or more workers, a Postgres metadata database, and a Redis broker for the Celery executor. Choosing the right airflow hosting VPS comes down to one question that changes as your pipelines grow: how many DAGs are you actually scheduling, and how much concurrency do they need? This guide walks through three tiers - a single-node setup for small DAG counts, a split-component setup on a larger VPS, and a move to dedicated hardware for high-volume production - so you can size correctly the first time instead of migrating under pressure.

What Self-Hosting Apache Airflow Actually Requires

Before picking a plan, it helps to know what you're actually running. A production-grade Airflow stack has five moving parts:
  • Scheduler - parses your DAG files and decides what runs when. CPU-bound and gets busier as your DAG count grows.
  • Webserver - serves the UI and API. Lightweight but needs to stay responsive under load.
  • Worker(s) - execute the actual tasks. This is where RAM and CPU get consumed fastest, especially with the CeleryExecutor running several tasks in parallel.
  • Postgres - stores DAG state, task history, connections, and variables. I/O-sensitive; disk speed matters here more than most people expect.
  • Redis - the message broker between the scheduler and Celery workers. Low resource use but needs to be always-on and low-latency.
Every airflow vps requirements question really breaks down to "how do these five components share (or not share) a machine." That's the entire logic behind the three tiers below.

Tier 1: Single-Node Setup for Small DAG Counts

If you're running fewer than roughly 50 DAGs with modest concurrency - internal reporting jobs, ELT pipelines, scheduled scraping, marketing data syncs - you don't need multiple servers. All five components run comfortably as containers on one machine via Docker Compose, which is the standard way most teams self-host Airflow today.
For this tier, a mid-tier VPS is the right call. X-Zone's Basic plan (16GB RAM / 4 vCPU / 160GB SSD, from the VPS hosting lineup) gives Postgres and Redis their own headroom while the scheduler, webserver, and 2-3 Celery worker containers run alongside them without contention. If you're just testing a proof-of-concept or running a handful of lightweight DAGs, the smaller Starter plan (8GB RAM / 2 vCPU / 120GB SSD) is enough to get the full stack up and validate your pipelines before committing to more capacity.
Because every X-Zone VPS ships with full root access and KVM virtualization, there's no restriction on running Docker Compose, custom kernel modules for storage drivers, or anything else Airflow's ecosystem expects. Combined with 1 Gbps unmetered bandwidth, pulling large datasets into your DAGs or syncing to external warehouses won't hit a bandwidth ceiling. X-Zone's presence across 12 datacenter cities - including Frankfurt and Amsterdam - also means you can place the VPS close to the data sources or warehouses your DAGs talk to, which cuts network latency on I/O-heavy tasks.

Tier 2: Splitting Components Across a Larger VPS

Once you're past small-team usage - say 50-200 DAGs, higher task concurrency, or multiple engineers triggering backfills at once - a single all-in-one container stack starts to show contention. The fix isn't necessarily a bigger single box; it's separating the stateful and compute-heavy pieces.
A common pattern at this stage:
  • One VPS running the scheduler and webserver, sized for CPU (e.g. the Pro plan, 24GB RAM / 6 vCPU / 200GB SSD)
  • A second VPS dedicated to Postgres and Redis, sized for consistent I/O and memory (the Business plan, 32GB RAM / 8 vCPU / 300GB SSD, keeps the metadata database from ever competing with task execution for resources)
  • One or more additional Celery worker VPS instances that scale horizontally as task volume grows - each one just needs enough RAM per concurrent task slot
This is the point where an airflow docker vps setup evolves from "one Compose file" to "one Compose file per role, deployed to separate hosts." It costs more than the single-node tier but buys you the ability to scale workers independently of the scheduler and database - which matters a lot once backfills or DAG bursts become routine rather than occasional.

Tier 3: Moving to Dedicated for High-DAG-Count Production Pipelines

When you're running hundreds of DAGs with tight SLAs, heavy parallel task execution, or Airflow sits in the critical path for revenue-generating pipelines, shared-tenancy VPS capacity - even split across several instances - starts to hit diminishing returns. At that scale, the Postgres metadata database in particular benefits from guaranteed, uncontended CPU and disk throughput rather than virtualized shares.
This is where dedicated servers take over. X-Zone's dedicated lineup starts at a Dual Xeon E5-2630 (16 cores / 32 threads, 128GB DDR4, 6x SSD, 1 Gbps) and scales all the way to a Dual EPYC 9754 configuration (256 cores / 512 threads, 1TB DDR5, 24x NVMe) with port speeds up to 200 Gbps. For a high-DAG-count Airflow deployment, this class of hardware means you can run Postgres, Redis, the scheduler, the webserver, and dozens of worker processes across dedicated cores without any noisy-neighbor risk - and NVMe storage keeps metadata writes and task logging fast even under sustained load.
The decision point is really about consistency: if your business depends on DAGs finishing on schedule every single run, dedicated hardware removes the last variable that a VPS - even a large one - can't fully control.

Airflow Hosting VPS Sizing Guide at a Glance

StageDAG countSetupRecommended plan
Proof of concept<10Single-node Compose stackStarter (8GB/2vCPU/120GB)
Small team production~10-50Single-node Compose stackBasic (16GB/4vCPU/160GB)
Growing pipelines~50-200Split scheduler/webserver + DB + workersPro + Business (multi-VPS)
High-volume production200+Dedicated hardware, isolated coresDedicated (from Dual Xeon E5-2630)

VPS or Dedicated - How to Decide

The honest answer is: start on a VPS and move up only when you have evidence you need to, not in anticipation of growth that might not arrive. Hourly billing is capped at the monthly rate, so testing a bigger tier costs nothing extra, and deploys finish in under 60 seconds - meaning trying a Pro plan for a week to see how the scheduler handles a heavier DAG load carries little downside. If your Airflow needs are genuinely light - a handful of DAGs, low concurrency, budget-constrained - the Nano or Micro tier on the same VPS hosting lineup is enough to run the full stack for testing or a small production footprint, before stepping up to Basic or Pro as DAG volume grows.

Verdict

Self-hosting Apache Airflow in 2026 doesn't require guessing at server sizing - it requires matching the setup to your actual DAG count and concurrency, then re-evaluating as that number changes. X-Zone Servers gives you the full range needed to do that without switching providers: KVM VPS plans with full root access for single-node and split-component Docker Compose deployments, and dedicated servers with up to 256 cores and NVMe storage for high-DAG-count production pipelines that can't tolerate contention. Start with the tier that matches where you are today, not where you hope to be in a year.