Persistent volumes
By default a DollarBox container has only the ephemeral disk that comes with the pod. If the container restarts or you change its image, anything written to that disk is lost. Persistent volumes give you real block storage that survives restarts and can be detached from one container and attached to another.
Pricing
€0.10 per GB per month, pro-rated. Capacity is pre-paid: you buy a pool of GB up front, and then carve volumes from it. The pool can be grown or shrunk at any time.
You only pay for the pool size, not the number of volumes. A 50 GB pool costs €5/month whether you split it into one 50 GB volume or ten 5 GB volumes.
How the pool works
- Buy capacity before creating any volumes. The control panel won't let you create a volume that's larger than your remaining unused pool.
- Grow the pool any time. Stripe charges the difference, pro-rated for the rest of the billing period.
- Shrink the pool down to the floor of currently-provisioned volumes. Shrinks take effect at the end of the current billing period (no refund).
- Delete a volume to free the GB back into the pool. The data is destroyed.
Creating a volume
- Buy capacity at Volumes → Manage capacity in the control panel.
- Go to Volumes → New volume and enter a name and size in GB.
- The volume status moves from
pending→provisioning→bound. Binding is fast (a few seconds) and the underlying storage volume is created automatically.
Attaching to a container
When you create or edit a container, pick a volume from the Persistent volume dropdown and enter a Mount path (e.g. /data). The container's files at that path will persist across restarts.
Only unattached volumes appear in the dropdown — each volume can be attached to at most one container at a time (the underlying access mode is ReadWriteOnce).
Detaching and moving a volume
- Edit the container and set the volume back to "No volume".
- Restart the container so the new spec rolls out.
- The volume becomes selectable on any other container in the same org.
The data on the volume is untouched.
Limitations
- ReadWriteOnce: one container at a time.
- Location-bound: a volume stays in its current DollarBox location. We don't yet support moving volumes between locations.
- Per-volume size cap: 100 GB by default. Contact support if you need a single larger volume.
- Per-org pool cap: 500 GB by default.
- Delete is permanent: removing a volume from the control panel destroys the underlying block-storage volume.
kubectl mode
Tenants in kubectl mode can request volumes themselves:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data
spec:
accessModes: [ReadWriteOnce]
storageClassName: longhorn
resources:
requests:
storage: 5Gi
The same pool capacity applies — your org must have unused GB in the pre-paid pool, or the PVC will be rejected by the namespace ResourceQuota.
Snapshot protection
Longhorn volumes in child namespaces can opt into snapshot protection through the API. Protection costs €0.10 per protected GB per month, prorated, based on the source PVC's requested capacity. A protected volume receives one snapshot per day with configurable retention from one to seven successful snapshots, plus one optional manual snapshot.
Snapshot protection is billed separately from the live-volume pool. Increasing a protected PVC increases both its live-storage requirement and its snapshot-protection quantity. Disabling protection stops new snapshots, removes retained snapshots, and stops the add-on charge after deletion completes.
Restores always create a new PVC. The child namespace must have enough unused allocated_volume_gb for both the live and restored PVCs.
Snapshots are crash-consistent recovery points stored in the same Longhorn cluster. They protect against application mistakes and damaged data, but they are not off-site backups and cannot recover from loss of the whole cluster.