Here's an update on my experience so far, perhaps it will be useful for people who have similar plans.
AIMS:
* I want my Calibre library to be always available and not at risk of being turned off by a user.
* I want a number of different users to be able to be able to access the calibre library using an interface designed for calibre, but without them having to install any specific software.
* I want my users to be able to access the library from any device and retain any of their personal settings.
* I want a single admin user (me) to be able to manage the library to keep metadata clean, remove duplicates, etc.
CONSEQUENTIAL ARCHITECTURE:
* Install calibre on a headless server at home, which is in any case always on (so won't represent additional material energy consumption) and is not in danger of being turned off by a user (so calibre is more likely to be always available). This will provide calibre-web with the tools and APIs it needs to serve the library to the users.
* Install calibre-web on the same headless server to provide the users with a great front-end via a browser.
* Optional: Use Nginix to provide an easy url (without port numbers) for my users to access calibre-web.
LIMITATION:
With the setup described above, my ability to manage the library is very limited. Having played with the calibre GUI on a separate machine and an isolated copy of my library, I now realise the power of tools provided by calibre and third-party plugins to clean and maintain my library. Calibre provides some control through its calibredb command (and others), but plugins do not necessarily provide CLI control and in anycase the presentation of the data in the GUI can be really useful when cleaning and maintaining your library. However, my calibre installation is on a headless server, so I don't have a desktop environment and can't access the GUI.
EXPERIMENTAL and therefore not supported usage:
Because I am now hooked on the GUI, I am planning to install Calibre on a desktop, and point that installation to the same library that is being managed by the server. This is not recommended practice because it can lead to data loss if one library (i.e. metadata.db file) is being managed by two instances of calibre. My workaround will be to ensure that I shut the headless calibre server down before I open the calibre application on the desktop (and vice versa). That way only one calibre server will be interacting with the library at any one time.
Downsides:
* The only protection I'll have from my own idiocy (e.g. forgetting to shutdown the server) will be regular backups.
* Users won't be able to access calibre-web while I'm doing library maintenance stuff with the desktop calibre.
Upsides:
* I will use the desktop version of calibre to add books to the library and ensure consistent, clean metadata.
ALTERNATIVE OPTIONS instead of running an additional calibre on a desktop:
1) use a 'calibredb add' cron job to monitor and then automatically add to the library any books dropped into a designated directory.
This was working well, before I realised that my metadata was starting to get a bit messy - for example creating two authors J.R.R. Tolkein and J. R. R. Tolkein (with spaces and without). If that doesn't really matter to you, then creating a book black hole like this is actually a really convenient option.
2) Install some sort of desktop environment on my server and then remote into that whenever I want access to the calibre GUI.
I don't really see too much of a problem with this, but don't have much experience of putting desktop environments on my servers and so didn't want to go to the hassle of getting it right.
I'll try to remember to report back if everything gets hosed, to warn you not to follow in my footsteps!.
|