Railway

Deploy Windmill | Open-Source Retool Alternative

Self-host Windmill. Run & automate workflows, scripts, and internal tools

Deploy Windmill | Open-Source Retool Alternative

Just deployed

Just deployed

/var/lib/postgresql/data

Windmill logo

Deploy and Host Windmill on Railway

Deploy on Railway

Deploy Windmill on Railway to get a fully self-hosted developer platform for building internal tools, workflows, and scripts. Windmill is the open-source alternative to Retool and Temporal — a code-first automation engine that turns Python, TypeScript, Go, Bash, and SQL scripts into production-ready webhooks, workflows, and UIs.

This Railway template pre-configures three services: Windmill-Server (API + web UI), Windmill-Worker (job execution engine), and PostgreSQL (state + job queue). Railway handles SSL, networking, and scaling — you focus on building scripts and flows.

Windmill Railway architecture

Getting Started with Windmill on Railway

After deployment completes, open the public URL assigned to Windmill-Server. Log in with the default credentials [email protected] / changeme — change the password immediately from the user settings page. Create a new workspace or use the default admins workspace. Navigate to the Home tab and click + Script to write your first Python or TypeScript script. Windmill auto-generates a UI form from your script's parameters, so you can run it immediately without building a frontend.

To create a workflow, click + Flow and chain multiple scripts together with branching, error handlers, and approval steps. Schedule any script or flow as a cron job from the Schedules tab.

Windmill dashboard screenshot

About Hosting Windmill

Windmill is a code-first orchestration platform built in Rust (backend) and Svelte (frontend) with 16k+ GitHub stars. It solves the problem of scattered internal scripts by providing a centralized platform where teams can write, run, schedule, and share scripts with auto-generated UIs.

Key features:

  • Multi-language support — Python, TypeScript/JavaScript, Go, Bash, SQL, PHP, C#, Rust
  • Auto-generated UIs — every script gets a form UI from its type signature
  • Flow builder — visual editor for multi-step workflows with parallel branches and retries
  • 13x faster than Airflow — Rust-based job queue with sub-second scheduling
  • 58+ integrations — Google Workspace, Slack, GitHub, PostgreSQL, AWS, OpenAI, and more
  • Webhook endpoints — turn any script into an HTTP API endpoint
  • Approval steps — human-in-the-loop flows for sensitive operations
  • Built-in IDE — browser-based code editor with LSP intellisense

Why Deploy Windmill on Railway

  • One-click deploy with PostgreSQL pre-configured
  • Automatic SSL and public domain — no reverse proxy setup needed
  • Server and worker scale independently via Railway's container management
  • Zero-maintenance database with Railway-managed PostgreSQL
  • Private networking between services out of the box

Common Use Cases for Self-Hosted Windmill

  • Internal tools and admin panels — auto-generate CRUD interfaces from database queries with approval workflows
  • ETL and data pipelines — schedule Python/SQL scripts to transform and sync data across databases and APIs
  • Webhook-driven automation — receive events from Stripe, GitHub, or Slack and trigger multi-step processing flows
  • AI/LLM pipelines — chain OpenAI calls with data retrieval, processing, and notification steps

Dependencies for Windmill on Railway

  • Windmill-Serverghcr.io/windmill-labs/windmill:latest — API server and web frontend
  • Windmill-Workerghcr.io/windmill-labs/windmill:latest — job execution engine (same image, different MODE)
  • PostgreSQL — Railway-managed — stores all state, scripts, flows, schedules, and job queue

Environment Variables Reference for Windmill

VariableServiceDescription
DATABASE_URLServer, WorkerPostgreSQL connection string
MODEServer, Workerserver or worker — determines binary behavior
BASE_URLServerPublic URL for the instance (used in OAuth, resume URLs)
PORTServerHTTP listening port (8000)
WORKER_GROUPWorkerWorker group name (default for standard jobs)

Deployment Dependencies

Hardware Requirements for Self-Hosting Windmill

ResourceMinimumRecommended
CPU1 vCPU4 vCPU (1 server + 3 workers)
RAM2 GB8 GB (server 2 GB + workers 2 GB each)
Storage1 GB (app) + 1 GB (PostgreSQL)5 GB+ PostgreSQL for production workloads
RuntimeDockerDocker Compose or Kubernetes

Native workers (lightweight jobs) need only 0.1 CPU and 128 MB RAM. Standard workers need 1 vCPU and 2 GB RAM each.

Self-Hosting Windmill with Docker Compose

Clone the official configuration and start all services:

curl https://raw.githubusercontent.com/windmill-labs/windmill/main/docker-compose.yml -o docker-compose.yml
curl https://raw.githubusercontent.com/windmill-labs/windmill/main/Caddyfile -o Caddyfile
curl https://raw.githubusercontent.com/windmill-labs/windmill/main/.env -o .env
docker compose up -d

For production, point to an external PostgreSQL instance by editing .env:

DATABASE_URL=postgres://user:password@your-postgres-host:5432/windmill?sslmode=require

Access the UI at http://localhost and log in with [email protected] / changeme.

How Much Does Windmill Cost to Self-Host?

Windmill Community Edition is free and open-source (AGPLv3) with unlimited executions and up to 50 users. The Enterprise Edition starts at $120/month ($20/developer, $10/operator) and adds SAML/SCIM, audit logs, Kafka/NATS triggers, and priority 24/7 support. On Railway, your only cost is infrastructure — typically $5–15/month for a small deployment with server, worker, and PostgreSQL.

Windmill vs n8n: Which Automation Platform to Self-Host?

FeatureWindmilln8n
ApproachCode-first (scripts → UIs)Visual-first (node graph)
LanguagesPython, TS, Go, Bash, SQL, PHP, C#JavaScript/TypeScript only
Auto-generated UIsYes (from type signatures)No
Flow builderVisual + codeVisual only
Integrations58+ OAuth + any HTTP API400+ pre-built nodes
Performance13x faster than Airflow (Rust)Node.js runtime
LicenseAGPLv3Sustainable Use License

Windmill suits teams that prefer writing code and need multi-language support. n8n is better for non-developers who want drag-and-drop integration building.

FAQ

What is Windmill and why should you self-host it? Windmill is an open-source developer platform that turns scripts into workflows, webhooks, and UIs. Self-hosting gives you full control over data, unlimited executions, and zero per-seat costs for the Community Edition.

What does this Railway template deploy for Windmill? Three services: Windmill-Server (API + web UI on port 8000), Windmill-Worker (job execution engine), and Railway-managed PostgreSQL. The server handles the frontend and API, while the worker executes scripts and flows.

Why does Windmill need PostgreSQL on Railway? PostgreSQL stores everything — scripts, flows, schedules, job queue, execution logs, user accounts, and workspace configuration. It's the single source of truth. Without it, Windmill has no persistent state.

How do I add more workers to Windmill on Railway? Create a new service with the same ghcr.io/windmill-labs/windmill:latest image, set MODE=worker, WORKER_GROUP=default, and DATABASE_URL=${{Postgres.DATABASE_URL}}. Each additional worker adds parallel job execution capacity.

How do I enable OAuth/SSO login in self-hosted Windmill? Navigate to the instance settings as a superadmin and configure OAuth providers (Google, GitHub, Azure AD, GitLab). You'll need to create an OAuth app on each provider and enter the client ID and secret in Windmill's settings UI.

Can Windmill run Docker containers as workflow steps? Yes, but it requires Docker-in-Docker (DinD) which is not available on Railway. For Railway deployments, use Windmill's native script execution (Python, TypeScript, Go, Bash, SQL) instead.


Template Content

More templates in this category

View Template
N8N Main + Worker
Deploy and Host N8N with Inactive worker.

jakemerson
View Template
Postgres Backup
Cron-based PostgreSQL backup to bucket storage

Railway Templates
View Template
Prefect [Updated Apr ’26]
Prefect [Apr ’26] (ETL & Automation alternative to Airflow) Self Host

shinyduo