[{"data":1,"prerenderedAt":116},["ShallowReactive",2],{"seo-verification":3,"blog-installer-windmill-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},27,"installer-windmill-vps","Installing Windmill on a VPS: self-hosted automation","Install Windmill on your VPS: turn your Python, TypeScript and Bash scripts into internal workflows and UIs, self-hosted via Docker.",8,1880,false,"2026-05-24T00: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-windmill-vps-poster.svg",{"categorySlug":18,"appSlug":26},"windmill","Windmill is an open source platform that turns code (Python, TypeScript, Go, Bash, SQL) into workflows, APIs and internal interfaces. Designed for developers, it combines the flexibility of code with the speed of no-code. Self-hosted on a VPS, it becomes your automation engine and your internal app builder, without depending on a SaaS.",[29,33,43,46,68],{"type":30,"title":31,"body":32},"h2","Why self-host Windmill on a VPS","Unlike purely no-code tools, Windmill targets teams that want to write real code but without reinventing orchestration, secret management, schedules and UIs. You drop in a Python or TypeScript function, and Windmill automatically derives an input form from it, exposes it as an API and adds it to the catalog. Self-hosting on a VPS is particularly valuable here: your scripts often touch internal databases, sensitive secrets and private networks. By keeping Windmill on your infrastructure, these scripts run as close as possible to your resources, without exposing your credentials to a third party. The engine is written in Rust, so it's fast and lightweight, and the project is designed for self-hosting from the start.",{"type":34,"title":35,"items":36},"ul","Concrete benefits of self-hosting",[37,38,39,40,41,42],"Native Python\u002FTypeScript\u002FGo\u002FBash code versioned in Git, with no logic locked inside a proprietary UI.","Management of encrypted secrets and variables, accessible only from your server.","Automatic generation of UIs and APIs from your functions, with no front end to write.","Scalable workers: add worker containers to absorb more jobs in parallel.","Execution as close as possible to your internal databases, with minimal latency and a respected private network.","No execution limits imposed by a SaaS vendor.",{"type":30,"title":44,"body":45},"Technical requirements","Windmill relies on PostgreSQL and one or more workers. For a lightweight production instance, plan for 2 vCPU and 4 GB of RAM; the Rust engine is frugal, but each worker runs user code and can occasionally consume memory depending on your scripts. Allow 4 vCPU \u002F 8 GB if you plan several workers and heavy Python jobs (data, pandas). Disk: 20 to 40 GB depending on the dependency cache. You need Docker and Docker Compose, a domain (`windmill.yourdomain.com`), and ports 80\u002F443 open. PostgreSQL is included in the official compose.",{"type":47,"title":48,"steps":49},"steps","Deploy Windmill with Docker Compose",[50,53,56,59,62,65],{"title":51,"body":52},"Initialize the server","On the VPS, install Docker (`curl -fsSL https:\u002F\u002Fget.docker.com | sh`), create `\u002Fopt\u002Fwindmill` and move into it. Check the available memory with `free -h` before continuing.",{"title":54,"body":55},"Download the compose and the .env","Fetch the reference file: `curl -O https:\u002F\u002Fraw.githubusercontent.com\u002Fwindmill-labs\u002Fwindmill\u002Fmain\u002Fdocker-compose.yml` and the associated `.env`. The compose defines the server, the workers and PostgreSQL.",{"title":57,"body":58},"Configure the database and base URL","In the `.env`, set `DATABASE_URL` with a strong password and `BASE_URL=https:\u002F\u002Fwindmill.yourdomain.com`. Adjust `NUM_WORKERS` according to your vCPU (start at 2). Leave the `native` worker for lightweight jobs.",{"title":60,"body":61},"Start the stack","Run `docker compose up -d`. Windmill automatically applies its PostgreSQL migrations on first startup. Monitor with `docker compose logs -f windmill_server` until the listening message appears.",{"title":63,"body":64},"Reverse proxy and HTTPS","The compose often includes a Caddy service. Otherwise, add your own Caddy: `windmill.yourdomain.com { reverse_proxy windmill_server:8000 }`. Caddy handles the Let's Encrypt certificate with no additional configuration.",{"title":66,"body":67},"First login and script test","Log in with the default credentials (admin@windmill.dev \u002F changeme), change the password immediately, create a workspace, then write a Python script `def main(name: str): return f'Hello {name}'` to verify the automatic UI generation and execution on a worker.",{"type":69,"body":70},"tip","For heavy Python scripts, create workers dedicated to a tag (`worker_tags=gpu` or `heavy`) and route resource-hungry jobs to these workers via the script's `tag` field. This prevents a pandas job from occupying all the workers and blocking fast automations. Windmill also caches pip\u002Fnpm dependencies in a volume: mount it on a fast disk to drastically speed up the first startups of jobs.","A Cloud VPS built for Windmill","With the ServOrbit Cloud VPS, you have the vCPU and RAM needed to run the Windmill server and workers, with Docker ready to use and automatic SSL. Ideal for dev teams that want their own code-driven automation platform.","Deploy my Cloud VPS","\u002Fvps-cloud",[76,90,103],{"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":11,"views":95,"isPinned":13,"publishedAt":96,"category":97,"categories":98,"featuredImage":22,"bgImage":23,"posterImage":100,"relatedSolution":101},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.",488,"2026-05-27T00:00:00+00:00",{"id":16,"name":17,"slug":18,"color":19,"icon":18},[99],{"id":16,"name":17,"slug":18,"color":19,"icon":18},"\u002Fblog\u002Fcovers\u002Finstaller-node-red-vps-poster.svg",{"categorySlug":18,"appSlug":102},"node-red",{"id":104,"slug":105,"title":106,"excerpt":107,"readTime":11,"views":108,"isPinned":13,"publishedAt":109,"category":110,"categories":111,"featuredImage":22,"bgImage":23,"posterImage":113,"relatedSolution":114},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},[112],{"id":16,"name":17,"slug":18,"color":19,"icon":18},"\u002Fblog\u002Fcovers\u002Finstaller-huginn-vps-poster.svg",{"categorySlug":18,"appSlug":115},"huginn",1785628452396]