As of the other year when I looked into it S3 backups were borked unless you paid Amazon. Has this been fixed so S3 works with other providers such as MinIO?
I would really like to do S3 backups instead of rsync. So it would be great if S3 is now working.
I’ve got it fully working with minio behind a NAT. There were two stubborn obstacles to overcome.
despite the suggestion in the gui do not enter the http(s):// prefix in de target name, because https:// is hardcoded in miab. Also, you must have both a bucket AND targetfolder present in minio before miab can connect correctly (“OK” response).
any “signature mismatch errors” are likely not caused by miab (if you have the access keys correct), but by a faulty reverse proxy configuration if your minio server is behind your NAT. I tried lots of non-working examples from the internet.
In the reverse proxy config you need to provide for correct “http header forwards” (or some such). The following works for me in apache2 on both ports 443 and 80 (without certificates, duh).
ServerName minio.yourdomain.com
ProxyRequests Off
ProxyVia Block
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://localhost:9000/
ProxyPassReverse / http://localhost:9000/
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/<your certname here>/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/<your certname here>/privkey.pem
</VirtualHost>
<VirtualHost *:443>
You can repeat this with a different domainname for the minio web interface on port 9001.
It took me some time to figure this all out. Miab documentation does not mention this, with is fair, because it is not strictly a miab problem. Anyway, I hope my post will save someone with miab and minio some time.
The reverse proxy for the web interface appears to require “websockets”, as described in [this github topic](https://github.com/minio/minio/discussions/16722)
Initially the webconsole worked as described with/without the proxy configuration above, but later on the console would not display the contents of the bucket anymore.
I solved it with the following apache2 virtual host.
<VirtualHost *:443>
ServerName minioweb.yourdomain.com
RewriteEngine on
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://localhost:9001/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*) http://localhost:9001/$1 [P,L]
ProxyRequests Off
ProxyVia Block
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
# ProxyPass for Node.js application
ProxyPass / http://localhost:9001/
ProxyPassReverse / http://localhost:9001/
ProxyPass /ws ws://localhost:9001/ws
ProxyPassReverse /ws ws://localhost:9001/ws
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/<certname here>/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/<certname here>/privkey.pem
</VirtualHost>