Advanced ConfigurationStorage
Object Storage (S3)
Configure external storage for your backups (MinIO, AWS, Scaleway...).
By default, Portabase stores backups on the Dashboard server's local disk. For production, we strongly recommend using S3-compatible object storage to:
- Separate compute (Dashboard) from storage.
- Benefit from virtually unlimited capacity.
- Protect data if the Dashboard server is lost.
This adds a MinIO service to your Docker Compose stack, typically behind Traefik.
Docker Compose changes
MinIO exposes two ports:
- 9000: S3 API (used by Portabase).
- 9001: Web Console (admin UI).
name: portabase-stack
services:
portabase:
image: solucetechnologies/portabase:latest
container_name: portabase-app
env_file: .env
volumes:
- portabase-private:/app/private
depends_on:
db:
condition: service_healthy
networks:
- traefik_network
- default
labels:
- "traefik.enable=true"
- "traefik.http.routers.portabase.rule=Host(`dashboard.example.com`)"
- "traefik.http.routers.portabase.entrypoints=websecure"
- "traefik.http.routers.portabase.tls.certresolver=myresolver"
# ... standard DB service ...
s3:
image: docker.io/bitnami/minio:latest
container_name: portabase-minio
expose:
- 9000
- 9001
volumes:
- minio-data:/data
environment:
- MINIO_ROOT_USER=${S3_ACCESS_KEY}
- MINIO_ROOT_PASSWORD=${S3_SECRET_KEY}
- MINIO_DEFAULT_BUCKETS=${S3_BUCKET_NAME}
networks:
- traefik_network
- default
labels:
- "traefik.enable=true"
- "traefik.http.routers.api-s3.rule=Host(`api.s3.example.com`)"
- "traefik.http.routers.api-s3.entrypoints=websecure"
- "traefik.http.routers.api-s3.tls.certresolver=myresolver"
- "traefik.http.services.api-s3.loadbalancer.server.port=9000"
- "traefik.http.routers.webui-s3.rule=Host(`console.s3.example.com`)"
- "traefik.http.routers.webui-s3.entrypoints=websecure"
- "traefik.http.services.webui-s3.loadbalancer.server.port=9001"
volumes:
portabase-private:
postgres-data:
minio-data:
networks:
traefik_network:
external: trueConfiguration
Directly from Portabase Dashboard
If you use a cloud provider (Scaleway Object Storage, AWS S3, DigitalOcean Spaces), you usually only need to set environment variables — no Docker changes.
.env example for Scaleway (Paris):
STORAGE_TYPE=s3
S3_ENDPOINT=s3.fr-par.scw.cloud
S3_PORT=443
S3_USE_SSL=true
S3_ACCESS_KEY=SCW_ACCESS_KEY_ID
S3_SECRET_KEY=SCW_SECRET_ACCESS_KEY
S3_BUCKET_NAME=my-backup-bucketFor AWS:
S3_ENDPOINT=s3.eu-west-3.amazonaws.com
# rest is identicalVerification
- Restart the dashboard:
portabase restart . docker-compose down && docker-compose up -d - Log into the web UI.
- Trigger a manual backup on an agent.
- Check your bucket (or MinIO console) to confirm the backup file exists.