Skip to main content
This guide walks through a standard installation with auto-generated passwords and default settings. For custom deployments — external databases, adjusted resource limits, or manual values — see Advanced installation.

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.

Install

1

Run the installer

Find your storage class name:
Common storage classes:
  • local-path — default k3s storage class (single-disk setups)
  • topolvm-provisioner — TopoLVM (multi-disk setups)
  • Cloud providers use their own defaults (gp2/gp3 on AWS, standard on GCP, managed-premium on Azure)
Run the installer with your storage class:
For example:
By default, the installer uses the latest version. To pin a specific version, add -v vX.Y.Z — see Release notes for available versions.
To get the installer, see Download Chainstack Self-Hosted.
2

Confirm auto-generation

When prompted, confirm that you want to auto-generate passwords:
3

Specify the URL for the backend

The installer will ask for the backend API URL. This is the URL the Control Panel UI uses to reach the deployments API. The browser must be able to resolve and reach this URL — an in-cluster hostname will not work for browser access.
  • Single server, browser access (recommended) — enter http://<SERVER-IP>:8081. You will expose the deployments API on port 8081 in Post-installation. Use port 80 (or another free port) instead of 8081 if it suits your environment, but match it during exposure.
  • In-cluster only (rare) — press Enter to keep http://cp-cp-deployments-api. This is reachable only from inside the cluster, so the UI will fail to log in from a browser outside.
You can skip this prompt by passing --backend-url http://<SERVER-IP>:8081 to cpctl install.
4

Specify the workload namespace

The installer will ask for the Kubernetes namespace where blockchain node pods will run:
Press Enter to accept the default control-panel-deployments. Change it only if you need a custom namespace layout.
5

Choose monitoring configuration

The installer will prompt you to configure the monitoring stack:
  • Option 1 — installs the full monitoring stack (Grafana, VictoriaMetrics, exporters). Use this for a clean cluster.
  • Option 2 — reuses an existing VictoriaMetrics operator already deployed on the cluster.
  • Option 3 — skips monitoring entirely.
6

Confirm and deploy

The installer will show a summary and ask you to confirm:
Confirm with y. The installer will then deploy the full stack (PostgreSQL, Temporal, Keycloak, Control Panel services).

Credentials storage

Generated credentials are saved to:
This file contains sensitive passwords and keys. Keep it secure and backed up.

Post-installation

Monitoring stack

The Control Panel includes an optional integrated observability stack (Grafana, VictoriaMetrics, and the Chainstack blockchain-node-exporter). During installation, you are prompted to install it, reuse an existing VictoriaMetrics operator, or skip it. See Monitoring for access instructions and available dashboards.

Verify deployment status

Look for the healthy status at the bottom of the output:
Useful flags:

Expose the UI and deployments API

For browser access to work, you need to expose two services to the network: the UI (cp-cp-ui) and the deployments API (cp-cp-deployments-api). The UI page is served by the first; the JavaScript in the page calls the URL you set in the backend URL step — by default, that’s http://<SERVER-IP>:8081, which routes to the deployments API.

Option 2: NodePort

Option 3: Ingress

Create an Ingress that exposes the UI on port 80. The deployments API is exposed separately on port 8081 via a LoadBalancer or port-forward (see Options 1 or 4):

Option 4: Port forward (testing only)

Next steps

  1. First login — First login and configuration
  2. Deploying nodes — Deploy your first blockchain node
  3. Advanced installation — Customize your deployment
Last modified on May 3, 2026