Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/routes/docs/advanced/self-hosting/+layout.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@
{
label: 'Coolify',
href: '/docs/advanced/self-hosting/platforms/coolify'
},
{
label: 'Kubernetes',
href: '/docs/advanced/self-hosting/platforms/kubernetes'
}
]
},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
---
layout: article
title: Kubernetes deployment
description: Deploy Appwrite on Kubernetes using the HelmForge community Helm chart.
---

Deploy Appwrite on Kubernetes using a community-maintained [Helm chart](https://artifacthub.io/packages/helm/helmforge/appwrite). This chart uses the official `appwrite/appwrite` container image — no custom or repackaged containers.

{% info title="Community resource" %}
This Helm chart is maintained by [HelmForge](https://helmforge.dev), not by the Appwrite team. For issues related to the chart, open an issue on the [chart repository](https://github.com/helmforgedev/charts).
{% /info %}

# Prerequisites {% #prerequisites %}

Before starting, ensure you have:

- A running Kubernetes cluster (v1.26+)
- [Helm](https://helm.sh/docs/intro/install/) v3 installed
- `kubectl` configured to access your cluster

# Installation {% #installation %}

{% section #add-repo step=1 title="Add the Helm repository" %}

```bash
helm repo add helmforge https://repo.helmforge.dev
helm repo update
```

{% /section %}

{% section #install-chart step=2 title="Install Appwrite" %}

Using the Helm repository:

```bash
helm install appwrite helmforge/appwrite
```

Or directly from the OCI registry (skips step 1):

```bash
helm install appwrite oci://ghcr.io/helmforgedev/helm/appwrite
```

This installs Appwrite with bundled MariaDB and Redis subcharts. All core services are deployed as separate pods, including the API, Console, Realtime, background workers, and schedulers.

{% /section %}

{% section #verify step=3 title="Verify the deployment" %}

Check that all pods are running:

```bash
kubectl get pods -l app.kubernetes.io/instance=appwrite
```

Once all pods show `Running` status, access the Appwrite Console through the configured ingress or by port-forwarding:

```bash
kubectl port-forward svc/appwrite-appwrite-console 3000:80
```

Navigate to `http://localhost:3000` to complete the initial setup wizard.

{% /section %}

# Configuration {% #configuration %}

Create a `values.yaml` file to customize the deployment:

```yaml
domain: appwrite.example.com

ingress:
enabled: true
ingressClassName: nginx
```

Install with your custom values:

```bash
helm upgrade --install appwrite helmforge/appwrite -f values.yaml
```

{% info title="Secrets management" %}
Avoid storing sensitive values like SMTP passwords directly in `values.yaml`. Instead, use `helm install --set` sourced from your CI/CD secret store, or use a Kubernetes secrets management tool.
{% /info %}

# Architecture {% #architecture %}

The chart deploys Appwrite as multiple Kubernetes resources:

- **API, Console, Realtime** — separate Deployments with path-based ingress routing
- **12 background workers** and **3 schedulers** — configurable resource limits
- **MariaDB and Redis** — bundled as subcharts, or connect to external instances
- **Persistent volumes** — for uploads, cache, certificates, functions, builds, and sites

# External databases {% #external-databases %}

To use external MariaDB and Redis instances instead of the bundled subcharts:

```yaml
mariadb:
enabled: false

redis:
enabled: false

externalMariadb:
host: your-mariadb-host
port: 3306
database: appwrite
username: appwrite
password: your-password

externalRedis:
host: your-redis-host
port: 6379
```

# Next steps {% #next-steps %}

After successful deployment:

- [Configure services](/docs/advanced/self-hosting/configuration/environment-variables) - Set up environment variables and services
- [Production optimization](/docs/advanced/self-hosting/production) - Prepare for production workloads
- [Chart documentation](https://helmforge.dev/docs/charts/appwrite) - Full values reference and architecture details