If you’re looking for lightweight, self-hosted, and S3-compatible object storage, MinIO is one of the best solutions available. Whether you need it for storing backups, logs, media files, or cloud-native applications, MinIO provides a fast, scalable, and secure storage layer that’s easy to deploy.

In this post, we’ll walk you through how to install and configure MinIO on a Linux server using Docker. By the end, you’ll have a fully functional object storage system similar to Amazon S3, ready for storing anything from application logs to large media backups.

Why Use MinIO?

MinIO is ideal for developers and sysadmins who want:

  • S3-compatible object storage without the AWS price tag.
  • A self-hosted backup destination for files, logs, or Docker volumes.
  • Lightning-fast performance (native Go binary).
  • Simple CLI/API access for automation.

Use cases include:

  • Hosting backup buckets for servers or applications.
  • Storing audit or monitoring logs.
  • Serving public/private files to users.
  • Integrating into CI/CD pipelines.

Before we begin:

  • A Linux server or VPS (Ubuntu/Debian/RHEL-based). You can get a ARM VPS here.
  • Docker and Docker Compose installed.
  • At least 2GB RAM (for minimal usage).

Step 1: Create a Docker Compose File

Create a directory for MinIO:

mkdir -p ~/Docker/MinIO && cd ~/Docker/MinIO
sudo mkdir -p /data && sudo chown 1000:1000 /data

Then, create a docker-compose.yml file with the following content:

services:
  minio:
    image: minio/minio:latest
    container_name: minio
    ports:
      - "9000:9000"   # S3 API
      - "9001:9001"   # Web UI
    environment:
      MINIO_ROOT_USER: minioadmin
      MINIO_ROOT_PASSWORD: minioadmin123
    volumes:
      - /data:/data
    command: server /data
    restart: unless-stopped

This setup:

  • Exposes the S3-compatible API on port 9000
  • Exposes the admin web console on port 9001
  • Sets a default username/password (minioadmin / minioadmin123)

Step 2: Launch MinIO

Start MinIO using Docker Compose:

docker compose up -d

Step 3: Access the MinIO Console

Open your browser and go to: http://your-server-ip:9001

Login using the credentials:

  • Username: minioadmin
  • Password: minioadmin123

You’ll land on the clean and modern MinIO dashboard where you can create buckets, upload files, and manage access keys.

Step 4: Create Buckets & Upload Files

To create a bucket:

  1. Go to the “Buckets” section.
  2. Click “+ Create Bucket”
  3. Name your bucket (e.g., backups or logs)
  4. Optionally make it public or private.

You can now start uploading files via the UI, or use the mc CLI tool (MinIO Client) for automated backups.

How MinIO Uses and Mounts Storage via Docker

in this setup, MinIO uses the host machine’s local storage by mounting the /data directory directly into the Docker container. This is done through a Docker bind mount, specified in the docker-compose.yml file under the volumes section. Instead of using Docker’s internal named volumes, this approach provides greater visibility and control over the stored data.

Inside the container, MinIO is instructed to use the /data directory as its storage root. This means any files, buckets, or objects uploaded to MinIO via the S3 API or web interface are physically stored on the host in /data. The command: server /data line tells MinIO to treat that directory as its backend storage.

By mounting /data from the host into the container, all data persists even if the container is stopped, restarted, or recreated. This makes it ideal for backup targets, log archives, or any application needing reliable object storage. You can inspect or back up your MinIO data directly from the host system at /data, without needing to enter the container.

This simple yet powerful setup ensures data durability while keeping configuration minimal and transparent.

Security Tips

  • Change the default credentials immediately after installation.
  • Use reverse proxy (e.g. Nginx) and enable HTTPS with Let’s Encrypt.
  • Regularly rotate access tokens or use service accounts for apps.

Conclusion

MinIO is a powerful and lightweight solution for anyone looking to deploy self-hosted object storage. It’s perfect for developers, DevOps engineers, or sysadmins looking to move away from vendor lock-in and take control of their data.

With just a few lines of Docker and minimal config, you now have your own secure, S3-compatible object store — ideal for backups, logs, or media files.

Power Your Projects with vpszen.com VPS Solutions

Looking for reliable hosting to run your Linux servers and host your next big project? VpsZen.com has you covered with top-tier VPS options tailored to your needs.
Choose from ARM64 VPS Servers for energy-efficient performance, or Root VPS Servers for virtual servers with dedicated resources.