Por qué autoalojar Windmill en un VPS
Windmill se ejecuta de forma continua en su servidor y expone cada uno de sus scripts como una API REST firmada, una tarea programada o una interfaz autogenerada. A diferencia de una función serverless, no hay arranque en frío ni límite de ejecución impuesto por un tercero. Sus scripts en Python, TypeScript o Bash acceden directamente a las bases de datos y a los servicios internos de su VPS, sin atravesar ninguna pasarela cloud. El motor está escrito en Rust: consume menos de 100 MB de RAM en reposo y arranca en pocos segundos incluso en el VPS Cloud más pequeño.
Ventajas concretas del autoalojamiento
- Ningún coste por ejecución: miles de jobs al día sin factura de nube.
- Acceso directo a las bases de datos y a los servicios internos del VPS, sin túnel.
- Secretos y claves de API almacenados en Windmill, que nunca salen de su servidor.
- Formularios de entrada y endpoints REST generados automáticamente para cada script.
- Workers adicionales que se añaden en caliente para absorber los picos de carga.
- Versionado Git integrado — cada modificación de un script queda trazada.
Requisitos técnicos
Windmill necesita como mínimo 2 vCPU y 4 GB de RAM para ejecutar el servidor, un worker por defecto y un worker nativo contra PostgreSQL 16. Calcule 10 GB de disco para los logs, la caché de los workers y los volúmenes de la base de datos. Basta con Ubuntu 22.04 o 24.04 con Docker instalado. No se requiere ningún GPU. Si prevé ejecutar workers Python pesados (ML, pandas sobre grandes conjuntos de datos), opte por 4 vCPU y 8 GB de RAM.
Desplegar Windmill con Docker Compose
Clonar el repositorio oficial
Conéctese por SSH a su VPS y descargue el
docker-compose.ymloficial:git clone https://github.com/windmill-labs/windmill.git && cd windmillPara producción, fije una versión estable (consulte las releases de GitHub). La rama
maines estable, pero puede incluir correcciones aún en pruebas.Generar los secretos de entorno
Copie
.env.exampleen.envy rellene las variables:cp .env.example .envPara
DATABASE_URL, puede utilizar el PostgreSQL incluido en la stack (--profiles pg up) o apuntar a una instancia existente. RelleneBASE_URLconhttps://votre-domaine.com— Windmill lo utiliza para firmar los webhooks y construir las URL de retorno de los flows.Arrancar la stack
Inicie el servidor, el worker por defecto y el worker nativo:
docker compose --profile pg up -dCompruebe que los cuatro contenedores están
Upcondocker compose ps. El servidor escucha en el puerto 8000 del bucle local.Configurar el reverse proxy nginx
Windmill expone el puerto 8000 en
127.0.0.1. Configure nginx para hacer de proxy y terminar el TLS:location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; }Las cabeceras
UpgradeyConnectionson necesarias para los WebSockets que utiliza el editor en tiempo real.Conectarse y proteger la instancia
Abra
https://votre-domaine.com, inicie sesión con[email protected]/changemey vaya a Ajustes → Usuarios para definir una contraseña robusta y, si lo desea, cambiar la dirección de correo del administrador. El acceso directo al editor sin autenticación es el fallo más habitual en las instancias de Windmill expuestas públicamente.
Instalarlo con un solo clic desde el Marketplace de ServOrbit. Si prefiere evitar la configuración manual, el Marketplace de ServOrbit aprovisiona Windmill automáticamente — servidor, dos workers, PostgreSQL 16, reverse proxy nginx y certificado Let's Encrypt — en unos minutos. La sección «Primer acceso» de su área de cliente indica la URL y las credenciales generadas. Vaya a la [ficha de Windmill](/marketplace/automatisation/windmill) para empezar.