{"id":15945694,"url":"https://github.com/ig3/calibre-web","last_synced_at":"2026-03-06T17:02:12.329Z","repository":{"id":58395061,"uuid":"531625222","full_name":"ig3/calibre-web","owner":"ig3","description":"A very simple server for serving epub books from Calibre databases.","archived":false,"fork":false,"pushed_at":"2024-08-23T21:50:28.000Z","size":1279,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-29T08:11:17.826Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ig3.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-01T17:42:36.000Z","updated_at":"2024-08-23T21:50:32.000Z","dependencies_parsed_at":"2024-07-17T21:52:05.982Z","dependency_job_id":null,"html_url":"https://github.com/ig3/calibre-web","commit_stats":{"total_commits":35,"total_committers":1,"mean_commits":35.0,"dds":0.0,"last_synced_commit":"97fda0aad8ba7da3f47bccf8aa393fb947ce21d3"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ig3%2Fcalibre-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ig3%2Fcalibre-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ig3%2Fcalibre-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ig3%2Fcalibre-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ig3","download_url":"https://codeload.github.com/ig3/calibre-web/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237073115,"owners_count":19251030,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-07T09:05:32.478Z","updated_at":"2025-10-19T06:30:22.722Z","avatar_url":"https://github.com/ig3.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# calibre-web.js\n\nA simple web server that serves epub books from local\n[Calibre](https://github.com/kovidgoyal/calibre) databases.\n\n## Installation\n```\n$ npm install -g @ig3/calibre-web\n```\n\n## Operation\nThe package provides an executable: `calibre-web`\n\nRun this to start the server:\n\n```\n$ calibre-web\n```\n\nIt listens on port 9000.\n\nBrowse to http://localhost:9000.\n\nIt can be started by systemd. For example:\n\n```\n[Unit]\nDescription=Calibre Web server\n\n[Service]\nType=simple\nRestart=on-failure\nWorkingDirectory=/tmp\nStandardOutput=syslog\nStandardError=syslog\nSyslogIdentifier=calibre-web\nExecStart=calibre-web\n\n[Install]\nWantedBy=default.target\n```\n\nThis can be installed as a system service or a per-user service. See the\nsystemd documentation for details of setting up a service.\n\n\n## Configuration\n\nConfiguration may be stored in:\n\n * /etc/calibre-web.json\n * ~/.calibre-web.json\n * ~/.config/calibre-web.json\n\nFor example:\n\n```\n{\n  \"port\": 1234,\n  \"databases\": [\n    \"/usr/local/calibre\",\n    \"/usr/share/calibre1\",\n    \"/usr/share/calibre2\"\n  ],\n  \"excludeTags\": [\n    \"hidden\",\n    \"private\"\n  ],\n  \"showUntagged\": true\n}\n```\n### port\n\nThe port the server should listen on.\n\n### databases\n\nAn array of paths to Calibre data directories, containing the `metadata.db`\nfiles.\n\n### defaultTags\n\nAn array of tags that will be selected by default (i.e. if no other tags\nare selected).\n\n### excludeTags\n\nAn array of tags for which books having any of these tags will be excluded\nfrom the book list.\n\n### explicitOnly\n\nAn array of tags that must be explicitly selected in order for books with\nthose tags to be presented in the book list.\n\n\n### showUntagged\n\nSet this to true if books without tags should be shown in the book list.\n\n\n## Features\n\nThis only serves epub files. Other content of the Calibre database will be\nignored.\n\nThe home page shows the cover image, title and author of each book, sorted\nby timestamp which, I think, is the time the book was added to Calibre.\n\nIt can read multiple Calibre databases but they must be local: the Calibre\ndatabase is read from a file path. \n\nServer load is fairly light. Just a node process running an Express\nwebsite. When not processing a request it should not consume CPU. \n\nIt uses epub.js in the browser to display the book. Once the book is\ndownloaded, there is no more load on the server as it is browsed.\n\n## System Requirements\n\nI have only run this on Debian Linux. Not tested on other distributions or\noperating systems.\n\nRequires [Node.js](https://nodejs.org). I am running it on v18.13.0. Not\ntested on other versions.\n\nWhen idle, with a couple of Calibre libraries totaling over 500 books, top\nreports under 50K physical memory consumed and 0% CPU. It occupies a little\nunder 25MB disk space. \n\n## Dependencies\n\nIn addition to those listed in package.json, this depends on\n[@ig3/epub.js](https://github.com/ig3/epub.js) and\njszip.min.js, included in the public/js directory. \n\n\n## Motivation\n\nI used [Calibre-web](https://github.com/janeczku/calibre-web) for a while,\nto view epub books in my browser where I use the\n[@ig3/zhongwen](https://addons.mozilla.org/en-US/firefox/addon/ig3-zhongwen/)\nadd-on to look up Chinese characters, to help my study of Chinese. When I\nwas setting up a new laptop, I wanted something easier to install,\nconfigure and customize. All the books I study are epub format, so I don't\nneed support for other formats. Calibre makes it easy to convert other\nebook formats to epub, except for PDF, which is difficult no matter what\ntools.\n\nI have built calibre-web on\n[a fork of epub.js](https://github.com/ig3/epub.js),\nmodified for better navigation in Chinese texts, which don't have spaces\nseparating words.\n\n## Changes\n\n### 1.0.8 - 20230410\n\nUpdate dependencies.\n\n### 1.0.9 - 20240506\n * Up and down arrow keys for prev and next chapter navigation\n * Handle sub-chapters in toc\n * Fix updateToc to handle href with fragment\n * Fix toc / navigation\n * Update dependencies\n\n### 1.0.10 - 20240611\n * Revised tag filtering\n * Add ~/.config/calibre-web.json config file path\n\n### 1.0.11 - 20240705\n * Fix tag list handling\n * Update dependencies\n * Remove dev dependencies on tape and multi-tape\n * Refactor the server implementation\n * Add tests\n\n### 1.0.12 - WIP\n * Restore default port 9000\n * Refactor again\n * Rewrite tests based on @ig3/test\n * Replace `node --test` with multi-tape test runner\n * listen for keydown instead of keypress events\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fig3%2Fcalibre-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fig3%2Fcalibre-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fig3%2Fcalibre-web/lists"}