Poster announcing the bootleg library, July 2019

calibre-web configuration[edit]

This is the configuration for calibre-web to listen on localhost:

--- a/cps/server.py
+++ b/cps/server.py
@@ -152,7 +152,7 @@ class WebServer(object):
        http_server = HTTPServer(WSGIContainer(self.app),
                                 max_buffer_size=209700000,
                                 ssl_options=self.ssl_args)
-        http_server.listen(self.listen_port, self.listen_address)
+        http_server.listen(self.listen_port, address="127.0.0.1")
        self.wsgiserver = IOLoop.instance()
        self.wsgiserver.start()
        # wait for stop signal

Creating a unit file[edit]

You can easily create a unit file for calibre to run on boot on a modern (systemd) based Linux system. This means it will also restart after a crash. Create the file /etc/systemd/system/calibre-server.service with the contents shown below:

[Unit]
Description=Calibre.
After=syslog.target network.target

[Service]
Type=simple
User=pi
Group=pi
WorkingDirectory=/home/pi/calibre-web
ExecStart=python cps.py
Restart=always

[Install]
WantedBy=multi-user.target

The User and Group should be the same ones that own the files in the calibre library directory. It's generally not a good idea to run the server as root. Also change the path to the calibre library directory to suit your system.

Starting the calibre-server service[edit]

Run:

sudo systemctl start calibre-server

to start the server.

Stopping the calibre-server service[edit]

Stopping the service is as easy as running:

sudo systemctl stop calibre-server

Checking the status of the calibre-server service[edit]

Check its status with:

sudo systemctl status calibre-server

Enabling the calibre-server service to start at boot[edit]

To make it start at boot, run:

sudo systemctl enable calibre-server

Note[edit]

The calibre server does not need a running X server, but it does need the X libraries installed as some components it uses link against them.

The calibre server also supports systemd socket activation, so you can use that, if needed, as well.