Skip to main content
One line writes the config, generates your secrets, and starts everything. Run it in the folder where you want Activepieces to live:
Or hand it to your AI assistant:

Install Activepieces with an AI assistant

Open in Cursor
Requirements
  • Docker Compose v2. The old docker-compose will not work.
  • At least 2 vCPU and 4 GB RAM.
  • On Windows, WSL2. Run the command inside it.
Use --port <port> if 8080 is taken, and --dir <path> to install somewhere other than ./activepieces. Want to read it before running it? curl -fsSL https://get.activepieces.com prints the script.

Alternative: run Docker Compose yourself

Use this if you would rather not pipe a remote script into a shell, or your change process needs the compose file in front of it before anything starts. You get the same four containers, set up by hand.
1. Get the compose file
2. Generate your secrets
This copies .env.example to .env and fills in the passwords and keys. It needs openssl. If openssl is missing it will still report success while leaving the values blank, so check before you continue:
Every one of those must have a value. If any is empty, install openssl and run sh tools/deploy.sh again.3. Set the editionAdd this to .env. Without it you get the Community edition, and you will not be able to activate a license key later.
.env.example ships AP_EXECUTION_MODE=UNSANDBOXED, which the server rejects at startup on ee.4. Point the worker at the appIn docker-compose.yml, give the worker service its own AP_FRONTEND_URL:
Both services share .env, where AP_FRONTEND_URL is your public URL. That address means “the app” to a browser but “myself” to the worker container, so without this override the worker cannot open its socket and the Workers page stays empty.5. Start it
Two more things worth changing before production. The image tag in docker-compose.yml is pinned to a specific release, so bump it yourself when you upgrade. And worker is set to replicas: 5, which is more than a single small machine wants; see Production Setup for sizing.

Open Activepieces

Go to http://localhost:8080, or http://<your-server-ip>:<your-port> if you installed on a remote server or changed the port. The first account you create becomes the platform administrator. There is no default username or password.
Your secrets are written to activepieces/.env. Back that file up.Without AP_ENCRYPTION_KEY, stored connections cannot be decrypted, even from a full database backup.

Check it’s working

All four containers should be Up, and the health endpoint should respond. Then sign in and open Platform Admin → Infrastructure → Workers. You should see at least one worker. If the list is empty, see Troubleshooting.

What you’ve just set up

Four containers, defined in activepieces/docker-compose.yml: Your data is not in the activepieces folder. It lives in the postgres_data Docker volume, so backing up the folder does not back up your flows.

Activate a license key (optional)

Your install runs on the free plan by default. If you have a trial or paid license key, activate it to unlock the paid features. See License key.

Make webhooks reachable (optional)

Skip this if your server already has a public URL. Webhooks and app triggers need an address that third parties can reach. On a personal machine, expose it with a tunnel such as ngrok:
Then set AP_FRONTEND_URL in .env to the ngrok URL and restart.
Copying the public URL from ngrok
ngrok is fine for testing but not suitable for production. In production, point AP_FRONTEND_URL at your real domain.

Upgrade

Back up first:
Then upgrade:
Your .env, your data, and any edits to docker-compose.yml are left alone.
Review breaking changes before upgrading.
The version is pinned in AP_VERSION inside .env. Set it yourself and re-run the upgrade to move to a specific release.

Uninstall

Stop Activepieces and keep your data:
Stop it and delete everything, including the database:

Troubleshooting

Check which Docker Compose you have:
If that errors, you are on Compose v1. The old docker-compose will not work with this setup. Install Docker Compose v2.
Your worker cannot reach the app. Check its logs:
Repeated Socket.IO connection error means AP_FRONTEND_URL on the worker points at an address that does not resolve from inside the container. localhost refers to the worker itself, not the app. It must be the app’s service name on the Docker network:
The app’s own AP_FRONTEND_URL should stay as your public URL. See Websocket Issues.
Install on another port:
On an existing install, change AP_HOST_PORT in .env and run docker compose -p activepieces up -d.Do not set AP_PORT. That is the app’s own listen port inside the container, and changing it breaks the port mapping.
Read the startup error:
A common cause is AP_EXECUTION_MODE=UNSANDBOXED with AP_EDITION=ee, which is rejected at startup. Use SANDBOX_CODE_ONLY instead. See Sandboxing Mode.

Going to production

Read Production Setup. It’s the one opinionated production shape, and every sizing choice flows from a single number.For the full list of settings, see Environment Variables.