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.Documentation Index
Fetch the complete documentation index at: https://chainstack-mintlify-flesh-empty-pages.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
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.Install required tools
Connect to your server via SSH and install the required dependencies. For detailed instructions, see Environment setup.
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.
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.If using TopoLVM, set it as the default storage class:
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 you’re using the default k3s local-path storage class (single disk), you can skip this step.
Get the installer
Download the installer for your operating system.
Run the installation
Run the installer with your storage class and your server’s public IP. Replace The installer will:
<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).- Check prerequisites (kubectl, helm, yq, openssl, cluster access)
- Generate secure passwords for all services
- Save the credentials to
~/.config/cp-suite/values/ - Prompt for the workload namespace where blockchain node pods will run (default:
control-panel-deployments). - Prompt to configure the monitoring stack — install fresh, reuse an existing VictoriaMetrics operator, or skip.
- Show a summary and ask you to confirm before deploying.
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:
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 Expose the deployments API on port 8081:For testing without an ingress controller, use port forwarding for everything:
--backend-url you set during installation.Apply the Ingress for the UI and Grafana. The example uses Traefik, which k3s ships with by default: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.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
Next steps
Congratulations! You now have Chainstack Self-Hosted running. Continue with:- First login — First login and initial configuration
- Deploying nodes — Deploy your first blockchain node
- Troubleshooting — If you encounter any issues
Useful kubectl commands
Set the default namespace to avoid typing-n control-panel every time: