---
title: "How to provision S3 object storage on Rock8Cloud"
description: "Provision S3-compatible object storage inside your project and connect it to your app in one click - for uploads, media, and static assets."
tech: "S3 storage"
icon: s3
category: services
pubDate: 2026-06-04
image: /how-to/og/s3.png
imageAlt: "How to provision S3 object storage on Rock8Cloud"
headerImage: true
ctaTitle: "Your storage, one click away."
ctaTitleHighlight: "Ship today."
ctaSubtitle: "S3-compatible object storage provisioned and connected to your app in one click. No DevOps, no surprise bills."
ctaIcons: [s3]
order: 92
steps:
  - name: "Add a service"
    text: "In your project, click Add Service and pick S3 Storage."
  - name: "Pick a size and create"
    text: "Choose a storage size and click Deploy S3 Storage. Rock8Cloud provisions the bucket and generates access credentials automatically."
  - name: "Link it to your app"
    text: "Open your app's Env vars tab and add the S3 credentials - endpoint, region, bucket, access key, secret key."
  - name: "Save"
    text: "Your app automatically redeploys and can use any S3-compatible client library."
faq:
  - q: "Is the S3 storage AWS?"
    a: "No - it is S3-compatible storage. It works with any S3 client library (AWS SDK, boto3, MinIO). Just set forcePathStyle: true in your client."
  - q: "Can I serve files publicly?"
    a: "Yes. Toggle Public Access on the S3 service for read-only public URLs - great for images and static assets. Writes always require credentials."
  - q: "How does my app authenticate?"
    a: "Link the generated ENDPOINT, REGION, BUCKET, ACCESS_KEY, and SECRET_KEY variables to your app. Credentials are encrypted at rest."
---

Provision S3-compatible object storage inside your Rock8Cloud project and connect it to your app **in one click** - for file uploads, media, backups, and static assets. Credentials are generated for you and work with any S3 client library.

## Provision and connect in one click



[Pick the engine and provision it in one click](https://minio.11333311.xyz/vibeham-docs/db_selection.mp4)



1. **Add a service.** In your project, click **Add Service → S3 Storage**, pick a size, and deploy. Access credentials are generated automatically.
2. **Link it.** Open your app's **Env vars** tab and add the S3 credentials.
3. **Save.** Your app automatically redeploys and can talk to the bucket.



[Link environment variables in one click](https://minio.11333311.xyz/vibeham-docs/env_configuration.mp4)




## Connect from your app

When you link the storage, you name each variable yourself and pick what it maps to - S3 offers:

| Link option | Maps to |
|---|---|
| S3 Endpoint | the S3 API endpoint URL |
| Bucket Name | your bucket name |
| S3 Region | auto-configured region |
| Access Key | auto-generated, kept secret |
| Secret Key | auto-generated, kept secret |
| Public URL | URL for serving objects - only resolves when the bucket is public |

Hand these to any S3-compatible client (AWS SDK, boto3, MinIO…) and set `forcePathStyle: true` in the client config - it's required.

Need to serve images or static files without auth? Toggle **Public Access** on the S3 service for read-only public URLs - writes always stay credential-only.

Full reference and troubleshooting in the [S3 storage docs](https://docs.rock8.cloud/docs/databases-and-storage/s3-storage).

Also provision: [PostgreSQL](/how-to/provision-postgresql) · [Dragonfly (Redis)](/how-to/provision-dragonfly).
