Skip to main content
This guide provides detailed instructions for installing Chainstack Self-Hosted, including advanced configuration options.

Installation methods

Chainstack Self-Hosted supports two installation modes:
ModeDescriptionUse case
BasicAuto-generates all passwords and deploys with default settingsQuick setup, testing, single-server deployments
AdvancedGenerates a customizable values templateCustom deployments

Prerequisites check

Before installation, verify all prerequisites are met:
# Check kubectl
kubectl version --client

# Check helm (v3+ required)
helm version

# Check yq (mikefarah/yq v4+ required)
yq --version

# Check openssl
openssl version

# Check cluster connectivity
kubectl cluster-info

Basic installation

Basic installation automatically generates secure passwords and deploys the complete stack.
1

Run the installer

# replace STORAGE_CLASS_NAME with the actual storage class from k8s
./cpctl install -v v1.0.0 -s STORAGE_CLASS_NAME
To get the installer, join our beta program.
2

Confirm auto-generation

When prompted, confirm that you want to auto-generate passwords:
No values file provided. Generate passwords automatically? [y/N]: y
3

Specify the URL for the backend

The installer will ask you to specify the URL for the backend. It will be used in the web server config as a proxy_pass. Whenever you expose the UI, this UI will forward the backend request to this URL.If not sure or in case it’s a single server k8s, specify the server’s public IP, like http://1.2.3.4.
4

Wait for deployment

The installer will:
  1. Generate all required passwords and RSA keys
  2. Save credentials to ~/.config/cp-suite/values/
  3. Deploy PostgreSQL database engine
  4. Deploy Temporal workflow engine
  5. Deploy Keycloak identity provider
  6. Deploy Chainstack Self-Hosted Control Panel services

Credentials storage

Generated credentials are saved to:
~/.config/cp-suite/values/cp-control-panel-<timestamp>.yaml
This file contains sensitive passwords and keys. Keep it secure and backed up.

Installation options reference

OptionDescriptionDefault
-v, --versionSelf-hosted Control Panel version (required)
-n, --namespaceKubernetes namespacecontrol-panel
-r, --releaseHelm release namecp
-f, --valuesCustom values file
-s, --storage-classStorage class for PostgreSQLCluster default
--set key=valueOverride specific values
--advancedGenerate values templatefalse
-o, --outputOutput file for advanced modecp-values.yaml
-y, --yesAuto-approve promptsfalse
--dry-runShow commands without executingfalse

Post-installation

Verify deployment status

./cpctl status
Expected output shows all pods in Running state:
==> Pod Status

NAME                                      READY   STATUS    AGE
cp-cp-auth-*                              1/1     Running   5m
cp-cp-deployments-api-*                   1/1     Running   5m
cp-cp-ui-*                                1/1     Running   5m
cp-cp-workflows-*                         1/1     Running   5m
cp-keycloak-0                             1/1     Running   5m
cp-pg-pgpool-*                            1/1     Running   5m
cp-pg-postgresql-0                        1/1     Running   5m
cp-temporal-*                             1/1     Running   5m

Expose the UI service

kubectl expose service cp-cp-ui --type=LoadBalancer --name=cp-ui-external -n control-panel

Option 2: NodePort

kubectl expose service cp-cp-ui --type=NodePort --name=cp-ui-nodeport -n control-panel

Option 3: Ingress

Create an Ingress resource:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cp-ui-ingress
  namespace: control-panel
spec:
  rules:
  - host: cp.yourdomain.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: cp-cp-ui
            port:
              number: 80

Option 4: Port forward (testing only)

kubectl port-forward svc/cp-cp-ui 8080:80 -n control-panel --address 0.0.0.0

Uninstallation

To completely remove Chainstack Self-Hosted:
./cpctl uninstall
This will:
  1. Remove the Helm release
  2. Delete all associated PersistentVolumeClaims
  3. Permanently delete all data
Uninstallation is destructive. All data including deployed nodes, configuration, and user data will be lost.

Next steps

After installation, continue to:
  1. First login — First login and configuration
  2. Deploying nodes — Deploy blockchain nodes
Last modified on January 28, 2026