What this means
What this means
CM Cloud apps store uploaded files on the runtime VM's local disk by default. For larger media libraries, off-app backups, or storage that is independent of the app, you can connect an external S3-compatible bucket. PocketBase has a built-in S3 storage setting; Node.js, Python, and Laravel apps connect using their own SDK and environment variables. CM Cloud does not create or host the bucket — you bring your own from a provider such as Cloudflare R2, AWS S3, or Backblaze B2.
Before you start
Before you start
Create a bucket at your chosen provider and generate access credentials (access key ID, secret access key, region, and the S3 endpoint URL). Pick the provider that fits your budget — Cloudflare R2 is recommended for most CM Cloud customers because it is S3-compatible and charges no egress (bandwidth) fees.
Step-by-step guidance
Step-by-step guidance
- Create a bucket and an access key at an S3-compatible provider (Cloudflare R2 recommended, or AWS S3 / Backblaze B2).
- PocketBase: open the admin dashboard at your-domain/_/, go to Settings → Storage, turn on S3 storage, and enter the bucket, region, endpoint, access key, and secret.
- Node.js / Python / Laravel: add your credentials as environment variables in the portal (e.g. S3_ENDPOINT, S3_BUCKET, S3_REGION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) and use your framework's S3 SDK to read and write files.
- Keep secret keys in the portal Environment Variables section only — never commit them to your GitHub repo.
- Redeploy the app so the new variables are applied, then upload a test file to confirm it lands in the bucket.
What CM Cloud support will review
What CM Cloud support will review
Support can confirm which environment variables your app expects and verify that the S3 settings are applied, but the bucket, its credentials, and its billing stay in your own provider account.
What is not automated yet
What is not automated yet
CM Cloud does not create, host, or bill S3 buckets, and does not migrate existing local files into a bucket automatically. You provision the bucket and credentials with your chosen provider.
Safety note
Safety note
Reading this article does not create a bucket, store credentials, change storage settings, or move files. S3 secret keys should only be entered in the portal Environment Variables section or the PocketBase admin panel.
Safe next action
Safe next action
Create a bucket at your provider, then add the credentials in the PocketBase Storage settings or the portal Environment Variables section.