A provider-agnostic object storage layer that works with AWS S3, Cloudflare R2, Backblaze B2, Wasabi, or any S3-compatible endpoint. Use it instead of nSelf's built-in MinIO when you want external storage, multi-region replication, or a managed provider. Supports presigned URLs, multipart uploads, and lifecycle policies.
Set your license key with nself license set nself_pro_... before installing.
nSelf ships with MinIO as the default object store. Use nself-object-storage when you need an external provider, multi-region failover, or want to avoid running MinIO locally.
nself license set nself_pro_...
nself plugin install object-storage
nself build
nself start| Variable | Required | Description |
|---|---|---|
PLUGIN_OBJECT_STORAGE_PROVIDER | Yes | s3, r2, b2, or custom |
PLUGIN_OBJECT_STORAGE_ENDPOINT | custom | S3-compatible endpoint URL (for non-AWS providers) |
PLUGIN_OBJECT_STORAGE_ACCESS_KEY | Yes | Access key ID |
PLUGIN_OBJECT_STORAGE_SECRET_KEY | Yes | Secret access key |
PLUGIN_OBJECT_STORAGE_BUCKET | Yes | Default bucket name |
PLUGIN_OBJECT_STORAGE_REGION | No | AWS region or auto for R2 |
curl -X POST http://127.0.0.1:3301/object-storage/upload \
-F "file=@/path/to/document.pdf" \
-F "key=docs/document.pdf"curl -X POST http://127.0.0.1:3301/object-storage/presign \
-H "Content-Type: application/json" \
-d '{"key": "docs/document.pdf", "expires_in": "24h", "method": "GET"}'| Endpoint | Method | Description |
|---|---|---|
/object-storage/upload | POST | Upload a file (multipart/form-data) |
/object-storage/presign | POST | Generate a presigned URL for GET or PUT |
/object-storage/list | GET | List objects with optional prefix filter |
/object-storage/delete | DELETE | Delete one or more objects |
/object-storage/copy | POST | Copy an object to a new key or bucket |
/health | GET | Plugin health check |
nself plugin remove object-storagePort: 3301 | Category: Infrastructure | Last Updated: April 2026 | Plugin Version 1.1.1