

If you're running it manually, you can write a script to stop and restart the server and set a cronjob up, etc. If you're running calibre's server via a systemd service, it's as simple as adding a cronjob or systemd timer to restart the calibre service. So you mostly need to automate restarting the calibre server.

This makes the server effectively "read-only" but I'm willing to live with that for safety. I handle this by programmatically copying the "real" library database to a temporary location on my server system, and pointing the server system at the local copy. Be careful, though, as calibre isn't intended to allow multiple instances to edit the same library at the same time and that can lead to corruption.

This works to update the server as long as the server instance can see the actual library database (metadata.db). I do something similar, and all I do is restart the calibre server at fixed intervals.
