Here is COPS : Calibre OPDS (and HTML) PHP Server
In my opinion Calibre is a marvelous tool but is too big and has too much dependencies to be used only for its content server.
That's the main reason why I coded this OPDS / HTML content server. I needed a simple tool to be installed on a small server (Seagate Dockstar in my case).
I initially thought of Calibre2OPDS but as it generate static file no search was possible.
So COPS's main advantages are :
- No need for many dependencies.
- No need for a lot of CPU or RAM.
- Not much code.
- Search is available.
- With Dropbox / Owncloud it's very easy to have an up to date OPDS content server.
- 100% OPDS valid code (checked with http://opds-validator.appspot.com/).
- It was my first PHP experiment and so fun to code.
It's been reported as working on most web servers (Nginx, Apache, Cherokee, Lighttpd, IIS) and is used a lot on NAS (Synology, QNap, ReadyNas).
I personally protect my COPS catalog with Basic HTTP auth and HTTPS. It's secure enough for my needs.
On the OPDS client side I mainly tested with FBReader Mantano Reader and Aldiko on Android (these 3 also ask for user/password if you have protected your COPS catalog). I also used Ibis Reader with success but there is no support for password. Other users have reported COPS working with Stanza, Megareader, Shubook and Bluefire.
As I already said, I had never coded in PHP before so I'm not proud at all about the code quality. I'll probably start it again in the future ;).
- HTML5 / CSS3 interface with responsive design.
- Multiple Calibre database support in a single COPS install.
- Epub metadata update like Calibre Content Server (enable it with $config['cops_update_epub-metadata']) : If you fixed the author name / a tag / the serie name of a book in Calibre, then the epub you'll download with COPS will contain the fix.
- Calibre custom columns.
- Facets in the OPDS feed to filter book list (the only OPDS clients supporting it are Mantano Reader and Bluefire for now).
- Multilanguage : Catalan, Czech, German, English, Spanish, Basque, French, Haitian (Creole), Hungarian, Italian, Norwegian Bokmål, Dutch, Polish, Portuguese, Russian, Swedish, Ukrainian, Chinese.
- Certainly many other.
If you want to try it, you can use this URL in your favourite OPDS client :
You can also use any browser :
Prerequisites for installation
- PHP 5.3, 5.4, 5.5, 5.6 or hhvm with GD image processing, Libxml, Intl, Json & SQLite3 support.
- A web server with PHP support (Nginx, Apache, Cherokee, Lighttpd, IIS).
- The path to a Calibre library (metadata.db, format, & cover files).
On any Debian base Linux you can use :
aptitude install php5-gd php5-sqlite php5-json php5-intl
- Extract the zip file to a folder in web space (visible to the web server).
- If a first-time install, copy config_local.php.example to config_local.php
- Edit config_local.php to match your config. The most important config item to edit are :
- $config['calibre_directory'] : Path to your Calibre directory.
- $config['cops_use_url_rewriting'] : If you want to enable URL rewriting.
- Add some other config item from config_default.php
None for now. Please add an issue on Github if you find one ;).
Any problem / question
Read the Wiki.
Want to help me ?
You like COPS or you simply want to support me, you can offer me a drink. I promise it will only be used for good and never for evil.
My main objective would be to buy a used Kindle Paperwhite to fix the HTML rendering of COPS with this eReader.
You can download it here (Changelog) :
You can download older releases here