Files
hassio-addons/calibre_web
Alexandre c8ca11604e fix(calibre-web): document the optional features, drop the dead calibre install (#3032)
* feat(calibre-web): document the optional features and drop the dead calibre install

Issue #1143 asks how to add Calibre-Web's optional extras (metadata, kobo,
...) to the add-on. They are already there: the LinuxServer base image pip
installs optional-requirements.txt alongside requirements.txt into its
/lsiopy virtualenv, so every extra ships enabled. Listing the .dist-info
directories of the published image confirms scholarly, rarfile, py7zr,
mutagen, jsonschema, python-ldap, flask-dance, PyDrive2, comicapi and the
rest are present. Running pip install calibreweb[...] in the container just
fetches an unused second copy from PyPI and is thrown away when the
Supervisor recreates the container.

What actually hides the reporter's cover fields is Calibre-Web's own
gating: book_edit.html only renders 'Fetch Cover from URL' and 'Upload
Cover from Local Disk' when current_user.role_upload() and g.allow_upload
are both true, i.e. Enable Uploads plus the user's Upload permission. The
README now says so.

While checking where the Calibre binaries come from, the Dockerfile step
that claimed to install them turned out to be dead. The image has no wget,
only curl, so 'wget ... | sh /dev/stdin install_dir=/opt/calibre' loses
wget to exit 127, hands sh an empty script, and the pipeline still exits 0.
In the published amd64 image that RUN's layer decompresses to an empty tar
and no layer contains anything under /opt/calibre. Repairing it with curl
would not help: calibre's installer then hard-exits on the missing libEGL,
libOpenGL and libxcb-cursor that the universal-calibre mod apt-installs
itself, so the build would start failing and the image would grow by about
a gigabyte for binaries the mod already provides at start. The step is
removed and a comment records where the binaries really come from.

Refs https://github.com/alexbelgium/hassio-addons/issues/1143

* docs(calibre-web): tighten the optional-features wording after review

Say pip install calibreweb[...] is unsupported and can disturb the pinned
dependencies rather than calling the result unused, scope the extra-package
advice to compatible packages, list the calibre binaries as examples rather
than as a set all three operations need, and mark the docker mod as the
default rather than a certainty since DOCKER_MODS can be overridden.
2026-08-31 07:18:40 +02:00
..
2025-08-31 23:06:36 +00:00
2025-08-31 23:06:36 +00:00

Home assistant add-on: Calibre-web

I maintain this and other Home Assistant add-ons in my free time: keeping up with upstream changes, HA changes, and testing on real hardware takes a lot of time (and some money). I use around 5-10 of my >110 addons so regularly I install test machines (and purchase some test services such as vpn) that I don't use myself to troubleshoot and improve the addons

If this add-on saves you time or makes your setup easier, I would be very grateful for your support!

Buy me a coffee Donate via PayPal

Addon informations

Version Ingress Arch

Codacy Badge GitHub Super-Linter Builder

Thanks to everyone having starred my repo! To star it click on the image below, then it will be on top right. Thanks!

Stargazers repo roster for @alexbelgium/hassio-addons

downloads evolution

About


Calibre-web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. It is also possible to integrate google drive and edit metadata and your calibre library through the app itself.

This addon is based on the docker image https://github.com/linuxserver/docker-calibre-web

Installation


The installation of this add-on is pretty straightforward and not different in comparison to installing any other add-on.

  1. Add my add-ons repository to your home assistant instance (in supervisor addons store at top right, or click button below if you have configured my HA) Open your Home Assistant instance and show the add add-on repository dialog with a specific repository URL pre-filled.
  2. Install this add-on.
  3. Click the Save button to store your configuration.
  4. Set the add-on options to your preferences
  5. Start the add-on.
  6. Check the logs of the add-on to see if everything went well.
  7. Open the webUI and adapt the software options

Configuration

Webui can be found at http://homeassistant:PORT or through the sidebar using Ingress. The default username/password is described in the startup log. Configurations can be done through the app webUI, except for the following options.

Default name: admin Default password: admin123

Options

Option Type Default Description
PGID int 0 Group ID for file permissions
PUID int 0 User ID for file permissions
TZ str Timezone (e.g., Europe/London)
DOCKER_MODS str Docker modifications to apply
OAUTHLIB_RELAX_TOKEN_SCOPE str OAuth token scope relaxation
ingress_user str Username for ingress authentication
localdisks str Local drives to mount (e.g., sda1,sdb1,MYNAS)
networkdisks str SMB shares to mount (e.g., //SERVER/SHARE)
cifsusername str SMB username for network shares
cifspassword str SMB password for network shares
cifsdomain str SMB domain for network shares

Example Configuration

PGID: 0
PUID: 0
TZ: "Europe/London"
DOCKER_MODS: "linuxserver/mods:universal-calibre"
ingress_user: "admin"
localdisks: "sda1,sdb1"
networkdisks: "//192.168.1.100/books"
cifsusername: "bookuser"
cifspassword: "password123"
cifsdomain: "workgroup"

Mounting Drives

This addon supports mounting both local drives and remote SMB shares:

Optional Calibre-Web features

Calibre-Web documents optional extras that a manual installation adds with pip install calibreweb[metadata] and similar. You do not need to install anything here: the LinuxServer base image this add-on builds on installs Calibre-Web's requirements.txt and its full optional-requirements.txt into the application's virtualenv, so the gdrive, gmail, goodreads, ldap, oauth, metadata, comics and kobo dependencies are all present already. Running pip install calibreweb[...] inside the container is not a supported way to enable them: it installs the PyPI distribution of Calibre-Web over an installation that already has those dependencies, and it can disturb the versions the base image pinned. It is also thrown away, because the Supervisor recreates the add-on container on restart.

Optional features are switched on in the Calibre-Web web interface, not in the add-on options, under Admin -> Basic Configuration -> Feature Configuration (for example Enable Uploads, Enable Kobo sync, Use Goodreads).

Book covers. The Fetch Cover from URL and Upload Cover from Local Disk fields only appear on a book's Edit Metadata page when Enable Uploads is ticked in Feature Configuration and the logged-in user has the Upload permission (Admin -> the user -> Upload). A missing Python package is not what hides them.

Conversion, metadata embedding and the other Calibre integrations use command-line binaries such as ebook-convert, ebook-meta and calibredb. Those are installed at start by the linuxserver/mods:universal-calibre docker mod, which is the shipped default of the DOCKER_MODS option. If you set DOCKER_MODS yourself, keep linuxserver/mods:universal-calibre in the list (mods are separated by |) or those binaries disappear.

Other compatible Python packages can be installed from the add-on's custom script (see the section below); pip there points at Calibre-Web's own virtualenv. Such a script runs on every start, and it has to, since the container's writable layer does not persist.

Custom Scripts and Environment Variables

This addon supports custom scripts and environment variables:

Support

Create an issue on github

Illustration


illustration