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 Kubernetes (k3s)
k3s is a lightweight Kubernetes distribution that’s easy to install and suitable for single-server deployments: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: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
Get the installer by joining the beta.
Run the installation
Run the installer with your desired version and storage class:The installer will:
- Check prerequisites (kubectl, helm, yq, openssl, cluster access)
- Generate secure passwords for all services
- Save the credentials to
~/.config/cp-suite/values/ - Deploy the full stack (PostgreSQL, Temporal, Keycloak, Control Panel services)
- Prompt for the backend API URL. Use the default (
http://cp-cp-deployments-api) for in-cluster access, or specify an external URL (e.g.,http://<SERVER-PUBLIC-IP>:8081) if accessing from outside the cluster.
Verify the installation
Check that all pods are running:All pods should show
Running or Completed status:Expose the web interface
Expose the Control Panel for external access. If you specified an external backend URL during installation, expose both the UI and the deployments API:For testing, use port forwarding:
Access the Control Panel
Open your browser and navigate to:
- LoadBalancer:
http://<EXTERNAL-IP> - Port forward:
http://<SERVER-IP>:8080
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: