calibre-web
:books: Web app for browsing, reading and downloading eBooks stored in a Calibre database
Top Related Projects
The official source code repository for the calibre ebook manager
Media server for comics/mangas/BDs/magazines/eBooks with API, OPDS and Kobo Sync support
Quick Overview
Calibre-web is a web app providing a clean interface for browsing, reading, and downloading eBooks stored in a Calibre database. It allows users to access their Calibre library remotely, offering features like user management, Kindle integration, and OPDS support.
Pros
- Easy to set up and use, with a user-friendly interface
- Supports multiple file formats and integrates well with e-readers
- Offers user management and customizable access levels
- Provides OPDS support for compatibility with various reading apps
Cons
- Requires an existing Calibre database; cannot manage books independently
- Limited editing capabilities compared to the full Calibre application
- May have performance issues with very large libraries
- Occasional sync issues between Calibre-web and the main Calibre database
Getting Started
- Ensure you have Python 3.6+ installed
- Clone the repository:
git clone https://github.com/janeczku/calibre-web.git
- Install dependencies:
pip install -r requirements.txt
- Copy
config.yaml.example
toconfig.yaml
and edit as needed - Run the application:
python cps.py
- Access the web interface at
http://localhost:8083
- Log in with default credentials (admin/admin123) and configure your Calibre database location
Competitor Comparisons
The official source code repository for the calibre ebook manager
Pros of Calibre
- Full-featured desktop application with comprehensive e-book management capabilities
- Robust e-book conversion engine supporting numerous formats
- Extensive plugin ecosystem for customization and extended functionality
Cons of Calibre
- Heavier resource usage due to its desktop nature
- Steeper learning curve for new users due to its extensive feature set
- Less suitable for web-based or server-side deployments
Code Comparison
Calibre (Python):
def convert(input_format, output_format, input_file, output_file, log, opts, notify=None):
from calibre.ebooks.conversion.plumber import Plumber
plumber = Plumber(input_file, output_file, log, opts, input_format, output_format, notify)
plumber.run()
Calibre-Web (Python):
def convert_book_format(book_id, calibrepath, old_book_format, new_book_format, user_id, kindle_mail):
error = None
local_book = db.session.query(db.Books).filter(db.Books.id == book_id).first()
file_path = os.path.join(calibrepath, local_book.path, local_book.data[0].name)
# ... (conversion logic)
Both projects use Python, but Calibre's conversion is more modular and extensible, while Calibre-Web's approach is more focused on web-based functionality and integration with its database.
Media server for comics/mangas/BDs/magazines/eBooks with API, OPDS and Kobo Sync support
Pros of Komga
- Specialized for comic books and manga, with better support for image-based content
- More modern UI with a responsive design for mobile devices
- Built-in OPDS server for easy integration with e-reader apps
Cons of Komga
- Limited to comic and manga formats, not suitable for general ebooks
- Lacks some advanced features like metadata editing and user-contributed content
- Smaller community and fewer extensions compared to Calibre-web
Code Comparison
Komga (Kotlin):
@GetMapping("/{bookId}/pages/{pageNumber}")
fun getBookPage(@PathVariable bookId: String, @PathVariable pageNumber: Int): ResponseEntity<ByteArray> {
val book = bookRepository.findByIdOrNull(bookId) ?: throw ResponseStatusException(HttpStatus.NOT_FOUND)
val page = bookPageRepository.findByBookIdAndPageNumber(bookId, pageNumber) ?: throw ResponseStatusException(HttpStatus.NOT_FOUND)
return ResponseEntity.ok().contentType(MediaType.parseMediaType(page.mediaType)).body(page.content)
}
Calibre-web (Python):
@web.route("/get_cover/<int:book_id>")
@login_required_if_no_ano
def get_cover(book_id):
book = db.session.query(db.Books).filter(db.Books.id == book_id).first()
if book and book.has_cover:
return send_from_directory(config.config_calibre_dir, book.path, as_attachment=True)
else:
abort(404)
Pros of docker-calibre-web
- Containerized solution, easier to deploy and manage
- Regular updates and maintenance from LinuxServer.io team
- Includes additional tools and configurations for enhanced functionality
Cons of docker-calibre-web
- Larger image size due to additional components
- May have slightly higher resource usage
- Less flexibility for custom configurations compared to bare installation
Code Comparison
calibre-web:
@app.route("/", defaults={'page': 1})
@app.route('/page/<int:page>')
def index(page):
entries, random, pagination = fill_indexpage(page, db.Books, True, True)
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
title=_(u"Recently Added Books"))
docker-calibre-web:
FROM ghcr.io/linuxserver/baseimage-alpine:3.15
# Install dependencies and Calibre-Web
RUN \
echo "**** install runtime packages ****" && \
apk add --no-cache \
python3 \
py3-pip \
imagemagick
The code comparison shows a snippet from the main application route in calibre-web and a portion of the Dockerfile used to build the docker-calibre-web image. The docker version focuses on containerization and dependency management, while the original calibre-web code deals with application logic.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Calibre-Web
Calibre-Web is a web app that offers a clean and intuitive interface for browsing, reading, and downloading eBooks using a valid Calibre database.
Table of Contents (click to expand)
This software is a fork of library and licensed under the GPL v3 License.
Features
- Modern and responsive Bootstrap 3 HTML5 interface
- Full graphical setup
- Comprehensive user management with fine-grained per-user permissions
- Admin interface
- Multilingual user interface supporting 20+ languages (supported languages)
- OPDS feed for eBook reader apps
- Advanced search and filtering options
- Custom book collection (shelves) creation
- eBook metadata editing and deletion support
- Metadata download from various sources (extensible via plugins)
- eBook conversion through Calibre binaries
- 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
- Upload new books in various formats, including audio formats
- Calibre Custom Columns support
- Content hiding based on categories and Custom Column content per user
- Self-update capability
- "Magic Link" login for easy access on eReaders
- LDAP, Google/GitHub OAuth, and proxy authentication support
Installation
Installation via pip (recommended)
- Create a virtual environment: Itâs essential to isolate your Calibre-Web installation to avoid dependency conflicts. You can create a virtual environment by running:
python3 -m venv calibre-web-env
- Activate the virtual environment:
source calibre-web-env/bin/activate
- Install Calibre-Web: Use pip to install the application:
pip install calibreweb
- Install optional features: For additional functionality, you may need to install optional features. Refer to this page for details on what can be installed.
- Start Calibre-Web: After installation, you can start the application with:
cps
Note: Users of Raspberry Pi OS may encounter installation issues. If you do, try upgrading pip and/or installing cargo as follows:
./venv/bin/python3 -m pip install --upgrade pip
sudo apt install cargo
Important Links
- For additional installation examples, check the following:
Quick Start
- Access Calibre-Web: Open your browser and navigate to:
or for the OPDS catalog:http://localhost:8083
http://localhost:8083/opds
- Log in: Use the default admin credentials:
- Username: admin
- Password: admin123
- Database Setup: If you do not have a Calibre database, download a sample from:
Move it out of the Calibre-Web folder to avoid overwriting during updates.https://github.com/janeczku/calibre-web/raw/master/library/metadata.db
- Configure Calibre Database: In the admin interface, set the
Location of Calibre database
to the path of the folder containing your Calibre library (wheremetadata.db
is located) and click "Save". - Google Drive Integration: For hosting your Calibre library on Google Drive, refer to the Google Drive integration guide.
- Admin Configuration: Configure your instance via the admin page, referring to the Basic Configuration and UI Configuration guides.
Requirements
- Python Version: Ensure you have Python 3.7 or newer.
- Imagemagick: Required for cover extraction from EPUBs. Windows users may also need to install Ghostscript for PDF cover extraction.
- Optional Tools:
- Calibre desktop program: Recommended for on-the-fly conversion and metadata editing. Set the path to Calibreâs converter tool on the setup page.
- Kepubify tool: Needed for Kobo device support. Download the tool and place the binary in
/opt/kepubify
on Linux orC:\Program Files\kepubify
on Windows.
Docker Images
Pre-built Docker images are available:
LinuxServer - x64, aarch64
- Docker Hub: linuxserver/calibre-web
- GitHub: linuxserver/docker-calibre-web
- Optional Calibre layer: linuxserver/docker-mods
To include the Calibre ebook-convert
binary (x64 only), add the environment variable:
DOCKER_MODS=linuxserver/mods:universal-calibre
in your Docker run/compose file. Omit this variable for a lightweight image.
- Paths Configuration:
- Set Path to Calibre Binaries to
/usr/bin
. - Set Path to Unrar to
/usr/bin/unrar
.
- Set Path to Calibre Binaries to
Troubleshooting
-
Common Issues:
- If you experience issues starting the application, check the log files located in the
logs
directory for error messages. - If eBooks fail to load, verify that the
Location of Calibre database
is correctly set and that the database file is accessible.
- If you experience issues starting the application, check the log files located in the
-
Configuration Errors: Ensure that your Calibre database is compatible and properly formatted. Refer to the Calibre documentation for guidance on maintaining the database.
-
Performance Problems:
- If the application is slow, consider increasing the allocated resources (CPU/RAM) to your server or optimizing the Calibre database by removing duplicates and unnecessary entries.
- Regularly clear the cache in your web browser to improve loading times.
-
User Management Issues: If users are unable to log in or register, check the user permission settings in the admin interface. Ensure that registration is enabled and that users are being assigned appropriate roles.
-
Support Resources: For additional help, consider visiting the FAQ section of the wiki or posting your questions in the Discord community.
Contributor Recognition
We would like to thank all the contributors and maintainers of Calibre-Web for their valuable input and dedication to the project. Your contributions are greatly appreciated.
Contact
Join us on Discord
For more information, How To's, and FAQs, please visit the Wiki
Contributing to Calibre-Web
To contribute, please check our Contributing Guidelines. We welcome issues, feature requests, and pull requests from the community.
Reporting Bugs
If you encounter bugs or issues, please report them in the issues section of the repository. Be sure to include detailed information about your setup and the problem encountered.
Feature Requests
We welcome suggestions for new features. Please create a new issue in the repository to discuss your ideas.
Additional Resources
- Documentation: Comprehensive documentation is available on the Calibre-Web wiki.
- Community Contributions: Explore the community contributions to see ongoing work and how you can get involved.
Thank you for using Calibre-Web! We hope you enjoy managing your eBook library with our tool.
Top Related Projects
The official source code repository for the calibre ebook manager
Media server for comics/mangas/BDs/magazines/eBooks with API, OPDS and Kobo Sync support
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot