Nextcloud AIO in docker is dead simple and has been reliable for me.
The sync client is capable of syncing the whole tree as remote pointers that didn’t take space until you access the file then it downloads it local. You can also set files to always be local.
No but less power hungry than a full desktop. It’s a good trade-off between power and performance.