This article is about setting up you own ebook library with support for the [OPDS]( catalog format . The COPS ebook catalog can read a [Calibre]( library and expose it as a website. It is developed on PHP.


* Prepare a Linux system. In this guide we are using Ubuntu 14.04.4.
* Have a ** DNS A record pointing to the IP of your server.

Install necessary packages

$  sudo apt-get -y samba nginx php5-fpm php5-gd php5-sqlite php5-json php5-intl git

Setup a SAMBA share

Samba is needed for sharing the Calibre library directory with the library administrator. Alternatively you could use NFS or even [OwnCloud](

> **Note**
> It is a security risk to expose Samba on a public server. Restrict it through firewall or use OwnCloud instead.

* Tweak the Samba configuration file (*/etc/samba/smb.conf*):

    #  unix password sync = yes
       unix password sync = no
    #  pam password change = yes
       pam password change = no

* Add a Samba share for calibre (*/etc/samba/smb.conf*):

path = /srv/calibre
valid users = calibre
write list = calibre
read only = no

* Restart Samba services:

    $ sudo service smbd restart ; sudo service nmbd restart

* Add the *calibre* user:

    $ useradd -m -d /srv/calibre -s /usr/sbin/nologin calibre
    $ smbpasswd -a calibre

Setup Calibre

* Now you should setup Calibre on your PC. On Debian/Ubuntu:

    $ sudo apt-get -y install calibre

Windows users can download it from here:

* Configure Calibre to use the calibre share as its catalog:

* You can “mount” the calibre share on Linux or “map” the share on Windows.
* Create an *ebook* Directory under the calibre share.
* Create a new Calibre library inside the *ebook* directory. From the Calibre menu:
* Callibre Library –> Switch/create library -> Create an empty Library at the new location and fill the path in the “New Location” text field.
* If you get an error about “Corrupted database” just click ‘Yes” to rebuilt it.
* Start adding books


* Download the software:

    $ mkdir /var/www
    $ cd /var/www
    $ git clone

* Setup *COPS*:

Under the */var/www/cops/* directory, copy the *config_default.php.example* to *config_default.php*:

    $ cp config_local.php.example config_local.php

Make the following changes in *config_default.php*:

> The *feed.php* setting was redirecting me to an XML site with this error: ***This XML file does not appear to have any style information associated with it. The document tree is shown below.*** So I am using *index.php* instead, as the index file.

* Enable the ** site and disable the default:

    $ cd /etc/nginx/sites-enabled/
    $ sudo ln -s /etc/nginx/sites-available/
    $ sudo unlink default

* Restart *nginx* and *php5-fpm*:

    $ sudo service php5-fpm restart ; sudo service nginx restart

* Change permissions to let *nginx* write to the library:

    $ usermod -a -G calibre www-data
    $ chmod -R g+w /srv/calibre/ebooks/

Now you can navigate to and enjoy your newly created ebook library!