1
0
mirror of https://github.com/janeczku/calibre-web synced 2024-11-25 02:57:22 +00:00
calibre-web/readme.md

175 lines
7.1 KiB
Markdown
Raw Normal View History

2017-02-19 22:27:41 +00:00
##About my fork
I have been messing around with calibre-web in a few different ways and thought I would share them. I am currently working on a couple of features: -
1. Marking books as read/unread. In the Book View, there is now a row that says whether or not a book is read. If you click it, it will toggle. Further down the line, I plan on adding goodreads support, which if the book has a goodreads link, it will automatically move the book to the "to read" and "read" bookshelves.
2. Google drive support. In my local version, I currently have this working, but it is essentially to make the website have all the books / covers / metadata.db served directly from google drive. I am currently, still optimising a bit of code, and will hopefully have this on GitHub ASAP.
2017-02-22 23:46:06 +00:00
##Using Google Drive integration
To use google drive integration, you have to use the google developer console to create a new app. https://console.developers.google.com
Once a project has been created, we need to create a client ID and a client secret that will be used to enable the OAuth request with google, and enable the Drive API. To do this, follow the steps below: -
1. Open project in developer console
2. Click Enable API, and enable google drive
3. Now on the sidebar, click Credentials
4. Click Create Credentials and OAuth Client ID
5. Select Web Application and then next
6. Give the Credentials a name and enter your callback, which will be CALIBRE_WEB_URL/gdrive/callback
7. Finally click save
The Drive API should now be setup and ready to use, so we need to integrate it into Calibre Web. This is done as below: -
1. Open config page
2. Enter the location that will be used to store the metadata.db file, and to temporary store uploaded books and other temporary files for upload
2. Tick Use Google Drive
3. Enter Client Secret and Client Key as provided via previous steps
4. Enter the folder that is the root of your calibre library
5. Enter base URL for calibre (used for google callbacks)
6 Now select Authenticate Google Drive
7. This should redirect you to google to allow it top use your Drive, and then redirect you back to the config page
8. Google Drive should now be connected and be used to get images and download Epubs. The metadata.db is stored in the calibre library location
###Optional
2017-02-22 23:48:18 +00:00
If your calibre web is using https (this can be done for free using cloudflare), it is possible to add a "watch" to the drive. This will inform us if the metadata.db file is updated and allow us to update our calibre library accordingly.
2017-02-22 23:46:06 +00:00
9. Click enable watch of metadata.db
2017-02-22 23:48:18 +00:00
9. Note that this expires after a week, so will need to be manually refresh (TODO: Add an authenticated call to do this via crontab or something similar or maybe in before_request method)
2017-02-22 23:46:06 +00:00
2015-10-12 01:37:10 +00:00
##About
2016-04-27 15:37:19 +00:00
Calibre Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing [Calibre](https://calibre-ebook.com) database.
2015-10-12 01:37:10 +00:00
2016-04-27 15:29:57 +00:00
*This software is a fork of [library](https://github.com/mutschler/calibreserver) and licensed under the GPL v3 License.*
2016-03-26 18:48:45 +00:00
2015-10-12 01:42:36 +00:00
![screenshot](https://raw.githubusercontent.com/janeczku/docker-calibre-web/master/screenshot.png)
2015-10-12 01:37:10 +00:00
##Features
- Bootstrap 3 HTML5 interface
- full graphical setup
2015-10-12 01:42:36 +00:00
- User management
2015-10-12 01:37:10 +00:00
- Admin interface
- User Interface in english, french, german, polish, simplified chinese, spanish
- OPDS feed for eBook reader apps
2015-10-12 01:37:10 +00:00
- Filter and search by titles, authors, tags, series and language
- Create custom book collection (shelves)
- Support for editing eBook metadata
2015-10-12 01:42:36 +00:00
- Support for converting eBooks from EPUB to Kindle format (mobi/azw)
2015-10-12 01:37:10 +00:00
- Restrict eBook download to logged-in users
2016-03-26 18:48:45 +00:00
- Support for public user registration
2015-10-12 01:42:36 +00:00
- Send eBooks to Kindle devices with the click of a button
- Support for reading eBooks directly in the browser (.txt, .epub, .pdf)
2017-01-14 19:31:01 +00:00
- Upload new books in PDF, epub, fb2 format
2016-04-27 15:37:19 +00:00
- Support for Calibre custom columns
2016-04-29 20:30:33 +00:00
- Fine grained per-user permissions
2017-02-03 09:51:58 +00:00
- Self update capability
2015-10-12 01:42:36 +00:00
## Quick start
1. Execute the command: `python cps.py`
2. Point your browser to `http://localhost:8083` or `http://localhost:8083/opds` for the OPDS catalog
3. Set `Location of Calibre database` to the path of the folder where your Calibre library (metadata.db) lives, push "submit" button
4. Go to Login page
2015-10-12 01:37:10 +00:00
**Default admin login:**
*Username:* admin
2015-10-12 01:42:36 +00:00
*Password:* admin123
2016-04-29 20:30:33 +00:00
## Runtime Configuration Options
The configuration can be changed as admin in the admin panel under "Configuration"
Server Port:
Changes the port calibre-web is listening, changes take effect after pressing submit button
2017-02-03 09:51:58 +00:00
Enable public registration:
2017-02-03 09:51:58 +00:00
Tick to enable public user registration.
Enable anonymous browsing:
2017-02-03 09:51:58 +00:00
Tick to allow not logged in users to browse the catalog, anonymous user permissions can be set as admin ("Guest" user)
Enable uploading:
Tick to enable uploading of PDF, epub, FB2. This requires the imagemagick library to be installed.
2016-04-29 20:30:33 +00:00
2015-10-12 01:42:36 +00:00
## Requirements
2015-10-12 02:37:39 +00:00
Python 2.7+
Optionally, to enable on-the-fly conversion from EPUB to MOBI when using the send-to-kindle feature:
[Download](http://www.amazon.com/gp/feature.html?docId=1000765211) Amazon's KindleGen tool for your platform and place the binary named as `kindlegen` in the `vendor` folder.
2016-04-27 15:29:57 +00:00
## Docker image
2016-10-08 05:58:47 +00:00
Calibre Web can be run as Docker container. The latest image is available on [Docker Hub](https://registry.hub.docker.com/u/janeczku/calibre-web/).
## Reverse Proxy
Reverse proxy configuration examples for apache and nginx to use calibre-web:
nginx configuration for a local server listening on port 8080, mapping calibre web to /calibre:
```
http {
upstream calibre {
server 127.0.0.1:8083;
}
server {
2017-01-14 19:31:01 +00:00
location /calibre-web {
2016-10-08 05:58:47 +00:00
proxy_bind $server_addr;
2017-01-02 17:54:04 +00:00
proxy_pass http://127.0.0.1:8083;
2016-10-08 05:58:47 +00:00
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
2017-01-14 19:31:01 +00:00
proxy_set_header X-Script-Name /calibre-web;
2016-10-08 05:58:47 +00:00
}
}
}
```
Apache 2.4 configuration for a local server listening on port 443, mapping calibre web to /calibre-web:
The following modules have to be activated: headers, proxy, rewrite.
2016-10-08 05:58:47 +00:00
```
Listen 443
<VirtualHost *:443>
SSLEngine on
SSLProxyEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "C:\Apache24\conf\ssl\test.crt"
SSLCertificateKeyFile "C:\Apache24\conf\ssl\test.key"
<Location "/calibre-web" >
RequestHeader set X-SCRIPT-NAME /calibre-web
RequestHeader set X-SCHEME https
ProxyPass http://localhost:8083/
ProxyPassReverse http://localhost:8083/
2016-10-08 05:58:47 +00:00
</Location>
</VirtualHost>
```
2016-11-19 13:42:47 +00:00
2016-11-20 20:27:59 +00:00
## Start calibre-web as service under Linux
2016-11-19 13:42:47 +00:00
Create a file "cps.service" as root in the folder /etc/systemd/system with the following content:
```[Unit]
Description=Calibre-web
[Service]
Type=simple
User=[Username]
ExecStart=[path to python] [/PATH/TO/cps.py]
[Install]
WantedBy=multi-user.target
```
Replace the user and ExecStart with your user and foldernames.
`sudo systemctl enable cps.service`
enables the service.