S3 Object Storage
Deploy S3-compatible object storage for files, media, and assets
Rock8Cloud provides S3-compatible object storage that you can deploy alongside your services. Use it for file uploads, static assets, backups, or any S3-compatible workload.
Create an S3 Service
- Click Add Service in your project
- Select S3 Storage
- Enter a name (e.g.,
media-storage,uploads) - Select a storage size
- Click Deploy S3 Storage
Rock8Cloud provisions the storage and generates access credentials automatically.
Credentials
After the S3 service is deployed, view your credentials from the service page:
| Variable | Description |
|---|---|
ENDPOINT | S3 API endpoint URL |
EXTERNAL_URL | Public URL for accessing objects |
BUCKET | Name of your storage bucket |
ACCESS_KEY | Authentication key for S3 API access |
SECRET_KEY | Secret key paired with the access key |
Credentials are encrypted at rest and only decrypted when you view them.
Connecting Your Application
Add the S3 credentials as environment variables in your application service, then use any S3-compatible client library.
Use forcePathStyle: true and "garage" as the region — these are required for compatibility with the storage backend.
Example: AWS SDK (Node.js)
import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";
const s3 = new S3Client({
endpoint: process.env.S3_ENDPOINT,
region: "garage",
credentials: {
accessKeyId: process.env.S3_ACCESS_KEY,
secretAccessKey: process.env.S3_SECRET_KEY,
},
forcePathStyle: true,
});
await s3.send(new PutObjectCommand({
Bucket: process.env.S3_BUCKET,
Key: "uploads/photo.jpg",
Body: fileBuffer,
}));Example: Python (boto3)
import boto3
s3 = boto3.client(
"s3",
endpoint_url=os.environ["S3_ENDPOINT"],
aws_access_key_id=os.environ["S3_ACCESS_KEY"],
aws_secret_access_key=os.environ["S3_SECRET_KEY"],
)
s3.upload_file("photo.jpg", os.environ["S3_BUCKET"], "uploads/photo.jpg")Features
- S3-compatible API — works with any S3 client library (AWS SDK, boto3, MinIO, etc.)
- Network-accessible — accessible from services within your project and via the external URL
- Persistent — data survives restarts and redeployments
- Encrypted credentials — access keys are encrypted at rest
Deleting an S3 Service
- Go to your project
- Select the S3 service
- Click Delete
- Confirm the deletion
Deleting an S3 service removes the storage and all stored data permanently.
Troubleshooting
Access denied
- Verify
S3_ACCESS_KEYandS3_SECRET_KEYare correctly set - Ensure the bucket name matches
S3_BUCKET
Connection issues
- Use the internal endpoint for service-to-service access within your project
- Use the external URL for access from outside your project
- Ensure
forcePathStyle: trueis set in your client configuration
Region errors
- Always use
"garage"as the region — other values will fail
Related
- PostgreSQL — Relational database
- Dragonfly — Redis-compatible in-memory datastore
- Environment Variables — Configure secrets and settings