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
Open a browser at https://ip-address:9001
If you can login correctly then it's working!
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