MinIO is an object storage. I like it a lot and was thinking about using it with Nextcloud. Let’s see
I decided to use my distributed MinIO system as external storage. I’m currently using Sidekick to loadbalance to the MinIO nodes.
This works pretty fine; tested with an NGINX Loadbalancer, Sidekick and tested with direct access to one of my MinIO systems. Best / fastest results I got with Sidekick btw.
However, I was running into several Nextcloud bugs (which might or might not be related to using object storage). I noticed that it is really important to set “check for changes” to “never”. Otherwise it keeps synchronizing and synchronizing and synchronizing and … checking. With no end.
Another thing I noticed is that I had trouble when I enable Object Locking in MinIO. In an older version I also had trouble with versioning. But I haven’t tested with the current nextcloud version, yet because I don’t need versioning.
Pretty cool isn’t it?
Update 26.03.24: You should test this a lot before using it in production environments. It took me a long time to debug issues with the S3 implementation of Nextcloud. Uploading 1 GB of photos using the Auto-Uploader of the Nextcloud Android App will cause corrupt photos if S3 is used as external storage like shown above. I believe the problem is just about the upload part.
After days of trying to debug this and trying everything like disabling chunking, increasing timeouts, setting up everything again, reading my way through hundreds of github issues… I finally tested without s3 – The problems aren’t reproducible. Then I tested with s3fs and goofys – The problems aren’t reproducible neither.
I was thinking that maybe the loadbalancing is the cause for this problems so I tried with Sidekick, with Nginx instead of Sidekick, without, with only 1 upstream, with 4 upstreams. There would always be some photos which were corrupt after auto-upload.
s3fs/goofys should not be used for something like this (s3 is objectstorage, there are several disadvantages of using something like s3fs – performance is just one of these). However, for me this is the only working way to not have corrupted files after auto upload.