How to connect any S3-compatible storage to Nubbo
If you run your own object storage or use an S3-compatible service that isn’t built in, Nubbo can connect to it through a custom S3 endpoint. That covers MinIO, Ceph, Garage, SeaweedFS and any server that speaks the S3 API. In this guide you’ll connect a self-hosted server to Nubbo and manage your buckets from a clean, modern interface, while your data stays on your own infrastructure.
What is an S3-compatible server?
S3 is the de facto standard for object storage, and many tools expose the same API so any S3 client works with them. The most popular self-hosted options are:
- MinIO: the most popular self-hosted S3 server, simple to run and widely used.
- Ceph (RADOS Gateway): enterprise-grade, distributed, used in private clouds.
- Garage: lightweight and distributed, popular in the self-hosting community.
- SeaweedFS: fast and great for large numbers of small files.
If your server exposes an S3-compatible API with Signature V4, Nubbo can connect to it.
Step 1: Run an S3-compatible server
If you already have one, skip to the next step. To try it quickly with MinIO using Docker:
docker run -p 9000:9000 -p 9001:9001 \
-e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=change-me-123" \
minio/minio server /data --console-address ":9001"- The S3 API is on port 9000 (this is the endpoint you’ll use in Nubbo).
- The admin console is on port 9001.
Step 2: Create a bucket and access keys
- Open the admin console (for MinIO,
http://localhost:9001) and log in. - Create a bucket (for example
nubbo). - Create an access key and secret key with read and write permissions on that bucket.
Step 3: Configure CORS
Uploads in Nubbo go directly from your browser to your server, so the server has to return the right CORS headers. How you configure CORS depends on your software, but you need to allow your origin (https://app.nubbo.app) and the GET, PUT, POST, DELETE and HEAD methods.
For MinIO you can allow the origin with an environment variable when you start it:
-e "MINIO_API_CORS_ALLOW_ORIGIN=https://app.nubbo.app"Other servers use their own configuration or a reverse proxy. Check your server’s documentation for the exact steps.
Step 4: Connect to Nubbo
- If you don’t have an account yet, sign up for free on Nubbo.
- Click Add Provider in the sidebar.
- Select Custom S3 / Self-hosted as the provider type.
- Give the connection a descriptive name (for example, “My MinIO Storage”).
- Enter your endpoint URL, the S3 API URL of your server (for example
http://localhost:9000orhttps://s3.your-domain.com), not the admin console. - Enter the region (use
us-east-1if your server has no regions). - Enter your access key and secret key from Step 2.
- Type the bucket name from Step 2.
- Click Test connection to verify everything works, then save the provider.
From now on you’ll be able to browse your files, upload with drag and drop, preview images and videos, search, share with public links, create photo galleries, receive files through file requests, and much more, all from the Nubbo interface, while your data stays on your server.
Summary
In four steps you’ve connected your own S3-compatible storage:
- An S3-compatible server running (MinIO, Ceph, and others).
- A bucket and access keys created.
- CORS configured so the browser can upload.
- The server connected to Nubbo and ready to use.
Nubbo also supports AWS S3, Cloudflare R2, DigitalOcean Spaces, Wasabi and Backblaze B2, so you can manage all your storage from the same place.
Ready to get started? Create your free account and connect your first bucket in minutes.