Personal e-Book Library

I’ve been acquiring ebooks for several years, and use Calibre to manage file metadata. It works great, and has for a long time. A few years ago I migrated from Calibre running on my laptop to Calibe-Web running on the server.

Calibe-Web

Some time ago there was a fork of calibre’s internal web frontend to a standalone server, which was then forked to calibre-web. It’s very much like Plex for eBooks, and mostly “just works”.

Installation in SmartOS Zone

Installation is really quite simple, if you’re running Linux. If you’re not, it can be a bit more involved. If you’re running on limited hardware resources, it’s a bit more complicated.

I’m on Illumos, with a small VM/Zone. Consequently, it’s a bit more involved that the upstream directions. My process is as follows:

  1. Create a dedicated zone, with passthrough for the library
    • Library lives outside the zone, so quota can be small
    • image_uuid should be current-ish
    • I was using 256mb RAM. 512 is better
    • json definition attached.
  2. Install python, pip via pkgsrc
    • pkgin in py312-pip
  3. Install python support libraries via pkgsrc
    • pkgin in py312-lxml
    • pkgin in py312-cryptography-41.0.5
    • pkgin in py312-netifaces-0.11.0nb1
  4. Install calibreweb via pip
    • pip3 install calibreweb
  5. Install SMF manifest (sample attached)
    • svccfg import cps-library.xml
  6. Initial configuration (only for very first install)
    • Create user(s)
    • Import book files
    • etc.

Reverse Proxy

Calibre-Web is, surprisingly, a web application. To access it, I have an nginx reverse proxy configured to a) provide TLS termination and b) share multiple services via a single IP via location forwarding.

Upgrading

Upgrading can sometimes be done automatically be the internal update mechanism (It’s under the “admin” menu). If that fails, delete the VM/Zone and recreate it as per the install guide. The app configuration will carry forward from the library passthrough, so the final config step from the installation will be unneccesary.