Spoiler alert: You don’t have to sell your soul to AWS to get an S3 bucket. Espcially if you want to practice ETCD backups to S3 in your homelab

MinIO is a lightweight, blazing-fast object storage server that speaks S3 API fluently. Perfect for backing up your cat photos or running serious enterprise workloads. Let’s get it installed on Linux.


🚀 Prerequisites#

  • A Linux server (Ubuntu, CentOS, Rocky, Debian…pick your flavor)
  • curl installed
  • systemd (unless you like living dangerously)

🛠️ Step 1: Create a MinIO User#

Let’s avoid running everything as root (because root is overworked and grumpy).

sudo useradd -r minio-user -s /sbin/nologin

Create Directories#

sudo mkdir -p /usr/local/bin
sudo mkdir -p /etc/minio
sudo mkdir -p /var/minio
sudo chown minio-user:minio-user /var/minio

Download the MinIO Binary#

Using the offical Release:#

curl -O https://dl.min.io/server/minio/release/linux-amd64/minio

Make it executable:#

chmod +x minio
sudo mv minio /usr/local/bin/

Create systemd service#

sudo nano /etc/systemd/system/minio.service

Paste the following in:#

[Unit]
Description=MinIO Object Storage
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target

[Service]
User=minio-user
Group=minio-user
ExecStart=/usr/local/bin/minio server /var/minio --console-address ":9001"
Restart=always
LimitNOFILE=65536
Environment="MINIO_ROOT_USER=minioadmin"
Environment="MINIO_ROOT_PASSWORD=supersecretpassword"

[Install]
WantedBy=multi-user.target

Tip: Change the credentials to something better than supersecretpassword, unless you want your neighbors hosting their pirated movies on your box.#

Reload Systemd and Start MinIO#

sudo systemctl daemon-reload
sudo systemctl enable minio
sudo systemctl start minio

Check Status#

sudo systemctl status minio

Open with your fav browser#

http://<your-server-ip>:9001

Of course this is not as fun as having it secured with SSL#

Lets create a cert directory#

sudo mkdir -p /etc/minio/certs

Make sure your certs end up in the below directory and named exactly as below, or you’ll be in for a fun evening.#

/etc/minio/certs/public.crt
/etc/minio/certs/private.key

Restart MinIO#

sudo systemctl restart minio

Lets test it out#

http://<your-server-ip>:9001

🎉 Conclusion#

That’s it! You’ve got your own S3-compatible object storage server humming along on Linux. Use it for:#

  • Backups

  • Docker Registry storage

  • Kubernetes persistent volumes

  • Archiving your questionable memes