−25%

no Windows com pagamento anual, até 31/10. Ver planos

EQVPS
Começar

VPS para Activepieces: automação no seu servidor

Activepieces, o construtor de automações open source, no seu servidor: sem cobrança por tarefa, webhooks no seu domínio. Instalação testada.

Serviços de automação hospedados cobram por tarefa, e o taxímetro roda até com coisas que nem são trabalho. Um fluxo que verifica um feed a cada cinco minutos dá 8.640 execuções por mês antes de ter feito qualquer coisa útil. Rode o mesmo fluxo no seu servidor e a conta passa a ser o servidor.

O Activepieces é um construtor de automações open source: gatilhos, passos, ramificações, algumas centenas de integrações prontas e passos de código quando as prontas não dão conta. A edição community tem licença MIT e roda bem num servidor pequeno com Docker Compose.

Qual plano

Instalamos num servidor de teste e medimos. O arquivo compose padrão sobe o app e cinco workers: cerca de 2,6–3 GB de RAM junto com Postgres e Redis. Com um worker só, cai para perto de 1,6 GB.

O que você rodaPlano
Alguns fluxos pessoais, um workerMicro-IP: 2 vCPU, 2 GB, 25 GB ($10/mês), com swap
A configuração padrão: cinco workers, fluxos da equipe, webhooksSmall-IP: 4 vCPU, 4 GB, 35 GB ($16/mês)
Muitas execuções ao mesmo tempo, passos de código pesadosMedium-IP: 6 vCPU, 6 GB, 45 GB ($20/mês)

Escolha um plano com IPv4 próprio. Webhooks são o principal motivo para hospedar isso você mesmo, e os serviços que os chamam precisam alcançar as portas 80 e 443; nos planos NAT só a porta SSH é acessível de fora. As localizações são Alemanha e Finlândia; a disponibilidade aparece na hora do pedido. Dá para pagar em cripto, sem KYC.

Instalação

Primeiro aponte um domínio, por exemplo flows.example.com, para o servidor. Depois, como root no Ubuntu 24.04 ou Debian 12:

curl -fsSL https://get.docker.com | sh
git clone --depth 1 https://github.com/activepieces/activepieces.git
cd activepieces
sh tools/deploy.sh

O deploy.sh copia .env.example para .env e preenche segredos aleatórios. Antes da primeira inicialização, mude duas linhas no .env e uma no arquivo compose:

sed -i 's|^AP_FRONTEND_URL=.*|AP_FRONTEND_URL=https://flows.example.com|; s|^AP_TELEMETRY_ENABLED=.*|AP_TELEMETRY_ENABLED=false|' .env
sed -i "s|- '8080:80'|- '127.0.0.1:8080:80'|" docker-compose.yml

A que importa é a primeira linha. AP_FRONTEND_URL não serve só para os links da interface: os workers se conectam ao app por ela. Deixe em http://localhost:8080 e cada contêiner worker procura o app dentro de si mesmo, não encontra, e seus fluxos nunca são publicados. Foi exatamente o que aconteceu com a gente: «Socket.IO connection error» nos logs do worker, uma publicação travada e webhooks respondendo 404. Com o domínio real, o mesmo fluxo publicou e o webhook rodou.

O sed no docker-compose.yml mantém a porta 8080 no localhost. Portas publicadas pelo Docker passam por cima do ufw; sem isso, o app ficaria aberto numa porta crua ao lado do seu HTTPS.

No Micro-IP, reduza também para um worker:

sed -i 's/replicas: 5/replicas: 1/' docker-compose.yml

Agora o HTTPS e a inicialização:

apt install -y caddy
cat > /etc/caddy/Caddyfile <<'EOF'
flows.example.com {
    reverse_proxy 127.0.0.1:8080
}
EOF
systemctl reload caddy
ufw allow 22/tcp && ufw allow 80/tcp && ufw allow 443/tcp && ufw enable
docker compose -p activepieces up -d

Espere meio minuto, abra https://flows.example.com e crie sua conta na hora. Quem se cadastra primeiro é dono da plataforma; depois disso, o cadastro é só por convite.

Confira se os webhooks funcionam

Crie um fluxo com o gatilho Webhook (Catch Webhook), adicione qualquer passo e publique. O painel do gatilho mostra a URL. Dispare um evento de teste nela:

curl -X POST https://flows.example.com/api/v1/webhooks/YOUR_FLOW_ID \
  -H 'content-type: application/json' \
  -d '{"event":"payment.paid","amount":16}'

Você deve receber um 200, e a execução aparece em Runs como bem-sucedida. Se vier 404, volte e confira AP_FRONTEND_URL.

No dia a dia

  • Atualizações. O arquivo compose fixa uma versão exata (0.92.2 no momento em que escrevemos). Troque a tag no docker-compose.yml e depois rode docker compose -p activepieces pull && docker compose -p activepieces up -d. Dê uma olhada nas notas de versão antes; ferramentas de automação adoram renomear coisas.
  • Backups. Fluxos, conexões e histórico de execuções ficam no volume do Postgres. Faça dumps agendados e guarde a cópia fora do servidor: as conexões guardam seus tokens de API de outros serviços.
  • Passos de código não ficam em sandbox nessa configuração (AP_EXECUTION_MODE=UNSANDBOXED). O servidor é seu e os fluxos também, então é aceitável. Deixa de ser no momento em que você permite que pessoas em quem não confia montem fluxos.

Se você já conhece o n8n, a ideia é a mesma: veja VPS para n8n. Escolha o editor em que você pensa com mais facilidade; os dois vão bem nos mesmos planos.

Relacionados

Pronto para implantar? Pague com cripto, sem KYC — online em cerca de um minuto.

Implantar agora →

FAQ

Quanta RAM o Activepieces precisa?

O docker-compose.yml padrão sobe o app e cinco workers; no nosso servidor de teste isso deu cerca de 2,6–3 GB com Postgres e Redis. Com um worker, foram uns 1,6 GB. O Small-IP (4 GB) roda a configuração padrão com folga; o Micro-IP (2 GB) só funciona com um worker e um arquivo de swap.

Meu fluxo não publica e o webhook responde 404. O que há de errado?

Verifique AP_FRONTEND_URL. Os workers chegam ao app por esse endereço e, se ele ficou em http://localhost:8080, «localhost» dentro do contêiner do worker é o próprio worker. Eles não conseguem conectar, a publicação trava e os webhooks retornam 404. Coloque o seu domínio real com https:// antes da primeira inicialização.

Preciso de um IP dedicado?

Sim, se você usa webhooks, e quase todo mundo usa. Os serviços que chamam seus fluxos precisam alcançar as portas 80 e 443 do seu domínio, e um plano NAT só aceita de fora a sua porta SSH.

Qualquer pessoa pode se cadastrar na minha instância?

Só a primeiríssima. No nosso teste, o primeiro cadastro passou e o segundo recebeu «User is not invited to the platform»: depois da primeira conta, o cadastro é só por convite. Então crie sua conta assim que o site subir, antes que outra pessoa chegue à página.

Os passos de código são isolados?

Não por padrão: a configuração do compose roda os passos de código com AP_EXECUTION_MODE=UNSANDBOXED, dentro do worker. Tudo bem enquanto só você e pessoas de confiança montam fluxos. Não dê acesso ao editor a desconhecidos nessa instalação.

Comentários

Nenhum comentário ainda. Seja o primeiro.

Deixe um comentário

Os comentários são moderados antes de aparecerem.