There is an old way to do this using webdav and private servers. There were a few bugs, like not completely deleting deleted events. My whole family each had a webdav ical calendar updated every 5 minutes. We’ve now all converted to iCloud.
I felt it was a pain, but you can define a ‘private’ server on ical. Setup a webdav directory in panel, then under ical preferences use the webdav directory you setup.
My $.02 iCloud is way better