Skip to main content
This guide walks you through a complete installation of Chainstack Self-Hosted on a dedicated server, from a fresh Ubuntu installation to a running Control Panel.

Overview

By the end of this guide, you will have:
  • A Kubernetes cluster running on your server
  • The Chainstack Self-Hosted Control Panel deployed and accessible
  • The ability to deploy blockchain nodes through the web interface

Prerequisites

Before starting, ensure you have:
  • A dedicated server or virtual machine meeting the system requirements
  • Root or sudo access to the server
  • A stable internet connection

End-to-end example

This example uses a dedicated server from Contabo running Ubuntu 22.04, but the steps apply to any compatible server.
1

Install required tools

Connect to your server via SSH and install the required dependencies. For detailed instructions, see Environment setup.
2

Install Kubernetes (k3s)

k3s is a lightweight Kubernetes distribution that’s easy to install and suitable for single-server deployments. For detailed instructions, see Environment setup.
You should see output indicating the cluster is running and your node is in Ready state.
3

Configure storage (optional but recommended)

If you have multiple disks available for blockchain node data, set up LVM and TopoLVM for dynamic storage provisioning. For detailed instructions, see Environment setup.
Device paths vary by provider. The paths /dev/sdb, /dev/sdc, /dev/sdd are examples from Contabo. On DigitalOcean, volumes appear under /dev/disk/by-id/. On AWS, they may be /dev/nvme1n1, /dev/nvme2n1, etc. Always verify your actual device paths with lsblk before creating physical volumes.
If using TopoLVM, set it as the default storage class:
If you’re using the default k3s local-path storage class (single disk), you can skip this step.
4

Get the installer

Download the installer for your operating system.
5

Run the installation

Run the installer with your storage class and your server’s public IP. Replace <SERVER-IP> with the actual IP. This example uses topolvm-provisioner — the storage class set up in the previous step.
The --backend-url is the URL the browser will use to reach the deployments API. We expose the deployments API on port 8081 in the next steps. By default, the installer uses the latest version — to pin one, add -v vX.Y.Z (see Release notes for available versions).
The installer will:
  1. Check prerequisites (kubectl, helm, yq, openssl, cluster access)
  2. Generate secure passwords for all services
  3. Save the credentials to ~/.config/cp-suite/values/
  4. Prompt for the workload namespace where blockchain node pods will run (default: control-panel-deployments).
  5. Prompt to configure the monitoring stack — install fresh, reuse an existing VictoriaMetrics operator, or skip.
  6. Show a summary and ask you to confirm before deploying.
The installation typically takes 5–10 minutes. You’ll see output similar to:
6

Verify the installation

The installer shows a live progress table during deployment. Once complete, you should see:
You can also check the status at any time:
Look for the healthy status at the bottom of the output:
7

Expose the web interface and deployments API

Browser access requires exposing both the UI and the deployments API. The Ingress below puts the UI and Grafana on port 80; the deployments API is exposed separately on port 8081 to match the --backend-url you set during installation.Apply the Ingress for the UI and Grafana. The example uses Traefik, which k3s ships with by default:
Expose the deployments API on port 8081:
For testing without an ingress controller, use port forwarding for everything:
The kubectl port-forward process must keep running for the deployments API to remain reachable. For production deployments, expose cp-cp-deployments-api via a LoadBalancer or NodePort instead — see Expose the UI and deployments API.
8

Access the Control Panel

Open your browser and navigate to:
  • Ingress: http://<SERVER-IP> — Control Panel, http://<SERVER-IP>/grafana — Grafana
  • Port forward: http://<SERVER-IP>:8080 — Control Panel, http://<SERVER-IP>:3000 — Grafana
You should see the Chainstack Self-Hosted login page.
9

Find your login credentials

The installer displays the username and a command to retrieve the password at the end of the installation:
Run the yq command from the output to get your password:

Next steps

Congratulations! You now have Chainstack Self-Hosted running. Continue with:
  1. First login — First login and initial configuration
  2. Deploying nodes — Deploy your first blockchain node
  3. Troubleshooting — If you encounter any issues

Useful kubectl commands

Set the default namespace to avoid typing -n control-panel every time:
Common commands for managing your installation:
Last modified on May 4, 2026