Nubbo connects to Cloudflare R2 with an R2 API token and your account’s Account ID. In a few minutes your buckets are in a file explorer with direct uploads, share links and galleries. This guide follows the Nubbo wizard step by step, with both paths: automatic or with a key limited to one bucket.
What you get
- Browse the bucket like a drive: folders, views, search, trash, labels and favorites.
- Upload and download files directly between your browser and Cloudflare R2. Files never pass through Nubbo servers.
- Share files and folders with a password, expiry and download limit, receive files into your bucket and create galleries.
- Your keys are stored encrypted with AES-256-GCM and you can disconnect the bucket at any time.
Before you start
You need an account with Cloudflare R2 and a Nubbo account. Every bucket you connect counts toward your plan limit: Free allows 2, Personal 5 and Pro has no limit. Before your first bucket, Cloudflare asks you to activate the R2 subscription from the dashboard. If your bucket has a jurisdiction (EU, FedRAMP or US), you pick it in the wizard and Nubbo uses the endpoint of that jurisdiction.
Choose how to connect
The Nubbo wizard offers two paths. Both end the same way: the bucket connected and ready for uploads from the browser.
| Automatic | With a limited key | |
|---|---|---|
| Key | Access to the whole account | Limited to one bucket |
| Bucket | Nubbo uses one of yours or creates a new one | You create it first |
| CORS | Nubbo adds the rule for you | You add the rule |
| When to choose it | The fastest way | When you do not want to give access to the whole account |
The limited key is the least access Nubbo needs: Object Read & Write on one bucket. With it Nubbo cannot list your buckets or create one, so you type the bucket name and add the CORS rule yourself.
Automatic connection
Step 1: create the key in Cloudflare R2
- Sign in to dash.cloudflare.com and open R2 object storage. The dashboard may show its menus in your language.
- Open API Tokens and press Create Account API token. You also reach it from Overview, under Account Details, Manage.
- Choose the Admin Read & Write permission and create the token.
- Copy the Access Key ID and the Secret Access Key. Cloudflare shows the secret only once. Use these two keys, not the token value.
- Copy your Account ID too, shown on the Overview page.
Step 2: connect the bucket in Nubbo
In Nubbo, open Buckets and press Connect bucket. Choose Cloudflare R2 and press Continue.

Choose Automatic and press Continue.

In the Your key step, paste the Access Key ID, the Secret Access Key and the Account ID, and pick the Jurisdiction of your bucket: Default (no jurisdiction) for most buckets, or EU, FedRAMP or US. Nubbo builds the endpoint from the Account ID and the jurisdiction, for example
https://<ACCOUNT_ID>.eu.r2.cloudflarestorage.comfor the EU. The bucket list only shows buckets in that jurisdiction and a new bucket is created in it. The R2 region is alwaysauto. Press Check key. Nubbo checks that the key works and that it has access to the whole account.

Pick one of your buckets and press Use this bucket, or select Create a new one, type a name (and pick the region, if it asks) and press Create and prepare. Nubbo adds a CORS rule to the bucket that only allows uploads and downloads from the app, and keeps the rules it already has.

Review the three checks, change the Name in Nubbo if you like and press Finish. The bucket shows up in Buckets and you can open it in the explorer.

If Nubbo cannot add the CORS rule with your key, the wizard takes you to the CORS step. Then follow Add the CORS rule.
Connection with a limited key
Step 1: prepare the bucket and the key in Cloudflare R2
- In R2 object storage, press Create bucket and give it a name (lowercase letters, numbers and hyphens). There is no region to choose. If the data must stay in the EU, choose the EU jurisdiction: the endpoint changes with it.
- Open API Tokens and press Create Account API token.
- Choose the Object Read & Write permission and limit it to your bucket.
- Copy the Access Key ID, the Secret Access Key and your Account ID.
Step 2: connect the bucket in Nubbo
- In Buckets, press Connect bucket, choose Cloudflare R2 and then With a limited key.
- Paste the Access Key ID, the Secret Access Key and the Account ID, pick the same Jurisdiction as the bucket and press Check key.
- Type the exact bucket name and press Check access.
- The wizard moves to the CORS step with the rule you need to add.
Add the CORS rule
The CORS rule lets the browser upload and download files from your bucket on https://nubbo.app. It is the same rule the wizard shows in the CORS step.
- In R2, open the bucket and go to Settings.
- Under CORS Policy, press Add CORS policy and pick the JSON tab.
- Paste the rule and press Save. Cloudflare can take up to 30 seconds to apply it.
[
{
"AllowedHeaders": ["*"],
"AllowedMethods": ["GET", "PUT", "POST", "DELETE", "HEAD"],
"AllowedOrigins": ["https://nubbo.app"],
"ExposeHeaders": ["ETag"],
"MaxAgeSeconds": 3600
}
]

Once it is saved, go back to Nubbo and press I added it, check. If your key is allowed to change CORS, Try to configure it for me does it for you.
If something goes wrong
| Message in Nubbo | What to do |
|---|---|
| “This key seems limited to one bucket. You can continue with the limited path or create a key with full access.” | Press Continue with a limited key, or create a key with access to the whole account and press Try another key. |
| “Your key is not allowed to create buckets.” | Use a key with full access, or create the bucket in your panel and press I created it in my panel. |
| “That name is already in use on this provider; try another one.” | Bucket names are unique across the provider: pick another one. |
| “Your key is not allowed to set it up.” | Add the CORS rule by hand, as explained above. |
| “It does not work yet. Review the rule and check again; some providers take a minute to apply it.” | Check that the origin is exactly https://nubbo.app with no trailing slash, wait a minute and check again. |
| “This bucket is already in use.” | That bucket is already connected in Nubbo, in your account or in another one. |
| “Invalid credentials. Check the access key and secret access key.” | Check that you pasted the token’s Access Key ID and Secret Access Key, not the Cloudflare API token value. |
| “Bucket not found. Verify the name and region.” | Check the name, and check that the Jurisdiction in Nubbo matches the one of the bucket (R2 shows it in the bucket Settings). |
What it costs
R2 does not charge for egress and has a monthly free tier. We explain it in Cloudflare R2 free tier.
Frequently asked questions
Where do I find my Cloudflare Account ID?
On the R2 Overview page, under Account Details. It is a 32 character string of numbers and the letters a to f.
What permission does the R2 token need?
The least access Nubbo needs is Object Read & Write limited to your bucket, with the limited key path: you type the bucket name and add the CORS rule yourself. The automatic path needs Admin Read & Write, which lets Nubbo list your buckets, create one and set up its CORS.
Which region do I use with R2?
None: R2 uses the auto region and Nubbo sets it for you. Cloudflare location hints do not change how the bucket connects.
Can I connect an R2 bucket with a jurisdiction, such as the EU one?
Yes. In the Your key step, pick the jurisdiction of the bucket (EU, FedRAMP or US). Each one has its own endpoint, such as https://<ACCOUNT_ID>.eu.r2.cloudflarestorage.com, and only shows the buckets created in it.
Do downloads from Nubbo cost egress on R2?
No. R2 does not charge for data transfer out. Downloads do count as read operations.
Sources
Prices and limits come from the official pages below. Providers change them, so check before you commit.