Managed Hosting
The Control Panel integrates with cloud hosting providers to let you provision, manage, and track servers directly from the dashboard. Currently supported providers are Hetzner Cloud and DigitalOcean.
Cluster Autoscaling (Team / Enterprise) 🔒
Phase Г.4 introduces a dedicated Add managed node wizard at Clusters → Autoscale. The wizard provisions a fresh VM via the provider API, plumbs cloud-init that runs the standard install.sh --register=... flow, and binds the new node into the tenant’s fleet without manual ssh.
- Provider tokens are stored encrypted at rest (per-tenant; never returned to the UI after creation). Configure them on step 2 of the wizard.
- Budget gate — set
autoscale.{tenant_id}.budget_centsin CP settings to cap monthly spend per tenant. New jobs that would exceed the cap are rejected with a clear error. - Auto-decommission — VMs that fail to register within 30 minutes are deleted from the provider so a transient bootstrap failure does not leak cloud spend.
- Plan gate — the wizard’s submit endpoint requires the Team plan (capped at 5 autoscaled nodes) or Enterprise (unlimited). Free / Pro tiers can browse the catalogue but cannot submit jobs.
The wizard’s 8 steps: provider → token → region → plan → hostname → confirm → run (live SSE timeline) → done. The page also shows existing managed bindings with a one-click Decommission action.
Supported Providers
| Provider | API Token Variable | Capabilities |
|---|---|---|
| Hetzner Cloud | CC_HETZNER_TOKEN | Server provisioning, region selection, size selection, cost tracking |
| DigitalOcean | CC_DO_TOKEN | Server provisioning (Droplets), region selection, size selection, cost tracking |
Connecting a Provider
- Obtain an API token from your provider’s dashboard
- Set the corresponding environment variable on your Control Panel instance:
CC_HETZNER_TOKENfor Hetzner CloudCC_DO_TOKENfor DigitalOcean
- Restart the Control Panel
- The provider appears on the Hosting page
API tokens grant full access to your provider account. Use tokens with the minimum required permissions and store them securely. Never commit tokens to version control.
Provisioning a Server
- Navigate to Hosting from the sidebar
- Click New Server
- Select the hosting provider (Hetzner Cloud or DigitalOcean)
- Configure the server:
| Setting | Description |
|---|---|
| Name | A display name for the server |
| Region | The data center region (e.g., fsn1, nbg1 for Hetzner; nyc1, sfo3 for DigitalOcean) |
| Size | Server type / plan (e.g., cx11, cpx21 for Hetzner; s-1vcpu-1gb for DigitalOcean) |
| Image | Operating system image (Ubuntu, Debian, etc.) |
- Click Provision
The Control Panel calls the provider API to create the server. Once the server is running, Cloud OS can be automatically installed and the instance registered with the Control Panel.
Provisioning Flow
┌───────────────┐ API Call ┌──────────────┐
│ Control Panel │──────────────►│ Provider │
│ │ │ (Hetzner/DO) │
│ │◄──────────────│ │
│ │ Server Info │ │
└───────┬───────┘ └──────────────┘
│
│ Install Cloud OS
▼
┌───────────────┐
│ New Server │
│ (Cloud OS │
│ Instance) │
└───────────────┘Region Selection
Each provider offers multiple data center regions. The provisioning form shows available regions with their location names:
Hetzner Cloud Regions
| Region Code | Location |
|---|---|
| fsn1 | Falkenstein, Germany |
| nbg1 | Nuremberg, Germany |
| hel1 | Helsinki, Finland |
| ash | Ashburn, USA |
| hil | Hillsboro, USA |
DigitalOcean Regions
| Region Code | Location |
|---|---|
| nyc1, nyc3 | New York, USA |
| sfo3 | San Francisco, USA |
| ams3 | Amsterdam, Netherlands |
| sgp1 | Singapore |
| lon1 | London, UK |
| fra1 | Frankfurt, Germany |
| blr1 | Bangalore, India |
| tor1 | Toronto, Canada |
| syd1 | Sydney, Australia |
Size Selection
Server sizes determine the CPU, RAM, and disk resources. The provisioning form lists available sizes with their specifications and monthly cost.
Pricing shown during provisioning is sourced directly from the provider API and reflects current rates. The Control Panel does not add any markup.
Cost Tracking
The Control Panel tracks costs for all provisioned servers:
- Per-server cost — monthly and hourly cost based on the server size
- Total hosting cost — aggregated across all provisioned servers
- Cost by provider — breakdown between Hetzner Cloud and DigitalOcean
- Cost by region — see where your spending is concentrated
Cost data is available on the Hosting page and can be included in MSP client billing reports.
Server Lifecycle Management
Once provisioned, servers can be managed from the Hosting page:
Power Actions
- Power On — start a stopped server
- Power Off — gracefully shut down a server
- Reboot — restart a running server
Resize
Change the server size (upgrade or downgrade) without re-provisioning. The server may need a restart depending on the provider.
Delete
Permanently delete a provisioned server. This removes the server from the hosting provider and deregisters the Cloud OS instance from the fleet.
Deleting a server is irreversible. All data on the server will be lost. Ensure you have backups before deleting.
Provisioned Server Integration
Servers provisioned through the Hosting page are automatically:
- Registered as Cloud OS instances in the fleet
- Visible on the Fleet Dashboard
- Subject to fleet policies and governance rules
- Included in cost tracking and MSP billing
This provides a seamless workflow from server provisioning to fleet management.
Next Steps
- Fleet Management — manage your provisioned servers alongside other instances
- MSP and Multi-Tenancy — assign provisioned servers to MSP clients
- Billing and Licensing — understand licensing for provisioned instances