Independent testing Updated August 2026 387 self-hosting guides 5 VPS providers tested

guide

Como Alojar o Windmill num VPS por Conta Própria (Guia Completo)

Instale o Windmill, a alternativa open source ao Retool e ao Temporal, num VPS com a pilha Compose oficial. Dimensionamento por worker, TLS com Caddy e cópias de segurança.

O Windmill transforma scripts em webhooks, fluxos de trabalho, tarefas agendadas e interfaces internas - uma alternativa open source ao Retool e ao Temporal. Alojá-lo por conta própria é simples, com um senão que convém conhecer antes de começar: não usa Redis, digam o que disserem vários guias na web.

Porquê alojar o Windmill por conta própria?

O plano na nuvem cobra por utilizador e por execução. Alojar por conta própria elimina ambos os contadores, o que conta numa plataforma de automatização: as tarefas que mais quer pôr a correr com regularidade são justamente as que acumulariam encargos de execução. Além disso mantém os seus scripts, credenciais e registos de tarefas na sua própria máquina, e esses scripts guardam habitualmente chaves de API para tudo o resto que administra.

A edição comunitária é AGPL-3.0. A empresarial fica atrás de uma chave de licença e de outra etiqueta de imagem; não é precisa para pôr a plataforma a funcionar.

Escolher o VPS certo

O Windmill dimensiona-se por worker, não por aplicação. A regra prática é um worker por vCPU com 1-2 GB de RAM cada, além do Postgres e do processo servidor.

FornecedorPlanovCPU / RAM / DiscoPreçoNotasLigação
ContaboCloud VPS 44 / 8 GB / 100 GB SSD5,50 EUR/mês s/ IVAQuatro núcleos significam quatro workers em paraleloContabo
Hetzner CloudCX232 / 4 GB / 40 GB NVMe5,49 EUR/mês s/ IVAAssenta na pilha predefinida de dois workersHetzner
DigitalOceanBasic 4 GB2 / 4 GB / 80 GB SSD24 USD/mêsMesmas especificações do CX23 por quatro vezes o preçoDigitalOcean
VultrRegular 4 GB2 / 4 GB / 80 GB SSD20 USD/mêsA maior escolha de regiõesVultr
LinodeLinode 4 GB2 / 4 GB / 80 GB SSD24 USD/mêsDesempenho previsívelLinode

Como o débito cresce com o número de workers, aqui o número de núcleos conta mais do que a frequência. Para uma comparação detalhada, visite a nossa página comparação completa de VPS.

Pré-requisitos

Passo 1: Preparar o VPS

Ligue-se e atualize:

ssh root@o-seu-ip-vps
apt update && apt upgrade -y

Instale o Docker e o plugin Compose:

apt install -y docker.io docker-compose-v2
systemctl enable --now docker
docker compose version

Abra as portas que o Caddy vai usar:

ufw allow OpenSSH && ufw allow 80 && ufw allow 443
ufw enable

Passo 2: Obter a pilha Compose oficial

Não escreva um ficheiro Compose à mão para o Windmill. O projeto publica um, e liga corretamente os workers, o indexador e os servidores de linguagem:

mkdir -p ~/windmill && cd ~/windmill
curl -fsSL -o docker-compose.yml https://raw.githubusercontent.com/windmill-labs/windmill/main/docker-compose.yml
curl -fsSL -o .env https://raw.githubusercontent.com/windmill-labs/windmill/main/.env
curl -fsSL -o Caddyfile https://raw.githubusercontent.com/windmill-labs/windmill/main/Caddyfile

A pilha que acabou de descarregar corre sete serviços:

Nessa lista não há Redis, e na sua também não deve haver.

Passo 3: Definir palavra-passe e domínio

O .env fornecido traz um valor por omissão deliberadamente fraco:

DATABASE_URL=postgres://postgres:changeme@db/windmill?sslmode=disable
WM_IMAGE=ghcr.io/windmill-labs/windmill:main

Substitua changeme por um segredo gerado antes do primeiro arranque, já que a base de dados é criada nesse mesmo arranque:

openssl rand -hex 24

No mesmo ficheiro, defina BASE_URL com o seu domínio. O Caddy lê-o para pedir um certificado.

Passo 4: Arrancar

docker compose up -d
docker compose ps

O primeiro arranque descarrega várias imagens e corre as migrações da base de dados, por isso dê-lhe um minuto. Abra o seu domínio e crie a primeira conta - passa a ser a superadministradora da instância.

Passo 5: Acrescentar workers à medida das necessidades

É esta a parte que distingue o Windmill da maioria das aplicações auto-alojadas. Não escala engordando um processo, mas acrescentando contentores worker. Copie o bloco windmill_worker do docker-compose.yml, dê-lhe um novo nome de serviço, mantenha a mesma DATABASE_URL e MODE=worker, e aplique:

docker compose up -d

Os workers coordenam-se através do Postgres, mais nenhuma configuração muda. Conte com cerca de um vCPU e 1-2 GB de RAM para cada um.

Passo 6: Salvaguardar a base de dados

Tudo o que importa - scripts, fluxos, agendamentos, recursos, histórico de tarefas - vive no Postgres. O volume da cache de dependências contém dados derivados e reconstrói-se sozinho.

docker compose exec db pg_dump -U postgres windmill | gzip > windmill-$(date +%F).sql.gz

Copie-o para fora do servidor. Note que o Windmill guarda credenciais dos seus outros sistemas: trate essa cópia como um segredo e cifre-a em repouso.

Onde as pessoas ficam presas

Copiar de um blogue um ficheiro Compose assente em Redis. O Windmill nunca precisou de um. O contentor arranca e fica simplesmente parado enquanto se interroga sobre por que razão a fila não o usa.

Dimensionar pelo regime em repouso. A instalação de dependências é o pico de memória. Uma tarefa em Python que importa o pandas precisa de bastante mais RAM na primeira execução do que em qualquer outra a seguir, pelo que uma pilha que parece saudável em repouso pode falhar numa tarefa a frio.

Deixar changeme como está. É a palavra-passe do Postgres no .env publicado e a primeira coisa que uma varredura oportunista experimenta se algum dia expuser a porta 5432.

O Windmill recompensa uma máquina com mais núcleos em vez de núcleos mais rápidos, o que torna aqui especialmente interessantes os planos europeus multinúcleo baratos. Dimensione pelo número de tarefas que quer a correr ao mesmo tempo, guarde a cópia do Postgres cifrada noutro sítio, e o serviço dá pouco trabalho.

Para mais projetos e sugestões de auto-alojamento, percorra a lista awesome-selfhosted ou a comunidade r/selfhosted.

Frequently asked questions

Preciso de Redis para alojar o Windmill por conta própria?

Não, e é aqui que muita gente tropeça. O Windmill usa o PostgreSQL como base de dados e como fila de tarefas, pelo que o ficheiro Compose oficial não contém serviço Redis nem variável REDIS_URL. Vários guias de terceiros acrescentam um mesmo assim. Se copiou um ficheiro Compose com um contentor Redis, está a correr um serviço ao qual o Windmill nunca se liga e pode removê-lo sem risco.

Como acrescento mais workers a uma instância do Windmill já em funcionamento?

Acrescente ao ficheiro Compose outro serviço windmill_worker a apontar para a mesma DATABASE_URL com MODE=worker e execute docker compose up -d. Os workers coordenam-se através do Postgres, por isso não é preciso reconfigurar mais nada. O limite prático é o número de núcleos: cada worker padrão executa uma tarefa de cada vez e quer cerca de um vCPU e 1-2 GB de RAM.

Como coloco o Windmill atrás de HTTPS?

A pilha já inclui o Caddy, que por omissão serve HTTP simples na porta 80. Para obter TLS automático, defina BASE_URL com o seu domínio e edite o Caddyfile e o serviço caddy de modo a expor a porta 443, tal como descrevem os comentários do .env fornecido. Aponte o DNS ao servidor antes de o iniciar, para que o certificado seja emitido no primeiro arranque.