Skip to content

Calibre-Web Automated

Ebook library management with automatic ingestion and format conversion.

Quick Reference

Field Value
URL https://books.bogocat.com
Internal http://10.89.97.50:8083
Location arr-stack VM (Docker)
Auth Authentik SSO (native OIDC)
Image crocodilestick/calibre-web-automated:dev

Features

  • Web-based ebook library (Calibre backend)
  • Automatic book ingestion from watch folder
  • Format conversion (EPUB, MOBI, AZW3, KEPUB, PDF)
  • Kobo/KOReader sync support
  • Native OAuth2/OIDC authentication
  • Send to Kindle/email

Configuration

Docker Compose

Location: /opt/arr-stack/docker-compose.yml on VM 100

calibre-web:
  image: crocodilestick/calibre-web-automated:dev
  container_name: calibre-web
  environment:
    - PUID=1000
    - PGID=1000
    - TZ=America/New_York
    - NETWORK_SHARE_MODE=true
  volumes:
    - /opt/arr-stack/configs/calibre-web:/config
    - /mnt/media/calibre:/calibre-library  # MUST be /calibre-library - CWA requirement
    - /mnt/media/books_ingest:/cwa-book-ingest
  ports:
    - "8083:8083"
  restart: unless-stopped

Important: CWA requires the Calibre library (containing metadata.db) to be mounted at /calibre-library. Do not change this internal path.

Authentik OIDC Setup

  1. Create OAuth2/OpenID Provider in Authentik:
  2. Name: calibre-web-provider
  3. Redirect URI: https://books.bogocat.com/login/generic/authorized
  4. Scopes: openid email profile groups

  5. Create Application:

  6. Name: Calibre-Web
  7. Slug: calibre-web
  8. Provider: calibre-web-provider

  9. Configure in CWA Admin → OAuth Settings:

  10. Enable Generic OAuth
  11. Client ID: (from Authentik)
  12. Client Secret: (from Authentik)
  13. Metadata URL: https://auth.bogocat.com/application/o/calibre-web/.well-known/openid-configuration
  14. OAuth Redirect Host: https://books.bogocat.com
  15. Scopes: openid email profile groups
  16. Admin Group Name: calibre-admins (must exist in Authentik)

Known Issue: OAuth Redirect Loop (PR #827)

The dev branch may have a redirect loop bug. Fix by patching in-container:

docker exec calibre-web sed -i 's/abort(response)/return response/g' \
  /app/calibre-web-automated/cps/oauth_bb.py
docker restart calibre-web

This fix is ephemeral - lost on container recreation. Monitor PR #827 for upstream merge.

Paths

Container Path Host Path Purpose
/config /opt/arr-stack/configs/calibre-web App database, settings
/calibre-library /mnt/media/calibre Calibre library (must use this path)
/cwa-book-ingest /mnt/media/books_ingest Auto-import folder

Adding Books

  1. Auto-import: Drop files in /mnt/media/books_ingest/ - CWA processes automatically
  2. Web upload: Use the Upload button in the web UI
  3. Direct: Add to Calibre library folder (requires manual metadata refresh)

Admin Access via Groups

CWA resets user roles on each OAuth login. To persist admin:

  1. Create calibre-admins group in Authentik
  2. Add yourself to the group
  3. In CWA OAuth Settings, set Admin Group Name to calibre-admins
  4. Add groups to OAuth scopes

Troubleshooting

Books not showing

Check library path in Admin → Basic Configuration → "Location of Calibre Database" should be /calibre-library

OAuth login fails with redirect loop

Apply PR #827 fix (see above) or wait for upstream merge

User not admin after login

Configure group-based admin assignment (see Admin Access section)

Migration Notes

Migrated from LXC 122 to arr-stack VM on 2025-12-17. Old LXC can be stopped/removed.