Skip to content

Storage

Vessl provides one-click S3-compatible object storage using MinIO. Each storage instance is an isolated MinIO container with persistent volumes.

  1. Navigate to Storage in the sidebar.
  2. Click New Storage.
  3. Configure:
    • Name: A friendly name for the storage instance.
    • Port: The S3 API port (default: 9000).
  4. Click Create.

Vessl provisions a MinIO container with the following defaults:

  • Access Key: Auto-generated
  • Secret Key: Auto-generated
  • API Endpoint: http://<service-name>:9000
  • Console UI: Available on port 9001
  • Data Volume: Persisted at <data-dir>/storage/<id>/

The storage credentials are automatically injected into every service in the same project:

Terminal window
S3_ENDPOINT=http://<service-name>:9000
S3_ACCESS_KEY=<auto-generated-access-key>
S3_SECRET_KEY=<auto-generated-secret-key>

Connect to your MinIO instance using any S3-compatible client:

Terminal window
aws s3 --endpoint-url http://<service-name>:9000 ls
Terminal window
mc alias set vessl http://<service-name>:9000 <access-key> <secret-key>
import { S3Client } from "@aws-sdk/client-s3";
const s3 = new S3Client({
endpoint: process.env.S3_ENDPOINT,
credentials: {
accessKeyId: process.env.S3_ACCESS_KEY,
secretAccessKey: process.env.S3_SECRET_KEY,
},
region: "auto",
forcePathStyle: true,
});
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'],
)

Storage instances can be started and stopped from the dashboard. Stopping preserves the data volume.

MinIO includes a web-based console at port 9001. Access it directly or via your Vessl dashboard.

Storage data is included in Vessl’s backup system. Configure S3-to-S3 backups for offsite replication:

  1. Go to Backups → S3 Destinations.
  2. Add an external S3-compatible destination.
  3. Create a backup configuration pointing to your storage instance.