Storage
Storage in the sidebar shows where your workspace's attachment files are kept, and is where you connect your own S3-compatible bucket. Your own bucket works on every plan. Why and how, with steps for each provider: Bring your own storage.
Usage
| Meter | Shows |
|---|---|
| Hosted by poolse | Attachments in poolse's hosted storage, against your plan's limit (Free 300 MB, Pro and Scale 500 MB). |
| In your own bucket | Attachments stored in any bucket you have connected. Shown once you connect one. poolse sets no limit here. |
Below the meters, the largest file you can upload: your plan's per-file limit on hosted storage (Free 1 MB, Pro and Scale 25 MB), or 100 MB while your own bucket is connected.
The hosted meter turns amber at 80% and red when full. When it is full,
new uploads to hosted storage are refused with
402 attachment_total_cap_exceeded; connecting your own bucket lets
uploads carry on.
Where attachments go
The card under the meters says which mode the workspace is in:
- Attachments are stored by poolse, with a Hosted pill: the default. Nothing to set up.
- New attachments go to your bucket
name: a bucket is connected. The card lists the provider, bucket, endpoint, region, key prefix, URL style, the first and last characters of the access key, and when the bucket was last checked. The secret key shows as Stored, encrypted; it is never shown again.
The pill shows the result of the last check:
| Pill | Means |
|---|---|
| Connected | The last check passed. |
| Check failed | The last check failed. The reason is shown under the details. |
| Not checked | No check has run since the details were saved. |
Connect your own bucket
- Pick a Provider: Cloudflare R2 (recommended), Amazon S3, Backblaze
B2, Wasabi, DigitalOcean Spaces, Google Cloud Storage, MinIO, or Other
S3-compatible. This fills in the Endpoint, Region and
Path-style URLs switch with the provider's usual values. For R2,
replace
<ACCOUNT_ID>in the endpoint with your Cloudflare account ID; for B2, Wasabi and Spaces the endpoint follows the region you type. - Enter the Bucket name.
- Keep the Key prefix at
poolse/or change it. poolse writes only under this prefix. - Enter the Access key ID and Secret access key of a key limited to this bucket. See Key permissions.
- Optionally enter your Web app origin for the CORS check, such as
https://app.example.com. - Click Check and connect.
poolse checks the bucket before saving:
| Step | What poolse does |
|---|---|
| Write a test object | Uploads a small object under the key prefix. |
| Read its metadata | Reads the object's size. |
| Download it | Downloads it. |
| Delete it | Deletes it. |
| CORS preflight for an upload | Only with an origin: asks the bucket whether a browser on that origin may PUT. |
Each step shows ✓ or ✗ with your provider's answer, and a failed step comes with a hint about the usual cause. If any step fails, nothing is saved: uploads keep going where they went before. Fix the setting or the bucket and click again.
Once connected, new uploads go to your bucket. Attachments already stored stay where they are and keep working.
Edit the connection
Click Edit to change any setting. The key fields start empty:
- Leave both empty to keep the stored key. This works only while the endpoint and bucket stay the same, for example to change the key prefix or re-run the check with a different origin.
- To use a new key, enter both the access key ID and the secret.
- A new endpoint or bucket always needs the key entered again.
Check and save runs the same check before anything changes.
Browser access (CORS)
The Browser access (CORS) card shows the CORS rules your bucket needs, in your provider's format, with your origin filled in, and a Copy rules button. Under it: where to paste them for that provider. While the form is closed, the card has its own Web app origin field, which Test connection also uses.
Native iOS and Android apps don't need CORS rules. Web apps do, for every origin they run on.
Key permissions
The Key permissions card explains what the key needs: write (for uploads), read (for downloads and the size check when a message is sent) and delete (for deleted attachments and a deleted workspace). It lists how to create such a key at the chosen provider, and for Amazon S3, Wasabi and MinIO shows an IAM policy limited to your bucket and prefix.
Test connection
Test connection runs the check on the connected bucket again, with the origin from the CORS card if you entered one, and updates the pill. It changes nothing else.
Disconnect
Disconnect asks you to confirm, then sends new uploads back to poolse's hosted storage, within your plan's limits.
Attachments already in your bucket stay there and stay readable for as long as the stored key still works. Keep the key and the bucket while you need those files.
Deleting the workspace from the Danger zone also deletes the files poolse wrote to your connected bucket, under the key prefix.