github new-usemame/Calibre-Web-NextGen v4.0.40
v4.0.40 — opt-in support for user-installed Calibre plugins during ingest

latest releases: v4.0.170, v4.0.169, v4.0.168...
one month ago

What changed

Operators can now install their own Calibre plugins for the ingest pipeline. Closes a long-standing upstream feature request (CWA #243, 11 reactions / 15 comments going back to early 2025).

The feature is off by default. To enable, add an environment variable to your docker-compose.yml:

services:
  calibre-web-automated:
    environment:
      - CWA_CALIBRE_USER_PLUGINS=true

When enabled, every Calibre subprocess (the one that runs during ingest, full-library conversion, cover enforcement, and metadata embed) loads any plugin .zip files placed under /config/.config/calibre/plugins/.

Operator workflow

# 1. Find your local Calibre plugins directory
#    Linux:   ~/.config/calibre/plugins/
#    macOS:   ~/Library/Preferences/calibre/plugins/
#    Windows: %AppData%/calibre/plugins/

# 2. Copy your .zip plugins into the CWA volume
#    (the dir is auto-created on first start when the env var is set)
cp ~/.config/calibre/plugins/*.zip /path/to/cwa/config/.config/calibre/plugins/

# 3. Restart the container so the bootstrap creates the directory and
#    so calibre subprocess invocations pick up the new HOME setting
docker compose pull calibre-web-automated
docker compose up -d --force-recreate calibre-web-automated

The next ingest run that triggers a format conversion uses your plugins.

Why opt-in

The previous behavior had HOME=/config hardcoded in every Calibre subprocess invocation, which meant any third-party Python in /config/.config/calibre/plugins/ was silently always loaded — regardless of operator intent. That is now opt-in deliberately. Existing deployments that didn't set the env var see no behavior change; the path is inert until you ask for it.

To get the fix

docker pull ghcr.io/new-usemame/calibre-web-nextgen:v4.0.40

Or if you pin :latest, a docker compose pull && docker compose up -d will pick it up.

Credit

Reported originally by @AllegedlyUndead. Substantial testing notes from @ErikThorsell, @etfeet, @jonasherzfeld, @pavel-pi.

Anything else off?

Open an issue — the tracker stays watched.


Full changelog: v4.0.39...v4.0.40

Don't miss a new Calibre-Web-NextGen release

NewReleases is sending notifications on new releases.