This is a quick guide on creating using the NXRM S3 blob store with Minio's S3 implementation. Disclaimer: Using Minio with NXRM is not officially supported by Sonatype.
Follow the quick start guide here: https://github.com/minio/minio. For my testing, I started minio with docker with
docker pull minio/minio
docker run -p 9000:9000 -e "MINIO_ACCESS_KEY=mykey" -e "MINIO_SECRET_KEY=mysecret" minio/minio server data
Minio will helpfully print the credentials you need to the console once it has been started. Recent minio docker images don't print out credentials any more. Supply them as environment variables as above.
Obviously you can skip this step if you already have Minio running.
NXRM will create a bucket automatically on AWS S3, but it doesn't work quite right with Minio. Create the bucket in the Minio web console.
Your best bet is the latest version of NXRM. NXRM 3.12 and later support S3 out of the box and is highly recommended. For older versions of NXRM 3, you can install the unbundled version of the plugin from https://github.com/sonatype/nexus-blobstore-s3, but this isn't being actively supported anymore. Use the bundled version and save yourself some headaches!
There are lots of configuration options here, and you have to get them just right for Minio to work.
- Name: Enter a name (e.g. test-blobstore)
- Bucket: Enter the name of the bucket you created in step 2 (e.g. test)
- Access Key ID: Enter the access key id you provided to docker (e.g. "mykey")
- Secret Access Key: Enter the secret access key you provided to docker (e.g. "mysecret")
- Session Token: leave blank
- Assume Role ARN: leave blank
- Region: Choose us-east-1
- Endpoint URL: Enter the Minio API URL (e.g. http://127.0.0.1:9000)
- Expiration Days: Enter -1
- Signature version: Leave as default
Thats it! Hope this helps.
Minor note.
There is one more useful option:
Configure the client for use path-style access:
[x] Setting this flag will result in path-style access being used for all requests
I use one node in-house minio installation accessed by domain name with https: https://minio.corp.example.com. If leave this option turned off then S3 client use domain name based access to S3: bucket-name.minio.corp.example.com for example. So need to 1) tune DNS: all buckets point to minio node and 2) use wildcard site certificate like *.minio.corp.example.com for minio. I think it's works but I not tested this. Because it's seemed too complicated for me. So I used this option.
Nexus version: 3.15