Activepieces logo

Activepieces

AI-first, no-code workflow automation platform

Alternative to: zapier, make, n8n, ifttt


Activepieces is an open source replacement for Zapier: a visual, no-code builder for automating workflows across 280+ integrations, with AI-first capabilities and MCP (Model Context Protocol) server support for connecting LLM agents to tools. The Community Edition is fully self-hostable, with an extensible TypeScript pieces framework for building custom integrations.

Activepieces Docker Compose example

Self-host Activepieces on your own server, homelab, or VPS starting from this Docker Compose example. It runs Activepieces in Docker containers using the official ghcr.io/activepieces/activepieces:latest, ghcr.io/activepieces/activepieces:latest, pgvector/pgvector:pg16, redis:7 images, with persistent volumes and automatic restarts preconfigured. Review the environment variables and adjust them to your setup, save the file as compose.yml (or docker-compose.yml), and start the stack with docker compose up -d.

services:
  app:
    image: ghcr.io/activepieces/activepieces:latest
    restart: unless-stopped
    depends_on:
      - postgres
      - redis
    environment:
      AP_CONTAINER_TYPE: "APP"
      AP_ENGINE_EXECUTABLE_PATH: "dist/packages/engine/main.js"
      AP_ENVIRONMENT: "prod"
      # Public URL where Activepieces is served. Must match how the browser
      # reaches it, e.g. https://automate.example.com.
      AP_FRONTEND_URL: "http://localhost:8080"
      # 32-character hex string used to encrypt stored connection credentials.
      # Generate one with: openssl rand -hex 16
      AP_ENCRYPTION_KEY: "0123456789abcdef0123456789abcdef"
      # Secret used to sign authentication JWTs. Use a long random string.
      AP_JWT_SECRET: "changeme-please-generate-a-long-random-secret"
      # How flows run. UNSANDBOXED is the supported mode for the standard
      # single-container image (no extra kernel privileges required).
      AP_EXECUTION_MODE: "UNSANDBOXED"
      # Set to true to send anonymous usage telemetry to Activepieces.
      AP_TELEMETRY_ENABLED: "false"
      AP_POSTGRES_DATABASE: "activepieces"
      AP_POSTGRES_HOST: "postgres"
      AP_POSTGRES_PORT: "5432"
      AP_POSTGRES_USERNAME: "postgres"
      AP_POSTGRES_PASSWORD: "activepieces"
      AP_REDIS_HOST: "redis"
      AP_REDIS_PORT: "6379"

  worker:
    image: ghcr.io/activepieces/activepieces:latest
    restart: unless-stopped
    depends_on:
      - app
    environment:
      AP_CONTAINER_TYPE: "WORKER"
      AP_ENGINE_EXECUTABLE_PATH: "dist/packages/engine/main.js"
      AP_ENVIRONMENT: "prod"
      # Public URL where Activepieces is served (must match the app service).
      AP_FRONTEND_URL: "http://localhost:8080"
      # 32-character hex encryption key (must match the app service).
      AP_ENCRYPTION_KEY: "0123456789abcdef0123456789abcdef"
      # JWT signing secret (must match the app service).
      AP_JWT_SECRET: "changeme-please-generate-a-long-random-secret"
      AP_EXECUTION_MODE: "UNSANDBOXED"
      AP_TELEMETRY_ENABLED: "false"
      AP_POSTGRES_DATABASE: "activepieces"
      AP_POSTGRES_HOST: "postgres"
      AP_POSTGRES_PORT: "5432"
      AP_POSTGRES_USERNAME: "postgres"
      AP_POSTGRES_PASSWORD: "activepieces"
      AP_REDIS_HOST: "redis"
      AP_REDIS_PORT: "6379"

  postgres:
    image: pgvector/pgvector:pg16
    restart: unless-stopped
    environment:
      POSTGRES_DB: "activepieces"
      POSTGRES_USER: "postgres"
      POSTGRES_PASSWORD: "activepieces"
    volumes:
      - postgres_data:/var/lib/postgresql/data

  redis:
    image: redis:7
    restart: unless-stopped
    volumes:
      - redis_data:/data

volumes:
  postgres_data:
  redis_data:

Values set to changeme are required — replace them with your own values before starting Activepieces.

Prefer a managed setup? WinterFlow installs, configures, and updates Activepieces for you using this same Docker Compose configuration.