Back to Blog
team@tinypod.app

Self-Hosting MinIO: Your Own S3-Compatible Object Storage

MinIO is S3-compatible object storage you can run anywhere. Store files, backups, and media with the same API as Amazon S3.

minios3storageobject-storage

What Is Object Storage?


Object storage treats files as objects in flat buckets rather than hierarchical file systems. Each object has a key (path), data (the file), and metadata.


Amazon S3 popularized this model. Now it's the standard for application file storage.


Why MinIO?


MinIO implements the S3 API. Any tool that works with Amazon S3 works with MinIO — same SDKs, same CLI, same integrations.


Self-Hosting Benefits

  • No per-request pricing ($0.0004 per GET on AWS)
  • No data transfer fees ($0.09/GB on AWS)
  • No storage tiers to manage
  • Your data stays on your infrastructure

  • Use Cases


    Application Storage

    Store user uploads, generated files, and media. Your app talks to MinIO using the same AWS S3 SDK it would use for Amazon S3.


    Backup Destination

    Restic, Borg, and most backup tools support S3. Point them at MinIO.


    Docker/Podman Registry Storage

    Use MinIO as the storage backend for your container registry.


    Static Website Hosting

    Serve static files directly from MinIO buckets.


    Data Lake

    Store large datasets for analytics and machine learning.


    Deployment


    1. Deploy MinIO on TinyPod

    2. Create buckets for your use cases

    3. Create access keys

    4. Configure your applications to use MinIO endpoint


    Resources: 1 CPU, 1 GB RAM. Storage scales with your disk.


    Configuration


    Create a Bucket

    mc mb myminio/my-bucket


    Set Bucket Policy

    mc anonymous set download myminio/my-bucket/public


    Upload Files

    mc cp file.pdf myminio/my-bucket/


    S3 SDK Compatibility


    Change the endpoint URL in your S3 SDK from Amazon to your MinIO server:


    const s3 = new S3Client({

    endpoint: "https://minio.example.com",

    region: "us-east-1",

    credentials: { accessKeyId: "...", secretAccessKey: "..." }

    });


    All existing S3 code works unchanged.


    Cost Comparison


    1 TB stored, 100 GB transfer/month:

  • Amazon S3: ~$32/month
  • MinIO on TinyPod: $5/month (just the server cost)

  • Savings grow linearly with data volume.