Skip to content

Replace MinIO with an alternative S3-compatible storage for local development #177

@matrixise

Description

@matrixise

Problem

MinIO has entered maintenance mode and is no longer actively developed for the open-source community. The MinIO team is now focusing on a commercial, paid version.

Reference: minio/minio@27742d4

This means that for local development, we should migrate away from MinIO to ensure we have a well-maintained and actively supported S3-compatible storage solution.

Current Usage

MinIO is currently used in our docker-compose.yml for local S3-compatible object storage during development. This allows developers to test S3 integration locally without needing AWS credentials.

Proposed Alternatives

1. Garage (Recommended to investigate first)

Website: https://garagehq.deuxfleurs.fr/
GitHub: https://git.deuxfleurs.fr/Deuxfleurs/garage

Pros:

  • Lightweight and designed for self-hosting
  • S3-compatible API
  • Active development by Deuxfleurs
  • Open-source (AGPL-3.0)
  • Good documentation

Cons:

  • Smaller community compared to MinIO
  • Need to evaluate maturity and stability

2. LocalStack

Website: https://localstack.cloud/
GitHub: https://github.com/localstack/localstack

Pros:

  • Very popular for local AWS development
  • Emulates multiple AWS services (not just S3)
  • Well-documented
  • Large community
  • Actively maintained

Cons:

  • More heavyweight (emulates many AWS services we don't need)
  • Some advanced features require a paid license
  • May be overkill if we only need S3

3. Other Options to Consider

  • MinIO fork: Check if there's an active community fork
  • AWS S3 LocalStack: Use only the S3 component of LocalStack
  • SeaweedFS: Another distributed storage system with S3 compatibility
  • Ceph with RGW: More complex but enterprise-grade

Tasks

  • Research and compare Garage vs LocalStack for our specific use case
  • Test chosen alternative with our current S3 integration
  • Update docker-compose.yml to use the new solution
  • Update development documentation (CLAUDE.md, README)
  • Test that media uploads work correctly in local development
  • Ensure compatibility with production S3 usage (boto3, django-storages)

Additional Context

Our production setup uses AWS S3 with boto3 and django-storages. The local development alternative must be compatible with the same boto3 S3 API to ensure consistency between development and production environments.

Files to update:

  • docker-compose.yml
  • CLAUDE.md (development setup instructions)
  • Any scripts or documentation referencing MinIO

Questions

  1. Do we need any S3 features beyond basic object storage (GET, PUT, DELETE, LIST)?
  2. Are there any MinIO-specific configurations we're using that need equivalent support?
  3. Should we prioritize lightweight (Garage) or feature-complete (LocalStack)?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions