I've gone down the route of self hosted cloud. Last year I decided to have a go with NextCloudPi. It took a few goes to get things right. From time to time it has gone a bit cranky and needed a bit of maintenance though no data has been lost and backups have worked as hoped for when needed. It's a working alternative to giving my data to someone else to look after and manage. A satisfying endeavour.
Needed a router that could configure Port Forwarding and NAT loopback. A Raspberry pi. I went with the 3+ with power supply. A couple of external hard drives (Seagate 1TB). A USB power hub. A USB stick (16G). I had a screen and keyboard for the RaspberryPi. It's handy though not entirely necessary.
The installation instructions here were helpful. Notable change was to not bother with an SD card. The 3+ will boot from a USB drive so just used that. I believe a USB stick is more reliable than an SD card for this purpose.
The database is on the USB stick. The data directory (my files/music etc) is on HD1 along with scheduled snapshots to revert back to if and when needed. The data is backed up to HD2 via synced snapshots from those on HD1. The database is also on a scheduled back up to this drive along with the configuration files for the NCP install. Instructions for doing this are here.
It totally serves the purpose I wanted it for. It's FOSS. Contacts, calendar and tasks synced between devices. Files accessible anywhere and backed up to external storage. I can stream my own music. There's the ongoing satisfaction of having it work. I love it! Big thanks to Nacho Parker at ownyourbits for the hard work of putting this out there.