---
title: 'Helm'
description: 'Deploy Activepieces on Kubernetes using Helm'
---

This guide walks you through deploying Activepieces on Kubernetes using the official Helm chart.

## Prerequisites

- Kubernetes cluster (v1.19+)
- Helm 3.x installed
- kubectl configured to access your cluster

## Using External PostgreSQL and Redis

The Helm chart supports using external PostgreSQL and Redis services instead of deploying the Bitnami subcharts.

### Using External PostgreSQL

To use an external PostgreSQL instance:

```yaml
postgresql:
  enabled: false  # Disable Bitnami PostgreSQL subchart
  host: "your-postgres-host.example.com"
  port: 5432
  useSSL: true  # Enable SSL if required
  auth:
    database: "activepieces"
    username: "postgres"
    password: "your-password"
    # Or use external secret reference:
    # externalSecret:
    #   name: "postgresql-credentials"
    #   key: "password"
```

Alternatively, you can use a connection URL:

```yaml
postgresql:
  enabled: false
  url: "postgresql://user:password@host:5432/database?sslmode=require"
```

### Using External Redis

To use an external Redis instance:

```yaml
redis:
  enabled: false  # Disable Bitnami Redis subchart
  host: "your-redis-host.example.com"
  port: 6379
  useSSL: false  # Enable SSL if required
  auth:
    enabled: true
    password: "your-password"
    # Or use external secret reference:
    # externalSecret:
    #   name: "redis-credentials"
    #   key: "password"
```

Alternatively, you can use a connection URL:

```yaml
redis:
  enabled: false
  url: "redis://:password@host:6379/0"
```

### External Secret References

For better security, you can reference passwords from existing Kubernetes secrets (useful with External Secrets Operator or Sealed Secrets):

```yaml
postgresql:
  enabled: false
  host: "your-postgres-host.example.com"
  auth:
    externalSecret:
      name: "postgresql-credentials"
      key: "password"

redis:
  enabled: false
  host: "your-redis-host.example.com"
  auth:
    enabled: true
    externalSecret:
      name: "redis-credentials"
      key: "password"
```

## Quick Start

### 1. Clone the Repository

```bash
git clone https://github.com/activepieces/activepieces.git
cd activepieces
```

### 2. Install Dependencies

```bash
helm dependency update
```

### 3. Create a Values File

Create a `my-values.yaml` file with your configuration. You can use the [example values file](https://github.com/activepieces/activepieces/blob/main/deploy/activepieces-helm/values.yaml) as a reference.
The Helm chart has sensible defaults for required values while leaving the optional ones empty, but you should customize these core values for production


### 4. Install Activepieces

```bash
helm install activepieces deploy/activepieces-helm -f my-values.yaml
```

### 5. Verify Installation

```bash
# Check deployment status
kubectl get pods
kubectl get services

```

## Production Checklist

- [ ] Set `frontendUrl` to your actual domain
- [ ] Set strong passwords for PostgreSQL and Redis (or keep auto-generated)
- [ ] Configure proper ingress with TLS
- [ ] Set appropriate resource limits
- [ ] Configure persistent storage
- [ ] Choose appropriate [execution mode](/install/architecture/sandboxing) for your security requirements
- [ ] Review [environment variables](/install/configuration/environment-variables) for advanced configuration
- [ ] Consider using a [separate workers](/install/guides/separate-workers) setup for better availability and security

## Upgrading

```bash
# Update dependencies
helm dependency update

# Upgrade release
helm upgrade activepieces deploy/activepieces-helm -f my-values.yaml

# Check upgrade status
kubectl rollout status deployment/activepieces
```

## Troubleshooting

### Common Issues

1. **Pod won't start**: Check logs with `kubectl logs deployment/activepieces`
2. **Database connection**: Verify PostgreSQL credentials and connectivity
3. **Frontend URL**: Ensure `frontendUrl` is accessible from external sources
4. **Webhooks not working**: Check ingress configuration and DNS resolution

### Useful Commands

```bash
# View logs
kubectl logs deployment/activepieces -f

# Port forward for testing
kubectl port-forward svc/activepieces 4200:80 --namespace default

# Get all resources
kubectl get all --namespace default
```

## Editions

Activepieces supports three editions:

- **`ce` (Community Edition)**: Open-source version with all core features (default)
- **`ee` (Enterprise Edition)**: Self-hosted edition with advanced features like SSO, RBAC, and audit logs
- **`cloud`**: For Activepieces Cloud deployments

Set the edition in your values file:

```yaml
activepieces:
  edition: "ce"  # or "ee" for Enterprise Edition
```

For Enterprise Edition features and licensing, visit [activepieces.com](https://www.activepieces.com/docs/admin-console/overview).

## Environment Variables

For a complete list of configuration options, see the [Environment Variables](/install/configuration/environment-variables) documentation. Most environment variables can be configured through the Helm values file under the `activepieces` section.

## Execution Modes

Understanding execution modes is crucial for security and performance. See the [Sandboxing](/install/architecture/sandboxing) guide to choose the right mode for your deployment.

## Uninstalling

```bash
helm uninstall activepieces

# Clean up persistent volumes (optional)
kubectl delete pvc -l app.kubernetes.io/instance=activepieces
```
