DEV Community

Maksym
Maksym

Posted on

🚀 Managing Media Files with MinIO and Podman

Introduction

In one of my recent projects, I ran into a challenge: managing large volumes of media files efficiently. My team doesn’t rely on cloud platforms like AWS S3 or other managed bucket storage solutions — instead, we use dedicated services. That meant we needed a solution that could handle most use cases out of the box, without locking us into a specific vendor.

That’s when I discovered MinIO. It’s a high-performance, self-hosted object storage system that replicates the functionality of AWS S3. With MinIO, you get the familiar S3 API, but you can run it anywhere — on your own servers, in containers, or even on edge devices.

Here, I’ll walk you through how to deploy MinIO using Podman (though you can easily switch to Docker — most commands are identical).


⚙️ Step 1: Run MinIO with Port Mapping

When starting the container, you need to expose MinIO’s internal ports to your server’s public network.

By default, MinIO uses:

  • 9000 → S3 API
  • 9001 → WebUI (console)

Here’s the Podman command:

podman run -d \
  --name minio \
  -p 0.0.0.0:9000:9000 \
  -p 0.0.0.0:9001:9001 \
  -e MINIO_ROOT_USER=admin \
  -e MINIO_ROOT_PASSWORD=strongpassword \
  quay.io/minio/minio server /data --console-address ":9001"
Enter fullscreen mode Exit fullscreen mode

This maps the container’s ports to your host machine and ensures MinIO listens on all interfaces (0.0.0.0).


🔍 Step 2: Verify the Container

Check that MinIO is running and ports are mapped correctly:

podman ps
Enter fullscreen mode Exit fullscreen mode

You should see entries for 9000->9000 and 9001->9001.


🔒 Step 3: Open Firewall Ports

On Ubuntu, make sure the ports are accessible:

sudo ufw allow 9000/tcp
sudo ufw allow 9001/tcp
Enter fullscreen mode Exit fullscreen mode

🌐 Step 4: Access the WebUI

For local testing, I’m using a Multipass Ubuntu server exposed on my LAN at http://192.168.2.2/.

You can find your server’s IP by running:

multipass list
Enter fullscreen mode Exit fullscreen mode

Then open the MinIO console in your browser:

http://<your-server-ip>:9001
Enter fullscreen mode Exit fullscreen mode

Log in using the credentials you set (MINIO_ROOT_USER / MINIO_ROOT_PASSWORD).


✅ Why MinIO?

  • S3-compatible API → Works with existing AWS SDKs and tools.
  • Lightweight & fast → Perfect for local development or edge deployments.
  • Self-hosted control → No vendor lock-in, full control over your data.
  • Scalable → Can grow from a single node to distributed clusters.

I hope this would help someone to


🎯 Conclusion

Setting up MinIO with Podman (or Docker) gives you a powerful, S3‑compatible storage solution without relying on external cloud providers. With just a few commands, you can spin up a fully functional object storage service, expose it securely on your network, and manage files through a clean WebUI.

For teams working with dedicated infrastructure, MinIO bridges the gap by offering the flexibility of AWS S3 while keeping full control over your data. Once deployed, you can integrate it seamlessly into your applications, automate workflows with the MinIO client (mc), and scale as your project grows.

Whether you’re experimenting locally or preparing for production, MinIO provides a reliable foundation for modern media and data management.

Top comments (0)