- Features 🪄
- Releases 🆕
- Roadmap 🛣️
- How to Install: 📖
- Usage 🔧
- For Developers 🚀
- Further Development 🏗️
- Support / Buy me a Coffee ☕
Calibre, while a fantastic tool for its age, has several problems when containerised, including its reliance on a KasmVNC server instance for the UI, which is near impossible to use on mobile and is relatively resource-heavy if you're running a small, lower power server like I am.
For many, Calibre-Web has really swooped in to save the day, offering an alternative to a containerised Calibre instance that's resource-light and with a much more modern UI to boot.
However, when compared to full-fat Calibre, it unfortunately lacks a few core features leading many to run both services in parallel, each serving to fill in where the other lacks, resulting in an often clunky, imperfect solution.
Calibre-Web Automated aims to be an all-in-one solution, combining the modern lightweight web UI from Calibre-Web with the robust, versatile feature set of Calibre, with a slew of extra features and automations thrown in on top.
CWA allows you to keep your ebook library accessible & organised and looks good while doing it 😎🦚
Modern & responsive Bootstrap 3 HTML5 interface | Comprehensive user management with per-user permissions | OPDS feed for ereader apps |
eBook metadata editing and deletion support | Metadata download from various sources (extensible via plugins) | eBook download restriction to logged-in users |
Public user registration support | Send eBooks to E-Readers with a single click | Sync Kobo devices with your Calibre library |
In-browser eBook reading support for multiple formats | Content hiding based on categories and Custom Column content per user | "Magic Link" login for easy access on eReaders |
LDAP, Google/GitHub OAuth, and proxy authentication support | Advanced search and filtering options | Multilingual user interface supporting 20+ languages |
- CWA currently supports automatic ingest of 27 different popular ebook formats
- Users can configure the services behavior to ignore and/or have certain formats automatically converted to other formats in the Admin Panel
- On by default though can be toggled of in the CWA Settings page, with EPUB as the default target format
- Available target formats include: EPUB, MOBI, AZW3, KEPUB & PDF
- Upon detecting new files in the Ingest Directory, if any of the files are in formats the user has configured CWA to auto-convert to the current target format,
- The following 28 file types are currently supported:
- .azw, .azw3, .azw4, .mobi, .cbz, .cbr, .cb7, .cbc, .chm, .djvu, .docx, .epub, .fb2, .fbz, .html, .htmlz, .lit, .lrf, .odt, .pdf, .prc, .pdb, .pml, .rb, .rtf, .snb, .tcr, .txtz
- In stock Calibre-Web, any changes made to a book's Cover and/or Metadata are only applied to how the book appears in the Calibre-Web UI, changing nothing in the ebook's files like you would expect
- This results in a frustrating situation for many CW users who utilise CW's Send-To-Kindle function, and are disappointed to find that the High-Quality Covers they picked out and carefully chosen Metadata they sourced are completely absent on all their other devices! UGH!
- CWA's Automatic Cover & Metadata Enforcement Feature makes it so that WHATEVER you changes you make to YOUR books, are made to the books themselves, as well as in the Web UI, making what you see, what you get.
- Say goodbye to clicking that edit button again, and again, and again just to remove or edit a single series!
- To use, simply navigate to the
Books List
page on the left hand side of the Web UI, select the books you wish to edit/ delete and use the buttons either above the table or within the headers to do whatever you need! - Courtesy of @jmarmstrong1207
- Worried what will happen if something goes wrong during one of CWA's automated functions? Don't be!
- By default, the originals all files processed by CWA are stored in
/config/processed_books
though this can be toggled in the CWA Settings panel
-
Ever had it where you're super excited to start reading your next book but for some reason, Amazon's Send-to-Kindle service just keeps rejecting it? Well no more!
-
Originally developed by innocenat, this tool corrects the following potential issues for every EPUB processed by CWA:
- Fixes UTF-8 encoding problem by adding UTF-8 declaration if no encoding is specified
- Fixes hyperlink problem (result in Amazon rejecting the EPUB) when NCX table of content link to
<body>
with ID hash. - Detect invalid and/or missing language tag in metadata, and prompt user to select new language.
- Remove stray
<img>
tags with no source field. - Resolves several EPUB compatibility issues, such as UTF-8 encoding, hyperlink problems, invalid/missing language tags, and stray image tags.
-
This ensures maximum comparability for each EPUB file with the Amazon Send-to-Kindle service and for those who don't use Amazon devices, has the side benefit of cleaning up your lower quality files!
-
Enabled by default but can be toggled in settings.
-
Files processed by the EPUB-Fixer service are by default automatically backed up to
/config/processed_books
however this can also be toggled in the settings. -
Bulk processing of whole library with progress tracking available in the Admin Panel
-
Available via both the Web UI and CLI
- This utility gives the user the option to either keep a copy of the original of all converted files in
/config/processed_books
or to trust the process and have CWA simply convert and replace those files (not recommended) - Full usage details can be found here
- Users can now make use of isbndb.com's huge database when fetching metadata for the books in their library!
- Access is being provided via ibdb.dev thanks to a generous donation to the community by @chad3814
- Hardcover is also currently in the process of being added to CWA as a Metadata Provider
- Ever wondered how many times CWA has been there for you in the background? Check out the CWA Stats page to see a fun list of statistics showing how many times CWA has been there to make your life just that little bit easier
- A database also exists to keep track of any and all enforcements, imports, conversions & fixes both for peace of mind and to make the checking of any bugs or weird behaviour easier
- Full documentation can be found below here
- Made to MASSIVELY simplify the setup process for both new and existing users alike
- New Users without existing Libraries: 🆕
- No library? No problem!
- New users without existing Calibre Libraries no longer need to copy and paste
metadata.db
files and point to their location in the Web UI, CWA will now automatically detect the lack of Library in your given bind and automatically create a new one for you! It will even automatically register it with the Web UI so you can really hit the ground running
- New or Existing Users with Existing Libraries:
- Simply bind a directory containing your Calibre Library (search is done recursively so it doesn't matter how deep in the directory it is) and CWA will now automatically find it and mount it to the Web UI
- Should you bind a directory with more than 1 Calibre Library in it, CWA will intelligently compare the disk sizes of all discovered libraries and mount the largest one
- CWA supports only one library per instance though support for multiple libraries is being investigated for future releases
- In the meantime, users with multiple libraries who don't want to consolidate them are advised to run multiple, parallel instances
- Switch between Light & Dark Modes in just one click from anywhere in the Web UI!
- Simply click/tap the 🕶️ icon on the Web UI's navbar and switch between themes at your leisure
- Users will now be automatically notified of the availability of new updates from within the Web UI
- Automatically triggered by a difference between the version number of the most recent GitHub release and the version installed
- Set to only show once per calendar day until updated as to not be annoying
- Visible to Admin users only
- Ever had books get stuck in the ingest folder after an unexpected power-cut ect.? Well say goodbye to having to manually copy the books to be ingested back in and out of the ingest folder, simply press the
Refresh Library
button on the navbar of the Web UI and anything still sitting in the ingest folder will be automatically ingested!
- Just before midnight each day, the CWA-Auto-Zipper service will automatically zip together all files processed that day.
- Minimises disk space usage and helps keep back up files as organised as possible
- Enabled by default but can be disabled in the CWA Settings page in the Admin panel
- Please be aware that while CWA currently works for most people, it is still under active development and that bugs and unexpected behaviours can occur while we work and the code base matures
- I want to say a big thanks 🙏 to the members of this community that have taken the time to participate in the testing and development of this project and we encourage anyone who would like to to contribute in some way. Anyone of any level is welcome and every little helps!
- Integration of CWA with Hardcover 📚
- Ability to use Hardcover as a Metadata Provider
- Ability to sync read progress with your Hardcover account! (Kobo users only)
- A companion project to integrate CWA with the Friendliest & Warmest Place on the Internet 🐭🧀
- Support for Calibre Plugins e.g. deDRM 🔌
- Split Libraries (having your Calibre Library and books in separate locations)
- Notification system integrations e.g. Telegram, Gotify, ntfy ect. 📧
- Possible Prowlarr Integration 🐯
Please suggest any ideas or wishes you might have! we're open to anything!
- Download the Docker Compose template file using the command below:
curl -OL https://raw.githubusercontent.com/crocodilestick/calibre-web-automated/main/docker-compose.yml
-
Move the compose file to an empty folder (e.g. ~/docker/calibre-web-automated/docker-compose.yml). This will be used to store the server data and library
-
Edit the compose file using the comments to help, filling in your Timezone (optional) and desired binds
-
Navigate to where you downloaded the Compose file using
cd
and run:
docker compose up -d
And that's you off to the races! 🥳 HOWEVER to avoid potential problems and ensure maximum functionality, we recommend carrying out these Post-Install Tasks Here.
---
services:
calibre-web-automated:
image: crocodilestick/calibre-web-automated:latest
container_name: calibre-web-automated
environment:
# Only change these if you know what you're doing
- PUID=1000
- PGID=1000
# Edit to match your current timezone https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
- TZ=UTC
volumes:
# CW users migrating should stop their existing CW instance, make a copy of the config folder, and bind that here to carry over all of their user settings ect.
- /path/to/config/folder:/config
# This is an ingest dir, NOT a library one. Anything added here will be automatically added to your library according to the settings you have configured in CWA Settings page. All files placed here are REMOVED AFTER PROCESSING
- /path/to/the/folder/you/want/to/use/for/book/ingest:/cwa-book-ingest
# If you don't have an existing library, CWA will automatically create one at the bind provided here
- /path/to/your/calibre/library:/calibre-library
ports:
# Change the first number to change the port you want to access the Web UI, not the second
- 8083:8083
restart: unless-stopped
- Make sure all 3 of the main bindings are separate directories, errors can occur when binds are made within other binds
/config
- This is used to store logs and other miscellaneous files that keep CWA running- New Users - Use any empty folder (if you run into any issues, make sure the ownership of said folder isn't
root:root
in your main os) - Existing/ CW Users - Those with existing Calibre-Web setups, map this to your existing
/config
directory containingapp.db
to ensure settings and users are pulled in
- New Users - Use any empty folder (if you run into any issues, make sure the ownership of said folder isn't
/cwa-book-ingest
- ATTENTION⚠️ - All files within this folder will be DELETED after being processed. This folder should only be used to dump new books into for import and automatic conversion/calibre-library
- This should be bound to your Calibre library folder where themetadata.db
& book(s) files reside.- New Users - Use any empty folder (if you run into any issues, make sure the ownership of said folder isn't
root:root
in your main os) - Existing/ CW Users - If there are multiple libraries in the mounted directory, CWA will automatically find and mount the largest one - check the logs for more details on which
metadata.db
was utilised
- New Users - Use any empty folder (if you run into any issues, make sure the ownership of said folder isn't
/app/calibre-web/gmail.json
(Optional) - This is used to setup Calibre-Web and/or CWA with your gmail account for sending books via email. Follow the guide here if this is something you're interested in but be warned it can be a very fiddly process, I would personally recommend a simple SMTP Server
And just like that, Calibre-Web Automated should be up and running! HOWEVER to avoid potential problems and ensure maximum functionality,we recommend carrying out these Post-Install Tasks Here.
- CWA has been designed to make switching over as easy as possible. To migrate your CW instance to CWA, simply:
- Stop your instance of CW if it's still running
- Mount the same
/config
folder in your Docker Compose that you were using for CW (or a copy of it to be extra safe) - Mount the same folder containing your Calibre Library (the Docker Compose for the Linuxserver image of Calibre Web has this as
/books
by default)
- And then you're done! All of your users, settings ect. should be automatically carried over into your new CWA instance! Enjoy!
- If you run into an issue where the Web UI won't load, trying using the same port as you did for CW and then reconfiguring if you want to once you've got everything set up
- Open your browser and navigate to http://localhost:8084 or http://localhost:8084/opds for the OPDS catalog
- Log in with the default admin credentials (below)
- Configure your Calibre-Web Automated instance via the Admin Page
- A guide to what all of the stock CW Settings do can be found here
- Make sure
Enable Uploads
is enabled inSettings -> Basic Configuration -> Feature Configuration
- Configure CWA to behave as you would like it to in the CWA Settings panel
- Here you can turn certain features on and off, set your Target Format, which file formats should be ignored and which should be auto-converted ect.
- Drop a book into your ingest folder to check everything is working and enjoy!
Username: admin
Password: admin123
- Simply move your newly downloaded or existing eBook files to the ingest folder which is
/cwa-book-ingest
- Anything you place in this folder will be automatically analysed, converted if necessary and then imported into your Calibre-Web library if not in a format you have told CWA to ignore in the CWA Settings Panel
⚠️ ATTENTION⚠️ - Downloading files directly into
/cwa-book-ingest
is not supported. It can cause duplicate imports and potentially a corrupt database. It is recommended to first download the books completely, then transfer them to/cwa-book-ingest
to avoid any issues - Be sure that the books you are transferring to
/cwa-book-ingest
are owned by your user rather than root. Otherwise, permission errors may occur and may result in incomplete importing. - In the event you're expecting a book to be ingested and it hasn't been, use the "Library Refresh" button on the Upper Navbar to manually trigger the ingest process
- Downloading files directly into
If you want to contribute to this project, you can build a local version with your changes by running build.sh
in the repository.
The resultant image will then be automatically deployed using the docker-compose.yml.dev
(make changes as necessary beforehand) in the directory and the build/
folder will be created, primarily housing the development docker-compose.yml file and its mount points. Add a calibre library here for testing if necessary.
$ chmod +x build.sh
$ ./build.sh
Check out Post-Install Tasks Here when necessary.
- CWA is really lucky to have a very passionate and active community of people that really help shape CWA into what it is today
- If you have any ideas or want to contribute to the project, you're more than welcome to! We accept anyone regardless of skill level of expertise!
- If you've got a good idea or want to simply suggest improvements, simply get in touch with us on the Discord Server here!