Back to Apps
Windmill

Deploy Windmill on Your Own Server

Windmill is an open-source alternative to Retool, Airplane and n8n.

Automation

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

Get Started

What is Windmill?

Windmill is an open-source alternative to Retool, Airplane and n8n to build all your internal tools (endpoints, workflows, UIs) through simple scripts - in Typescript, Python, Go & Bash - and low code builders.

Learn more

Self-Host Windmill

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.

General
3

Deploy

Copy the configuration and run it on your server.

services:
  windmill:
    image: ghcr.io/windmill-labs/windmill:1.434.1
    environment:
      DATABASE_URL: postgres://postgres:707feb09a034836e@windmill-postgres/windmill?sslmode=disable
      MODE: server
    depends_on:
      - windmill-postgres
  windmill-lsp:
    image: ghcr.io/windmill-labs/windmill-lsp:1.434.1
    volumes:
      - windmill-lsp-cache:/root/.cache
  windmill-postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: windmill
      POSTGRES_PASSWORD: 707feb09a034836e
      POSTGRES_USER: postgres
    volumes:
      - windmill-postgres-data:/var/lib/postgresql/data
  windmill-worker:
    image: ghcr.io/windmill-labs/windmill:1.434.1
    environment:
      DATABASE_URL: postgres://postgres:707feb09a034836e@windmill-postgres/windmill?sslmode=disable
      MODE: worker
      WORKER_GROUP: default
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - windmill-worker-dependency-cache:/tmp/windmill/cache
    depends_on:
      - windmill-postgres
  windmill-worker-native:
    image: ghcr.io/windmill-labs/windmill:1.434.1
    environment:
      DATABASE_URL: postgres://postgres:707feb09a034836e@windmill-postgres/windmill?sslmode=disable
      MODE: worker
      WORKER_GROUP: native
    depends_on:
      - windmill-postgres
volumes:
  windmill-lsp-cache: {}
  windmill-postgres-data: {}
  windmill-worker-dependency-cache: {}

Then run:

docker compose up -d
4

Access

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

Why Self-Host Windmill?

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

ghcr.io/windmill-labs/windmill:${app_version}

Official Docs

windmill.dev

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)"