So, I understand this is Ian only, I will leave out NextCloud.
I would personally say Ceph. This is a storage solution meant to be spread among a bunch of different hosts. Basically, it operates on RAID 5 principles AND replicated storage.
Personal setup: single host 12 ea. 10TB HDDs.
To start, it does go ahead and generates the parity data for the storage bucket. On top of that, I am running a X2 replicated bucket. Now since I am running a single host, this data is replicated amongst OSDs(read HDDs), but in a multiple host cluster it would be replicated amongst multiple hosts instead.
One of the benefits to an array like this is that other types of services are easily implemented. NFS overall is pretty good, and it is possible to implement that through the UI or command line. I understand that Samba is not your favorite, but that is also possible. Personally, I am using Rados to connect my Apache Cloudstack hypervisor.
I will admit, it is not the easiest to set up, but using docker containers to manage storage is an interesting concept. On top of that, you can designate different HDDs to different pools, perhaps you want your solid state storage to be shared separately. Ceph is also capable of monitoring your HDDs with smartctl.
Proper installation does give you a web UI to manage it, if some one of your skill even needs it. ;)