Setup Minio as a S3 Target

Overview

The goal is to stand up a Minio instance as a S3-Compatible Repo for Veeam. Minio in this configuration is intended for lab purposes. We are using Docker to setup Minio since it allows for many different systems to deploy on and allows you spin this up quickly.


Prerequisites:


I'm assuming you will be using a Linux VM to run the Minio app. This can also be run on Docker Desktop on Windows if that's more convenient. I currently have this running on my Synology NAS inside a Docker container but this method can be used on any host that can run Docker and has access to direct storage.

Step 1 - Install Docker on the host

I'm using a Synology NAS that has a Docker app installed. If you're using Ubuntu, then you'll need to install docker from the command line.

Open a terminal (I recommend Ubuntu for new users)


$> sudo apt install docker.io docker-compose

Step 2 - Deploy the Minio App

Create a local folder on your system named "minio" with subfolders "minio" and "data". We will pass these subfolders into the Minio app that holds the configuration and data we need to persist the container restarting.


$> mkdir -p Desktop/minio/minio Desktop/minio/data && cd Desktop/minio


Here's my command that you can tweak to your environment.


$> sudo docker run \
--name minio -d \
-p 9000:9000 \
-p 9001:9001 \
-v /path/to/localfolder/data:/data \
-v /path/to/localfolder/minio:/root/.minio \
minio/minio server /data --console-address ":9001"


  • Change "/path/to/localfolder" above to the path to your "minio" folder (ex. /home/username/Desktop/minio)

  • In the terminal, copy and paste the above command and press ENTER

  • The minio website has more options on deploying Minio within Docker (ex. specifying username/password)

Step 3 - Check if Minio is Running

  • After you run above command, Minio should be running on the linux host at ports 9000 (API) & 9001 (web interface)

  • Check the external IP address of the Linux box by running:


$> ip addr show


  • Note this IP address for later

  • Check if you can access the web interface, open a browser on your laptop and go to http://ip-address:9001

  • The default login is minioadmin / minioadmin

Step 4 - Create Self-Signed Certificate

Minio is now up, but Veeam requires a signed HTTPS certificate to operate correctly. We'll create a self-signed certificate real quick.


We need the internal IP Address that docker is using: (should be similar to "172.17.0.2")


$> sudo docker inspect minio | grep "IPAddress"


This link shows you the multiple options on how to create a self-signed cert.


Create the private key (section 3.2.1) if you're using Linux.

$> sudo apt install openssl

$> openssl ecparam -genkey -name prime256v1 | openssl ec -out private.key


Create the self-signed cert (section 3.2.3)


$> nano openssl.conf


Copy/paste the below text into the text file


[req]

distinguished_name = req_distinguished_name

x509_extensions = v3_req

prompt = no

[req_distinguished_name]

C = US

ST = VA

L = Somewhere

O = MyOrg

OU = MyOU

CN = MyServerName


[v3_req]

subjectAltName = @alt_names


[alt_names]

IP.1 = 127.0.0.1

DNS.1 = localhost


Set IP.1 and/or DNS.1 to point to the correct IP/DNS addresses:

    • **important the IP address is what we found earlier (ex. 172.17.0.2)


To save and quit, hold the "Ctrl" key and the "X" key. Then press the "Y" key. Then press the "Enter" key.


$> openssl req -new -x509 -nodes -days 730 -key private.key -out public.crt -config openssl.conf

Step 5 - Copy the generated certificate files to the Minio app

We now have 2 files "public.crt" and "private.key"


Copy these files to the minio/certs folder that is being passed into the Docker Minio app


$> cp public.crt private.key /home/username/Desktop/minio/minio/certs


Restart the Minio app to detect the certificate files


$> sudo docker restart minio

Step 6 - Check if Minio is Running

Step 7 - Create Bucket

  • Inside the minio webpage, select Object Browser on the left

  • Click the + button on the top right corner

  • Create the bucket with a name. I chose "veeam"

  • Remember the name, we'll need this to enter into the Veeam console

Step 8 - Setup Minio Repo in Veeam Console

  • In the Veeam console, create a new backup repository

  • Select Object Storage -> S3 Compatible

  • Enter the name "minio" or another name

  • Enter for "Service Point" --> "https://ip-address:9000"

  • Enter for "Credentials" --> "minioadmin / minioadmin"

  • Select the "Bucket" --> "veeam"

  • Create a new Folder --> "backup" (or whatever you want)

Step 9 - Configure Scale Out Backup Repository Settings

  • You can now setup a Scale Out Backup Repo with Minio as the Capacity Tier

  • The SOBR allows you to move data from multiple tiers (Performance -> Capacity) based on retention policies you set