Skip to main content
Suspend a machine to stop paying for compute while keeping your data safe. The machine’s disk is snapshotted before the server is deleted. Resume creates a new server from the snapshot — your machine comes back with the same hostname, Kubernetes identity, and local data.

Cost comparison

State40 GB disk cost (Hetzner)Notes
Running (cx23)~€4.11/monthFull compute + storage
Suspended (snapshot)~€0.40/monthStorage only — 90% savings
Deleted€0/monthData permanently lost
Suspend is the middle ground between running (expensive) and deleting (permanent).

How to suspend

  1. Go to your cluster’s Machines tab
  2. Click the menu on the machine you want to suspend
  3. Choose Suspend machine
  4. Confirm in the dialog
CNAP will:
  1. Gracefully shut down the server
  2. Create a snapshot of the full disk
  3. Delete the cloud server (billing stops)
  4. Show the machine in the Suspended Machines section
The machine shows a “Suspending…” status while the workflow runs (typically 1-3 minutes depending on disk size).

How to resume

  1. Find the machine in the Suspended Machines section
  2. Click Resume
CNAP will:
  1. Create a new server from the snapshot
  2. Wait for it to boot
  3. Delete the snapshot (data is now on the new server)
  4. The machine rejoins your cluster automatically
Resume typically takes 1-2 minutes. The machine comes back with the same hostname and Kubernetes node identity.

What’s preserved

Data typePreserved?How
Local storage (local-path-provisioner)YesDisk data is in the snapshot
LINSTOR/DRBD volumesYesDRBD replicas on other nodes stay intact, auto-resync on return
Kubernetes node identityYesSame hostname from snapshot, kubelet reconnects
PersistentVolume bindingsYesNode affinity uses hostname label — matches on resume
Running podsNoPods are evicted on suspend, rescheduled on resume
Pods running on the machine are terminated during suspend. Stateless workloads reschedule to other nodes. Stateful workloads using local PVs wait until the machine is resumed.

Auto-suspend on subscription downgrade

When your Pro subscription ends, CNAP automatically suspends all platform-managed machines instead of deleting them:
  1. Subscription ends → machines are suspended
  2. Snapshots kept for 90 days
  3. Re-subscribe → dashboard shows suspended machines with Resume button
  4. After 90 days → snapshots permanently deleted
Bring-your-own-key (BYOM) machines are not affected by subscription changes. They stay running because you pay the provider directly.

Snapshot retention

Suspended machine snapshots are kept for 90 days. After that, they are permanently deleted by the hourly cleanup job. The dashboard shows the expiration date for each suspended machine. To permanently delete a suspension early (and its snapshot), click the trash icon next to the suspended machine. This is irreversible.

API

Suspend and resume are available via the REST API:
# Suspend a machine
curl -X POST https://api.cnap.tech/v1/compute/machines/{providerId}/suspend \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-Workspace-Id: $WORKSPACE_ID"

# List suspended machines
curl https://api.cnap.tech/v1/compute/suspensions?workspace=$WORKSPACE_ID \
  -H "Authorization: Bearer $TOKEN"

# Resume from suspension
curl -X POST https://api.cnap.tech/v1/compute/suspensions/{id}/resume \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-Workspace-Id: $WORKSPACE_ID"

# Delete a suspension (permanently removes snapshot)
curl -X DELETE https://api.cnap.tech/v1/compute/suspensions/{id} \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-Workspace-Id: $WORKSPACE_ID"

Provider differences

Different cloud providers handle “stop billing” differently. CNAP abstracts this — the suspend/resume API is the same regardless of provider.
ProviderWhat happens on suspend
Hetzner, DigitalOcean, Vultr, Linode, OVHSnapshot disk → delete server (these providers bill for stopped servers)
AWS, GCP, AzureStop instance (compute billing stops automatically)
You don’t need to know which approach your provider uses — CNAP picks the right strategy.