a bit more than just a calendar but @nextcloud can be run on your own server or hosted by your trusted provider of choice and can also be used to sync your calendar (as well as other things).
I recently set up one for myself through a hosting service and it was simple enough. They also have at least a decent documentation for stuff.
I’m sure there is more out there though.