Back to Apps
Airflow

Deploy Airflow on Your Own Server

A tool to express and execute workflows as directed acyclic graphs (DAGs).

Automation

Want to deploy Airflow on your server faster? Try Senate with one-command setup, automatic HTTPS and monitoring.

Get Started

What is Airflow?

Apache Airflow is a tool to express and execute workflows as directed acyclic graphs (DAGs). It includes utilities to schedule tasks, monitor task progress and handle task dependencies. This instance uses the Bitnami images

Self-Host Airflow

Follow these steps to deploy on your own server.

1

Install Docker

Skip this step if Docker is already installed on your server.

curl -fsSL https://get.docker.com | sh
2

Configure

Customize the settings below. Defaults work for most cases.

3

Deploy

Copy the configuration and run it on your server.

services:
  airflow:
    image: bitnamilegacy/airflow:2.3.3
    environment:
      AIRFLOW_BASE_URL: https://airflow.your-domain.com/
      AIRFLOW_DATABASE_HOST: airflow-db
      AIRFLOW_DATABASE_NAME: airflow_db
      AIRFLOW_DATABASE_PASSWORD: fa518eb103f4297e
      AIRFLOW_DATABASE_USERNAME: airflow_db_user
      AIRFLOW_EMAIL: ""
      AIRFLOW_EXECUTOR: CeleryExecutor
      AIRFLOW_LOAD_EXAMPLES: no
      AIRFLOW_PASSWORD: f08f8ca6928791a1
      AIRFLOW_SECRET_KEY: 5069a191a135013f
      AIRFLOW_USERNAME: airflow_user
      AIRFLOW_WEBSERVER_HOST: airflow
      AIRFLOW__SMTP__SMTP_HOST: ""
      AIRFLOW__SMTP__SMTP_MAIL_FROM: ""
      AIRFLOW__SMTP__SMTP_PASSWORD: ""
      AIRFLOW__SMTP__SMTP_PORT: ""
      AIRFLOW__SMTP__SMTP_SSL: no
      AIRFLOW__SMTP__SMTP_STARTTLS: no
      AIRFLOW__SMTP__SMTP_USER: ""
      REDIS_HOST: airflow-redis
      REDIS_PASSWORD: a3b8a3bd75919a86
    volumes:
      - airflow-dags:/opt/bitnami/airflow/dags
      - airflow-requstxt:/bitnami/python/requirements.txt
    depends_on:
      - airflow-db
      - airflow-redis
  airflow-db:
    image: bitnami/postgresql:12.12.0
    environment:
      POSTGRESQL_DATABASE: airflow_db
      POSTGRESQL_PASSWORD: fa518eb103f4297e
      POSTGRESQL_USERNAME: airflow_db_user
    volumes:
      - airflow-postgresql-persistance:/bitnami
  airflow-redis:
    image: bitnamilegacy/redis:7.0.4
    environment:
      REDIS_PASSWORD: a3b8a3bd75919a86
    volumes:
      - airflow-redis-persistance:/bitnami
  airflow-scheduler:
    image: bitnamilegacy/airflow-scheduler:2.3.3
    environment:
      AIRFLOW_BASE_URL: https://airflow.your-domain.com/
      AIRFLOW_DATABASE_HOST: airflow-db
      AIRFLOW_DATABASE_NAME: airflow_db
      AIRFLOW_DATABASE_PASSWORD: fa518eb103f4297e
      AIRFLOW_DATABASE_USERNAME: airflow_db_user
      AIRFLOW_EXECUTOR: CeleryExecutor
      AIRFLOW_LOAD_EXAMPLES: no
      AIRFLOW_SECRET_KEY: 5069a191a135013f
      AIRFLOW_WEBSERVER_HOST: airflow
      REDIS_HOST: airflow-redis
      REDIS_PASSWORD: a3b8a3bd75919a86
    volumes:
      - airflow-dags:/opt/bitnami/airflow/dags
      - airflow-requstxt:/bitnami/python/requirements.txt
    depends_on:
      - airflow
  airflow-worker:
    image: bitnamilegacy/airflow-worker:2.3.3
    environment:
      AIRFLOW_BASE_URL: https://airflow.your-domain.com/
      AIRFLOW_DATABASE_HOST: airflow-db
      AIRFLOW_DATABASE_NAME: airflow_db
      AIRFLOW_DATABASE_PASSWORD: fa518eb103f4297e
      AIRFLOW_DATABASE_USERNAME: airflow_db_user
      AIRFLOW_EXECUTOR: CeleryExecutor
      AIRFLOW_LOAD_EXAMPLES: no
      AIRFLOW_SECRET_KEY: 5069a191a135013f
      AIRFLOW_WEBSERVER_HOST: airflow
      REDIS_HOST: airflow-redis
      REDIS_PASSWORD: a3b8a3bd75919a86
    volumes:
      - airflow-data:/opt/bitnami/airflow/data
      - airflow-dags:/opt/bitnami/airflow/dags
      - airflow-requstxt:/bitnami/python/requirements.txt
    depends_on:
      - airflow
volumes:
  airflow-dags: {}
  airflow-requstxt: {}
  airflow-postgresql-persistance: {}
  airflow-redis-persistance: {}
  airflow-data: {}

Then run:

docker compose up -d
4

Access

Once started, access your app at http://localhost:8080

Why Self-Host Airflow?

Full Data Ownership

Your data stays on your servers. No third-party access.

No Monthly Fees

Pay only for your server. No per-seat or usage charges.

Complete Control

Customize, backup, and scale on your own terms.

Privacy & Compliance

Meet GDPR, HIPAA, or internal security requirements.

Technical Details

Docker Image

bitnamilegacy/airflow:${airflow_version}

Want to go faster?

Try Senate! Senate handles Docker, HTTPS, updates, and monitoring for you. Deploy any of our 300+ apps with a single command.

Install on any Linux server:

sh -c "$(curl -sSL https://get.senate.sh)"