Installation methods
Chainstack Self-Hosted supports two installation modes:| Mode | Description | Use case |
|---|---|---|
| Basic | Auto-generates all passwords and deploys with default settings | Quick setup, testing, single-server deployments |
| Advanced | Generates a customizable values template | Custom deployments |
Prerequisites
Before installation, make sure you have a running Kubernetes cluster with kubectl, Helm, yq, and openssl installed. See Environment setup for instructions and a verification checklist.Basic installation
Basic installation automatically generates secure passwords and deploys the complete stack.Run the installer
Find your storage class name:Common storage classes:To get the installer, join our beta program.
local-path— default k3s storage class (single-disk setups)topolvm-provisioner— TopoLVM (multi-disk setups)- Cloud providers use their own defaults (
gp2/gp3on AWS,standardon GCP,managed-premiumon Azure)
Specify the URL for the backend
The installer will ask for the backend API URL. The Control Panel UI uses this URL to reach the deployments API.
- Single server, accessing the UI from a browser — enter your server’s public IP with port 8081:
http://<SERVER-PUBLIC-IP>:8081. You will need to expose the deployments API on this port later (see Post-installation). - Default — press Enter to keep
http://cp-cp-deployments-api. This uses in-cluster DNS and only works if the UI is also accessed from inside the cluster.
Credentials storage
Generated credentials are saved to:Advanced installation
Advanced installation generates a values template with pre-filled passwords and RSA keys. Use this mode when you need to customize the deployment—for example, to connect an external PostgreSQL database or Temporal server.Generate the values template
cp-values.yaml file in your current directory with auto-generated passwords and keys.To specify a different output file, use the -o flag:Edit the values file
Open the generated file and customize it for your environment. The default file name is Common customizations:
cp-values.yaml, or the name you specified with -o:- External PostgreSQL — provide your database host, port, credentials, and disable the bundled PostgreSQL-HA
- External Temporal — provide your Temporal server address and disable the bundled Temporal
- Storage class — set a specific storage class for persistent volumes
- Resource limits — adjust CPU and memory for Control Panel components
Install with the custom values
Run the installer with your edited values file (replace the file name if you used
-o):Installation options reference
| Option | Description | Default |
|---|---|---|
-v, --version | Chart version (required, format: vX.Y.Z) | — |
-n, --namespace | Kubernetes namespace | control-panel |
-r, --release | Helm release name | cp |
-f, --values | Path to custom values file | — |
-s, --storage-class | Storage class for persistent volumes | Cluster default |
--set key=value | Set Helm values (repeatable) | — |
--advanced | Generate values template instead of installing | false |
-o, --output | Output file for --advanced mode | cp-values.yaml |
--backend-url | CP UI backend API URL | http://<release>-cp-deployments-api |
-y, --yes | Auto-approve prompts (non-interactive) | false |
--dry-run | Print Helm command without executing | false |
--timeout | Installation timeout | 15m0s |
--poll-interval | Status polling interval for progress display | 3s |
--config-dir | Directory for credentials storage | ~/.config/cp-suite |
--kubeconfig | Path to kubeconfig file | ~/.kube/config |
--no-color | Disable colored output | false |
--clear-lines | Clear lines for progress updates (requires TTY) | true |
--verbose | Enable verbose output | false |
Post-installation
Verify deployment status
Expose the UI service
Option 1: LoadBalancer (recommended for production)
Option 2: NodePort
Option 3: Ingress
Create an Ingress resource:Option 4: Port forward (testing only)
Next steps
After installation, continue to:- First login — First login and configuration
- Deploying nodes — Deploy blockchain nodes