This guide shows you how to deploy a fully working Formance stack for testing using the unified formance Helm chart with the CE demo profile.
What Gets Deployed#
The CE demo profile layers on top of ce-minimal.yaml and adds:
- Bundled PostgreSQL — single-node Bitnami database for all modules
- A
demo-devstack — pre-configured viaregions.stackswith Gateway and Ledger modules (versionv3.1) - Settings — PostgreSQL URI, resource requests, and replica count configured automatically via
regions.settings - Each module runs with 2 replicas and minimal resources (50m CPU, 500Mi memory)
Default host: formance.localhost
Install the Demo#
The ce-demo.yaml profile currently injects an unknown field into the Stack resource that fails CRD validation. Until the fix lands, install with only ce-minimal.yaml and apply the demo stack manually — that's what the steps below do.
Install the chart with the minimal profile:
helm upgrade --install formance oci://ghcr.io/formancehq/helm/formance \
--version 1.10.0 \
--namespace formance-system \
--create-namespace \
-f https://raw.githubusercontent.com/formancehq/helm/formance-1.10.0/charts/formance/profiles/ce-minimal.yamlApply the demo Stack and modules:
# demo.yaml
apiVersion: formance.com/v1beta1
kind: Stack
metadata:
name: demo-dev
spec:
debug: true
versionsFromFile: v3.1
---
apiVersion: formance.com/v1beta1
kind: Gateway
metadata:
name: demo-dev
spec:
stack: demo-dev
---
apiVersion: formance.com/v1beta1
kind: Ledger
metadata:
name: demo-dev
spec:
stack: demo-devkubectl apply -f demo.yamlThe demo uses a bundled PostgreSQL without persistent storage — not for production.
Verify the Installation#
Check that the operator and PostgreSQL pods are running:
kubectl get pods -n formance-systemCheck that the stack has been created:
kubectl get stacksYou should see a demo-dev stack. Wait for all stack modules to become ready:
kubectl get pods --all-namespaces -l formance.com/stackAccess the Demo#
Port-forward the Gateway to access the stack API locally:
kubectl port-forward -n demo-dev svc/gateway 8080:8080Verify the stack is responding:
curl http://localhost:8080/versionsWhat's Inside the CE Demo Profile#
The ce-demo.yaml profile configures the following Helm values:
global:
serviceHost: "formance.localhost"
regions:
settings:
postgres-uri:
key: "postgres.*.uri"
value: "postgresql://formance:formance@postgresql.formance-system.svc:5432?disableSSLMode=true"
resource-requests:
key: "deployments.*.containers.*.resource-requirements.requests"
value: "cpu=50m,memory=500Mi"
replicas:
key: "deployments.*.replicas"
value: "2"
stacks:
demo-dev:
debug: true
versionsFromFile: "v3.1"
modules:
gateway: {}
ledger: {}This creates:
- A
StackCRD nameddemo-devwith thev3.1module versions SettingsCRDs for PostgreSQL URI, resource requests, and replica count
Create Your Own Demo Stack#
Instead of using the profile, define a custom demo stack directly in your values:
# custom-demo.yaml
regions:
settings:
postgres-uri:
key: "postgres.*.uri"
value: "postgresql://formance:formance@postgresql.formance-system.svc:5432?disableSSLMode=true"
stacks:
my-test-stack:
versionsFromFile: "v3.1"
modules:
gateway: {}
ledger: {}
payments: {}helm upgrade --install formance oci://ghcr.io/formancehq/helm/formance \
--version 1.10.0 \
--namespace formance-system \
--create-namespace \
-f custom-demo.yamlClean Up#
To remove the demo deployment:
helm uninstall formance -n formance-system