Self-Host Activepieces as Your Zapier Alternative
Install Activepieces with the official Docker Compose stack (Postgres + Redis), set a public HTTPS URL, back up encryption keys, and ship your first CRM→Slack flow.
What you will have live
By the end of this playbook you will have:
- Activepieces self-hosted with PostgreSQL + Redis (the production path — not the hobbyist single-container embed)
- HTTPS (or at least a stable
AP_FRONTEND_URL) so webhooks work - Secrets (
AP_ENCRYPTION_KEY,AP_JWT_SECRET, DB password) backed up offline - A first Zapier-replacement flow: CRM/form event → Slack alert (or Sheet append)
- Sign-up locked down after the first admin; workers visible in Platform Admin
Official install: Self Host Activepieces (Docker Compose). Prefer that over random blog compose files.
Prerequisites
- VPS — Activepieces asks for roughly 2 vCPU / 4 GB RAM minimum for the Compose stack.
- Docker Compose v2 (
docker compose versionmust work — Compose v1 will not). - Domain (recommended) — e.g.
flows.yourdomain.comA-record → VPS. Webhooks need a URL third parties can reach. - Ports 80/443 open if you terminate TLS on-box; or terminate at Cloudflare and proxy to host port
8080. - Accounts for the first flow: Slack workspace + HubSpot/Pipedrive/Google Sheets (whatever you are replacing in Zapier).
- Password manager for
.envsecrets.
Step 1 — DNS
Step 2 — Install with the official one-liner (recommended)
SSH to the VPS, then in the directory where you want the stack:
curl -fsSL https://get.activepieces.com | sh
Options from the docs:
-
1
Port and Directory Options
--port 8090if 8080 is taken--dir /opt/activepiecesto choose the folder -
2
Four Containers Started
The script writes config, generates secrets, and starts four containers:
app,worker,postgres,redis. -
3
Manual Install Path
Prefer not to pipe a remote script? Use the manual path in the same docs page: clone
activepieces/activepieces, runsh tools/deploy.sh, verify secrets withgrep, thendocker compose -p activepieces up -d.
Step 3 — Verify health and workers
docker compose -p activepieces ps
curl http://localhost:8080/api/v1/health
All four should be Up. Open http://SERVER:8080 (or your HTTPS URL).
- Create the first account — it becomes platform admin (no default password).
- Open Platform Admin → Operations → Workers. You must see at least one worker.
- If Workers is empty: worker cannot reach the app. Official fix — give the
workerserviceAP_FRONTEND_URL=http://appwhile the app’s publicAP_FRONTEND_URLstays your real domain (see Activepieces troubleshooting).
Step 4 — Set public URL + HTTPS
- In
.env, setAP_FRONTEND_URLtohttps://flows.yourdomain.com(no trailing path surprises). - Put a reverse proxy (Caddy, Traefik, Nginx, or Cloudflare) in front of host port
8080/AP_HOST_PORT. - Restart:
docker compose -p activepieces up -d. - Confirm webhooks: create a test Webhook trigger piece and POST to the public URL.
Step 5 — First Zapier-alternative business flow
Goal: when a new HubSpot deal (or Google Form → Sheet row) appears, post a Slack message to #revops.
-
1
Build First Business Flow
In Activepieces, Create Flow.
Trigger: HubSpot “new deal” (or Schedule + Sheet “new row” if CRM OAuth is blocked today).
Action: Slack “Send channel message” with deal name, amount, owner, link.
Connect accounts via Activepieces connections UI (OAuth) — never paste long-lived tokens into piece fields when OAuth exists.
Publish/enable the flow.
Create a test deal namedAP TESTand confirm Slack fires once. -
2
Migrate Next Zaps
That is your first migrated Zap. Next migrations: lead routing, enrichment, and approval-gated updates (add a human approval piece or route writes through n8n HITL if you already standardized there).
Step 6 — Production harden
| Control | Action |
|---|---|
| Sign-up | Disable open registration after admins exist (AP_SIGN_UP_ENABLED / platform settings — confirm current variable in Environment Variables) |
| Secrets | Vault copy of AP_ENCRYPTION_KEY, AP_JWT_SECRET, AP_POSTGRES_PASSWORD |
| Backups | pg_dump the postgres container on a schedule; store off-box; test restore |
| Workers | Default replicas may be high for a small VPS — right-size per Production Setup docs |
| Updates | Version is pinned (AP_VERSION / image tag); upgrade via official --upgrade path; read breaking changes |
| Edition | Community by default; only set AP_EDITION=ee if you have a license path and follow sandbox mode rules (SANDBOX_CODE_ONLY vs rejected UNSANDBOXED) |
| Network | Do not expose Postgres/Redis ports publicly |
| Permissions | Limit who can edit production flows; use folders/projects if your edition supports them |
Go-live checklist
- [ ] Health endpoint OK; four containers Up
- [ ] Workers page shows ≥1 worker
- [ ]
AP_FRONTEND_URLis HTTPS public URL - [ ]
.envbacked up offline (especially encryption key) - [ ] First Slack (or Sheet) flow published and tested
- [ ] Open sign-up disabled (or SSO only)
- [ ] Postgres dump job exists
- [ ] Owner documented for upgrades
Pitfalls
- Hobbyist PGLITE in production — dead end for teams; start on Compose.
- Losing
AP_ENCRYPTION_KEY— connections become permanent garbage. - Worker
AP_FRONTEND_URL=localhost— empty Workers page / socket errors. - Compose v1 — install fails; use Compose v2.
- ngrok forever — fine for a demo; not a production webhook URL.
- Migrating every Zap day one — move the top 3 revenue-critical Zaps first; keep Zapier as fallback for a week.
FAQ
Activepieces vs n8n?
Both self-host well. Activepieces leans piece/Zapier-shaped UX; n8n is stronger today for AI Agent + HITL tool gates. Many teams run Activepieces for classic automations and n8n for agentic ops.
Can I keep using Zapier MCP for Claude?
Yes — different layer. Activepieces replaces scheduled/event Zaps; Zapier MCP is chat-time tool calls.
Next step
Continue Your Stack
Add protocol-native CRM tools with Business MCP Starter Pack, or agentic ops with n8n self-host.
Need a migration plan off Zapier? Solutions · Architecture · Contact.
Ready to Implement This Playbook?
Our team can implement these strategies for you, tailored to your specific business needs.
Schedule Consultation