* 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.
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!
Addon informations
Thanks to everyone having starred my repo! To star it click on the image below, then it will be on top right. Thanks!
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.
- 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)
- Install this add-on.
- Click the
Savebutton to store your configuration. - Set the add-on options to your preferences
- Start the add-on.
- Check the logs of the add-on to see if everything went well.
- 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:
- Local drives: See Mounting Local Drives in Addons
- Remote shares: See Mounting Remote Shares in Addons
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:
- Custom scripts: See Running Custom Scripts in Addons
- env_vars option: Use the add-on
env_varsoption to pass extra environment variables (uppercase or lowercase names). See https://github.com/alexbelgium/hassio-addons/wiki/Add-Environment-variables-to-your-Addon-2 for details.
Support
Create an issue on github

