1
0
mirror of https://github.com/janeczku/calibre-web synced 2024-11-24 02:27:22 +00:00

Updated config section

Virtualenv as alternative to venv
Use Calibre-Web everywhere
Ozzieisaacs 2022-04-16 09:09:49 +02:00
parent b360658730
commit c833817748
11 changed files with 124 additions and 88 deletions

@ -1,8 +1,8 @@
If you wish to send books to your kindle, not only do you have to add your "send to kindle" email address in Calibre-web and configure the e-mail server, but you also have to whitelist the email address that your server is sending emails under.
If you wish to send books to your kindle, not only do you have to add your "send to kindle" email address in Calibre-Web and configure the e-mail server, but you also have to whitelist the email address that your server is sending emails under.
On Amazon,
* Go to Manage Your Content and Devices.
* From Preferences scroll down to Personal Document Settings.
* Under Approved Personal Document Email List, check if your email address is listed. If your email address is not listed, select Add a new approved e-mail address. (the one you have set in outgoing email name in Calibre-web)
* Under Approved Personal Document Email List, check if your email address is listed. If your email address is not listed, select Add a new approved e-mail address. (the one you have set in outgoing email name in Calibre-Web)
* Enter the desired email address and select Add Address.
(Thanks to @funnelcloudservices for providing this little tutorial

@ -23,7 +23,7 @@ Starting Calibre-Web with `-k "" -c ""`, deactivates the ssl-server, it falls ba
Calibre-Web supports the following Environmental variables.
`CALIBRE_DBPATH` allows to set the home directory for calibre-web's settings files (`app.db`, `calibre-web.log`, `gdrive.db`)\
`CALIBRE_DBPATH` allows to set the home directory for Calibre-Web's settings files (`app.db`, `calibre-web.log`, `gdrive.db`)\
`CALIBRE_PORT` allows to set the default listening port during creation of the settings database. Afterwards the port which is configured in the UI, is used.
`CALIBRE_RECONNECT` enables the reconnect endpoint\
`CALIBRE_LOCALHOST` allows loading covers from localhost and local network\

@ -2,45 +2,65 @@
The configuration can be changed as admin in the admin panel under "Basic Configuration" and "UI Configuration"
## Basic Configuration:
## Database Configuration:
**Location of Calibre database:**\
The location of a valid metadata.db file as created by the Calibre program. The File has to be on a mounted drive of the server running calibre-Web (for setup with Google Drive please take a look in the corresponding chapter). You only enter the path, no special care has to be taken about spaces or Non-ASCII characters. The must not be included in apostrophes. "/" or "\" work as separators. The name metadata.db is not allowed as part of the path.
The location of a valid metadata.db file as created by the Calibre program. The File has to be on a mounted drive of the server running Calibre-Web (for setup with Google Drive please take a look in the corresponding chapter). You only enter the path, no special care has to be taken about spaces or Non-ASCII characters. The must not be included in apostrophes. "/" or "\" work as separators. The name metadata.db is not allowed as part of the path.
The icon at the end of the input field can be used to convientently select the desired filelocation.
Example: /folder with space
**Server Port:**\
Changes the port Calibre-Web is listening, changes take effect after pressing submit button. To reach the Calibre-Web instance afterwards you have to change the port manually in your browser
With all installed G Drive dependencies a checkbock **Use Google Drive?** is showing up. The further configuration steps for the G Drive integration are desribed [here](https://github.com/janeczku/calibre-web/wiki/G-Drive-Setup#using-google-drive-integration)
### (Optional) SSL Configuration
## Basic Configuration:
For configuration of calibre-web as SSL Server go to the Config page in the Admin section. Enter the certfile- and keyfile-location, optionally change port to 443 and press submit.
### Server Configuration:
#### Server Port
Changes the port Calibre-Web is listening, changes take effect after pressing submit button. To reach the Calibre-Web instance afterwards you have to change the port manually in your browser, otherwise you see an endless "spinning wheel"
#### (Optional) SSL Configuration
For configuration of Calibre-Web as SSL Server go to the Config page in the Admin section. Enter the certfile- and keyfile-location, optionally change port to 443 and press submit.
Afterwards the server can only be accessed via SSL. In case of a miss configuration (wrong/invalid files) both files can be overridden via command line options
-c [certfile location] -k [keyfile location]
By using "" as certfile/keyfile locations the server runs as non SSL server again. The correct file path can be entered on the config page afterwards. After the next restart without command line options the changed file paths are applied.
### Update Channel
#### Update Channel
Calibre-Web provides 2 types of update. The Stable channel updates you less frequent from stable release to stable release. All releases are tested on a good base and are made for normal day use. The stable channel is the default setting.\
The nightly mode includes new features latest bugfixes, and of course newest bugs. It's only recommended to use the nightly channel if you suffer from a certain bug fixed or if you want to be on the leading edge of technology.
#### Trusted Hosts
Enter additional trusted hosts as comma seperated list in this field. Additional hosts are needed for e.g. third party theming. Otherwise just lease the field empty
### Logfile Configuration
You can set the loglevel of the integrated logfiles. Default is INFO, which is recommended for normal day use. DEBUG gives you more information, especially during converting books and sending e-mails. WARNING and ERROR are less noisy as all other settings and create almost no entries. The logfiles are rotating automatically after 10kbytes of logged information are reached. The 2 old versions are backuped.\
You can specifiy a different name and different location for the logfile. logfile.log creates a logfile with this name in the Calibre-Web folder, where c:\bücher\log.log creates a logfile with the name log.log in the "bücher" folder on drive "c:". Please make sure Calibre-Web has write access to the folder you specify.
On linux you can use "/dev/stderr" to log to standard-error or "/dev/stdout" to log to the standard output.
#### Log Level
You can set the loglevel of the integrated logfiles. Default is INFO, which is recommended for normal day use. DEBUG gives you more information, especially during converting books and sending e-mails. WARNING and ERROR are less noisy as all other settings and create almost no entries. The logfiles are rotating automatically after 10kbytes of logged information are reached. The last 2versions are backuped.
## Feature Configuration
#### Location and name of logfile
You can specifiy a different name and different location for the logfile. logfile.log creates a logfile with this name in the Calibre-Web config folder (root folder of Calibre-Web or the .calibre-web folder in your home directory), where c:\bücher\log.log creates a logfile with the name log.log in the "bücher" folder on drive "c:" (Windows). Please make sure Calibre-Web has write access to the folder you specify.
You can use "/dev/stderr" to log to standard-error or "/dev/stdout" to log to the standard output. This magic pathes also work for windows installations
#### Enable Access Log
If activated Calibre-Web logs every request to the server in a seperate file (access.log per default). The path and name of the file can be changed with the same rules as mentioned in **Location and name of Logfile**
### Feature Configuration
#### Convert non-English characters in title and author while saving to disk:
In the default behavior Calibre-Web converts all title and author names for saving to disk to their phonetic ASCII representation. To avoid this (especially for CJK-Languages) and keep the unicode chacacters uncheck this setting.
### Enable Uploading:
Tick to enable uploading of PDF, kepub, epub, FB2, TXT, Mobi, AZW, AZW3, HTML, RTF, ODT, DJVU, PRC, DOC, DOCX, MP3, M4A, M4B, CBR, CBZ, and CBT files. The allowed file formats can be changed by editing the **Allowed Upload Fileformats** list. If imagemagick library is installed, covers can be extracted from some (PDF, epub, CBT, CBZ) of the uploaded file formats. With installed rarfile covers from cbr files can be extracted also. If a language viewing restriction is applied while uploading the book, book language is automatically set to this language to allow the user to view the recently uploaded book.
Books can also be uploaded using drag and drop. Just drag your files to the main area of Calibre-Web, the shelf order page is excludes, all other pages work. Uploading more than one file at a time is also possible.
### Enable anonymous browsing:
Tick to allow not logged-in users to browse the catalogue, anonymous user permissions can be changed as admin (showing up as "Guest" user in admin section)
#### Enable public registration:
### Enable public registration:
Tick to enable public user registration. Users can then register with the Calibre-Web instance on their own with a valid email address. In the SMTP Server section valid domains for registrations can be limited.
If the additional setting "Use E-Mail as Username" is set, users can not choose their own username, the e-mail address is taken as username.
Prerequisites: The SMTP Server setup has to be completed.
### Enable anonymous browsing:
Tick to allow not logged in users to browse the catalogue, anonymous user permissions can be set as admin ("Guest" user)
### Enable Uploading:
Tick to enable uploading of PDF, epub, FB2, TXT, Mobi, AZW, AZW3, HTML, RTF, ODT, DJVU, PRC, DOC, DOCX, MP3, M4A, M4B, CBR, CBZ, and CBT files. If imagemagick library is installed, covers can be extracted from some (PDF, epub, CBT, CBZ) of the uploaded file formats. With installed rarfile covers from cbr files can be extracted also. If a language viewing restriction is applied while uploading the book, book language is automatically set to this language to allow the user to view the recently uploaded book. Books can also be uploaded using drag and drop. Just drag your files to the main area of calibre-web, the shelf order page is excludes, all other pages work. Uploading more than one file at a time is also possible.
### Enable remote login ("magic link"):
Tick to enable remote login, i.e. a link that allows user to log in via a different device.
@ -48,41 +68,60 @@ The remote login feature was made for devices where it is hard to enter a lot of
![](https://user-images.githubusercontent.com/6438895/60754029-99e3ad00-9fdb-11e9-8d70-3bbebedc3518.png)
On your ebook reader (or any other device you want to get logged in) you click on magic link. Afterwards you log in on you desktop computer with the account you want to get logged in on the reader and afterwards you enter the generated magic link (visible on your ebook reader) in the desktop computer. Magically after one or two seconds you are logged in on the ebook reader, too.
#### Enable Kobo sync
It's possible to sync your kobo reader with Calibre-Web. Configuration details are described [here](https://github.com/janeczku/calibre-web/wiki/Kobo-Integration).
#### Allow Reverse Proxy Authentication
If you're using this feature, it's assumed that there's no access to the Calibre-Web service without going through the proxy responsible for setting the headers, as it allows for unchallenged login (i.e., it assumes the login challenge happens upstream, in some SSO flow).
Don't use this setting for "normal" proxing applications.
### External binaries
You can choose to use calibre's ebook converter to convert ebooks from one format to another. Please choose the corresponding option. In path to convertertool the path and name of the file ebook-converter (part of calibre) has to be entered. (On Linux usualy /opt/calibre/ebook-convert, for windows it's usually c:\program files\calibre\ebook-convert.exe). Calibre offers a lot of options to modify the behaviour of the ebook-converter, the options can be entered in the E-Book converter settings.\
#### Path to Calibre E-Book Converter
You can choose to use calibre's ebook converter to convert ebooks from one format to another. In path to convertertool the path and name of the file ebook-converter (part of calibre) has to be entered. (On Linux usualy /opt/calibre/ebook-convert, for windows it's usually c:\program files\calibre\ebook-convert.exe). Calibre offers a lot of options to modify the behaviour of the ebook-converter, the options can be entered in the E-Book converter settings.\
The filepicker icon right to the input field can be used to choose the right binary
#### Path to Kepubify E-Book Converter
You can choose to use the [kepubify ebook converter](https://github.com/pgaskin/kepubify/releases/latest) to convert ebooks from epub to Kepub. The filepicker icon right to the input field can be used to choose the right binary.
### Using Goodreads integration
This menu is only showing up if the optional dependencies "goodreads" and "python-Levenshtein" are installed. You need to have an API key with goodreads (www.goodreads.com) to use the feature. Currently, showing authors information are supported (view books by author).\
Goodreads no longer allows to create new api tokens. The service will probably be discontinued sooner or later, so this feature will not be expanded.\
<img src="images/goodreads.png" height="600">
### Using LDAP for user handling
The configuration for LDAP login is described [here](https://github.com/janeczku/calibre-web/wiki/LDAP-Login).
## UI Configuration:
**Title:**\
### View Configuration:
#### Title
The title of the instance of Calibre-Web can be changed (useful if you are having more than on instance running). The name is shown in the upper left corner of the web page.
**Books per page:**\
#### Books per page
Limits the number of book covers shown on one page (and the number of books loading during the infinite scrolling mode). To prevent the infinite scrolling mode set the "Books per page" to a number displayed on one page in your browser. In this case you will see pagination information on the bottom of the page (only valid for the Standard Theme)
**No. of random books:**\
#### No. of random books
Limits the number of books showing up in the random books section. To deactivate the feature untick the "Show random books in detail view" on the user's settings page.
**No. of Authors to Display before hiding:**\
If books having many authors, cover view pages can be very confusing. Therefore it's possible to limit the number of authors shown in this case. Entering a zero deactivates this feature and all authors are shown.
#### No. of Authors to Display before hiding
If books having many authors, cover view pages can be very confusing. Therefore, it's possible to limit the number of authors shown in this case. Entering a zero deactivates this feature and all authors are shown.
**Theme:**\
#### Theme
Currently Calibre-Web supports two theme, the Standard light one, and the dark Caliblur! plex like theme.
Regular expression for ignoring columns and Link read/unread status to Calibre column:\
If you having a Boolean custom column in Calibre you can use it as a "global" read/unread status (only useful in single user environments) In this case you can select this column in the Link read status. After saving the Read/Unread selection on each book is read from this column and also saved to this field in the calibre-database. Furthermore you should Enter this column name to the "Regular expression for ignoring columns", so the column isn't showing up twice in Calibre-Web.\
#### Regular expression for ignoring columns and Link read/unread status to Calibre column
If you're having a Boolean custom column in Calibre you can use it as a "global" read/unread status (only useful in single user environments) In this case you can select this column in the Link read status. After saving the Read/Unread selection on each book is read from this column and also saved to this field in the calibre-database. Furthermore you should Enter this column name to the "Regular expression for ignoring columns", so the column isn't showing up twice in Calibre-Web.\
Example: `.\*` would exclude all custom columns, `Read` only the column with the name column, `^My\scol.\*` all Columns starting with `My col`.
The filtering is based on the columns name (headline in German Calibre) and not the column lookup
**Regular expression for title sorting:**\
Calibre stores internally the title and a "sorted title". Title often starting with articles like "A" in English, or "Die/Der/Das" in German, which make no sense to sort after, therefore all of the listed words in these field are ignored for sorting the title. The default is taken from a German Calibre program. For french it should be something like "^(Le|La)\s"
**Link Read/Unread Status to Calibre Column:**\
For a Calibre-Web multi user use case, please leave this field empty. In this case Calibre-Web stores the read status in it's own database.
In a single user Calibre installation you can use a Boolean custom column to keep track of your read and unread books. Calibre-web can do the following. You can link the Calibre status to the read/unread status in Calibre-Web. As mentioned above this only works in a SINGLE USER use-case. If you are having more than one user in Calibre-Web this will cause trouble, because the read/unread status is used for all users, so if one user ticks a book as read, all users will see this book as read. In a multi user Calibre-Web use case it's absolutely mandatory not to use this feature.\
#### Link Read/Unread Status to Calibre Column
For a Calibre-Web multi-user use case, please leave this field empty. In this case Calibre-Web stores the read status in it's own database.
In a single user Calibre installation you can use a Boolean custom column to keep track of your read and unread books. Calibre-Web can do the following. You can link the Calibre status to the read/unread status in Calibre-Web. As mentioned above this only works in a SINGLE USER use-case. If you are having more than one user in Calibre-Web this will cause trouble, because the read/unread status is used for all users, so if one user ticks a book as read, all users will see this book as read. In a multi user Calibre-Web use case it's absolutely mandatory not to use this feature.\
How to use the feature?
1. Open Calibre (the Desktop program) and create a Boolean custom column name it accordingly (e.g. Read Status)
2. Calibre will ask you for a restart to apply the change. Afterwards please close Calibre
@ -91,27 +130,24 @@ How to use the feature?
5. The field "Link read/unread status to Calibre column" should now offer a selection of all Boolean custom columns of the corresponding Calibre library, select the appropriate entry and save
The read/unread status is now identical in Calibre and Calibre-Web
**Visibility Restrictions based on Calibre Custom Column:**\
#### Visibility Restrictions based on Calibre Custom Column
You can add restrictions based on Custom Columns if you want to hide certain books from some users (like your kids). In this setting you define the Custom Column where the restriction shall be based on. If you see None as only option, you have no text content Custom Columns in your Calibre Lib.
The restrictions are on per user base, to change the restrictions of existing users, go to `edit user` and than you can edit the restrictions for this specific user.
#### Regular expression for title sorting
Calibre stores internally the title and a "sorted title". Title often starting with articles like "A" in English, or "Die/Der/Das" in German, which make no sense to sort after, therefore all of the listed words in these field are ignored for sorting the title. The default is taken from a German Calibre program. For french it should be something like "^(Le|La)\s"
### Default settings and visibility for new users
The options selected in this section define the access rights and visibility new users having upon registering, and the default settings for newly created users by the admin (can be changed during initial creation, or later by admins).
The visibility (except Visibility Restriction settings) can be changed by the users themselves later on. The Guest user (User for anonymous access) is an except from this, only admins can change the visibility for the Guest user.
**Visibility Restrictions based on Calibre Custom Column:**\
#### Visibility Restrictions based on Calibre Custom Column
You can allow and deny the visibility of books based on the content of the Custom Column selected by `View Restriction based on Calibre Custom Column` setting. You can define a default Visibility in the `Default Visibility for New Users` section. Admins can change their own visibility restrictions on their own user settings page. Allowed column types are "Text, column shown in the Tag Browser" and "Comma separated text" You can restrict the visibility to only certain entries in this column (like user is only allowed to view books with entry "Kids") by allowing this Column entry, or exclude certain entries (like user is not allowed to view books with entry "Adult"). Allowing and denying content based on Custom Columns can be combined and can also be combined with restricts based on tags.
**Visibility Restrictions based on Tags:**\
#### Visibility Restrictions based on Tags
You can allow and deny the visibility of books based on `tags`. You can define a default Visibility based on tags in the `Default Visibility for New Users` section. Admins can change their own visibility restrictions on their own user settings page. You can restrict the visibility to only certain tags (like user is only allowed to view books tagged as "kid") by allowing this tag, or exclude books with certain tags (like user is not allowed to view books with tag "Adult"). Allowing and denying content based on Custom Columns can be combined and can also be combined with restricts based on tags.
### eBook Viewer and eBook Download
The integrated eBook viewer is available for pdf, epub, txt and cbr, cbz and cbt files. The option is showing up if user has the right to `View Ebooks`. If you are upgrading from older versions, it might be possible that the admin user lost the right to download or view books.
# eBook Viewer and eBook Download
The integrated eBook viewer is available for pdf, epub, djvu, txt and cbr, cbz and cbt files. The option is showing up if user has the right to `View Ebooks`. If you are upgrading from older versions, it might be possible that the admin user lost the right to download or view books.
### Using Goodreads integration
This menu is only showing up if the optional dependencies "goodreads" and "python-Levenshtein" are installed. You need to create an API key with goodreads (www.goodreads.com) to use the feature. Currently showing authors information are supported (view books by author)
![Goodreads](images/goodreads.png)

@ -1,6 +1,6 @@
## Optional features for installation with pip
Optional features of calibre-web can be installed with pip by excecuting `pip install calibreweb[extraname]`. The "[" and "]" are part of the command and shall not be replaced
Optional features of Calibre-Web can be installed with pip by excecuting `pip install calibreweb[extraname]`. The "[" and "]" are part of the command and shall not be replaced
### gdrive
Enables gdrive as storage backend for your ebooks

40
FAQ.md

@ -6,12 +6,12 @@ Python is a very modular programming language, special functionality can be incl
### What do I do if I lose my "Admin" password?
If there is more than on admin on your instance, any other admin can generate a new password for your account.
Please stop your calibre-web instance and start Calibre-Web with the commandline option -s [username]:[newpassword], to set a new password for your admin
Please stop your Calibre-Web instance and start Calibre-Web with the commandline option -s [username]:[newpassword], to set a new password for your admin
### How to Backup Calibre-Web Settings?
All settings of Calibre-web are stored in the app.db in the root folder of the project. If you are using Google Drive as ebook storage than you also need to backup the gdrive.db, settings.yaml and gdrive_credentials files.
All settings of Calibre-Web are stored in the app.db in the root folder of the project. If you are using Google Drive as ebook storage than you also need to backup the gdrive.db, settings.yaml and gdrive_credentials files.
### Which OPDS-Readers work with Calibre-Web?
@ -34,17 +34,17 @@ I'm not using all the readers regularly, so issues might appear from time to tim
### Download File / Cover not found problems
Why is my epub xxx.epub not working in the reader?
Calibre-web uses the futurepress-javascript-epub-reader library to display epubs. Unfortunately some ebooks aren't fully specification compliant, and the epub-reader library has it's own limitations and errors, so from time to time certain ebook aren't displayable by Calibre-web.
Calibre-Web uses the futurepress-javascript-epub-reader library to display epubs. Unfortunately some ebooks aren't fully specification compliant, and the epub-reader library has it's own limitations and errors, so from time to time certain ebook aren't displayable by Calibre-Web.
### Why don't you support Calibre's virtual Libs?
Virtual libraries are implemented as searches in Calibre's own searching language. Supporting this would mean a complete reimplementation of Calibre's searching functions, which is a bit out of my time and Calibre-web's feature scope.
Virtual libraries are implemented as searches in Calibre's own searching language. Supporting this would mean a complete reimplementation of Calibre's searching functions, which is a bit out of my time and Calibre-Web's feature scope.
### What is the maximum file-size which can be uploaded through Calibre-web?
### What is the maximum file-size which can be uploaded through Calibre-Web?
Calibre-web's default server ('tornado') limits the uploaded file size to 200MB, 'Gevent' the server from the optional requirement has no hardcoded limit (or nothing I'm aware of).
Calibre-Web's default server ('tornado') limits the uploaded file size to 200MB, 'Gevent' the server from the optional requirement has no hardcoded limit (or nothing I'm aware of).
### My file is smaller then 200MB, but I get a '413 - Request Entity To Large' error message
@ -52,29 +52,29 @@ Calibre-web's default server ('tornado') limits the uploaded file size to 200MB,
If you are using some additional systems like a proxy or reverse proxy, they must be configured to support the file size as well. See [https://www.keycdn.com/support/413-request-entity-too-large](https://www.keycdn.com/support/413-request-entity-too-large) for a possible fix.
### Can Calibre-web execute malicious code in an epub?
### Can Calibre-Web execute malicious code in an epub?
If you just organize your epubs with Calibre-Web, the content of the epub is not touched, and nothing gets to execution.\
If you use the included epub-reader, it is a different story:\
Calibre-web unpacks the epub (which are normal zip files) to a folder on the server which is accessible by the browser. Then Calibre-web sends the reader page to the browser. The browser starts the epub-reader JavaScript file, which itself starts to build up the webpage you see. During that process, the file contents of the epub file are loaded into the browser. The content is just normal html pages, which can include stylesheet files and JavaScript files. So if there is malicious code included the epub, or links to JavaScript code, the browser (if not prevented somehow) will start to interpret it.
Calibre-Web unpacks the epub (which are normal zip files) to a folder on the server which is accessible by the browser. Then Calibre-Web sends the reader page to the browser. The browser starts the epub-reader JavaScript file, which itself starts to build up the webpage you see. During that process, the file contents of the epub file are loaded into the browser. The content is just normal html pages, which can include stylesheet files and JavaScript files. So if there is malicious code included the epub, or links to JavaScript code, the browser (if not prevented somehow) will start to interpret it.
If you are not sure, you could rename the epub to zip open it and search for js-code and delete it, and afterwards rename it to epub again. Also tools like the [Sigil Epub Editor](https://github.com/Sigil-Ebook/Sigil) could help to dig deeper into the suspicious books.
### What to do if cover pictures are not extracted from PDF files:
Symptom: Calibre-web logs a message like: `WARNING - PDF extraction forbidden by ImageMagick policy: not authorized '/tmp/calibre_web/xxxxxxxxxxxxxxxxxx' @ error/constitute.c/ReadImage/412` during upload of PDF files.
Symptom: Calibre-Web logs a message like: `WARNING - PDF extraction forbidden by ImageMagick policy: not authorized '/tmp/calibre_web/xxxxxxxxxxxxxxxxxx' @ error/constitute.c/ReadImage/412` during upload of PDF files.
ImageMagick recently changed their security policy, they now deny per default PDF operations, so covers can't be extracted anymore, you have to allow it in the policy.xml file of ImageMagick (located in /etc/Imagemagick-6) by changing line:
`<policy domain="coder" rights="none" pattern="PDF" />`
to
`<policy domain="coder" rights="read" pattern="PDF" />`
Calibre-web has to be restarted after changing the policy.xml file. Covers should be extracted without error from uploaded PDF files.
Calibre-Web has to be restarted after changing the policy.xml file. Covers should be extracted without error from uploaded PDF files.
### Mass add books
It's possible to upload several books at once by selecting more than one file. The limitation is the upload size of the Calibre-web internal server (several hundred megabyte). Another possibility is via a normal shall script by watching a folder content. Prerequisites for the example below is an installed Calibre program. The script has to be called regularly (cron job). The script watches for content in the supervised path, calls Calibre to add the files in the folder to the library and deletes the files in the last step from the source folder.
It's possible to upload several books at once by selecting more than one file. The limitation is the upload size of the Calibre-Web internal server (several hundred megabyte). Another possibility is via a normal shall script by watching a folder content. Prerequisites for the example below is an installed Calibre program. The script has to be called regularly (cron job). The script watches for content in the supervised path, calls Calibre to add the files in the folder to the library and deletes the files in the last step from the source folder.
```
#!/bin/bash
@ -87,7 +87,7 @@ fi
### Login Kobo
Kobo readers having problems using the internal web browser on non-standard ports. This means with the Calibre-web standard port the magic login link normally doesn't work. As workaround Calibre-web could be accessed via reverse proxy, or using the normal login method.
Kobo readers having problems using the internal web browser on non-standard ports. This means with the Calibre-Web standard port the magic login link normally doesn't work. As workaround Calibre-Web could be accessed via reverse proxy, or using the normal login method.
### Non ASCII Filenames on disk
@ -97,7 +97,7 @@ Non ASCII Filenames, including author names (containing korean, chinese, ... cha
### Invalid SSL configuration
In case you entered invalid key files for accessing Calibre-web through https, the ssl configuration can be overridden using the commandline arguments "-c" and "-k". The file locations can than be corrected in the web-UI.
In case you entered invalid key files for accessing Calibre-Web through https, the ssl configuration can be overridden using the commandline arguments "-c" and "-k". The file locations can than be corrected in the web-UI.
### Arrange and fill Shelfs
@ -111,21 +111,21 @@ In a one-user use case you can use the guest account for sending ebooks to kindl
### Link Read Status to Calibre Custom Column
In a single-user Calibre installation you can use a boolean custom column to keep track of your read and unread books. Calibre-web can do the following. You can link the Calibre status to the read/unread status in Calibre-web. As mentioned above this only works in a SINGLE USER use-case. If you have more than one user in Calibre-web this will cause trouble, because the read/unread status is used for all users, so if one user ticks a book as read, all users will see this book as read. In a multiuser Calibre-web use case it's absolutely mandatory not to use this feature.\
In a single-user Calibre installation you can use a boolean custom column to keep track of your read and unread books. Calibre-Web can do the following. You can link the Calibre status to the read/unread status in Calibre-Web. As mentioned above this only works in a SINGLE USER use-case. If you have more than one user in Calibre-Web this will cause trouble, because the read/unread status is used for all users, so if one user ticks a book as read, all users will see this book as read. In a multiuser Calibre-Web use case it's absolutely mandatory not to use this feature.\
How to use the feature?
1. Open Calibre (the Desktop program) and create a boolean custom column name it accordingly (e.g. Read Status)
2. Calibre will ask you for a restart to apply the change. Afterwards please close Calibre
3. For safety reasons it's recommended to restart Calibre-web
4. Log in to Calibre-web as admin and go to Admin->UI configuration->View Configuration
3. For safety reasons it's recommended to restart Calibre-Web
4. Log in to Calibre-Web as admin and go to Admin->UI configuration->View Configuration
5. The field "Link read/unread status to Calibre column" should now offer a selection of all boolean custom columns of the corresponding Calibre library, select the appropriate entry and save
The read/unread status is now identical in Calibre and Calibre-web
The read/unread status is now identical in Calibre and Calibre-Web
### How to handle Multiple Calibre Libraries
The recommended way for handling multiple libraries is to start multiple instances of Calibre-web. Instead of having several copies of the Calibre-web code, command line options can be used for this. First start Calibre-web with the normal command:\
The recommended way for handling multiple libraries is to start multiple instances of Calibre-Web. Instead of having several copies of the Calibre-Web code, command line options can be used for this. First start Calibre-Web with the normal command:\
`python3 [path to calibre-web]/cps.py`\
Configure the path to the metadata.db, set the logfile to a new filename (e.g. instance1.log) and change the port to e.g. 8084. Now stop Calibre-web rename the newly generated app.db to e.g. instance1.db. Repeat this procedure for every instance you want to run. At the end start all instance with the commandline-parameter -p:
Configure the path to the metadata.db, set the logfile to a new filename (e.g. instance1.log) and change the port to e.g. 8084. Now stop Calibre-Web rename the newly generated app.db to e.g. instance1.db. Repeat this procedure for every instance you want to run. At the end start all instance with the commandline-parameter -p:
```
nohup python3 [path to calibre-web]cps.py -p /[path to calibre-web instance1.db]
nohup python3 [path to calibre-web]cps.py -p /[path to calibre-web instance2.db]
@ -137,7 +137,7 @@ The command nohup puts the command to the background, so all instances can be st
### Concurrent access (Calibre and Calibre-Web)
If Calibre is started first, it normally blocks access to the metadata.db file and it's not possible to start Calibre-web afterwards. If Calibre-web is started first it's possible to access the metadata.db file via Calibre later. If Calibre and Calibre-web are changing book-metadata at the same time this can lead to unpredictable result.
If Calibre is started first, it normally blocks access to the metadata.db file and it's not possible to start Calibre-Web afterwards. If Calibre-Web is started first it's possible to access the metadata.db file via Calibre later. If Calibre and Calibre-Web are changing book-metadata at the same time this can lead to unpredictable result.
### How to upload Covers in other formats than jpg?

@ -10,11 +10,11 @@ Before installing Calibre-Web we have to install component: python3-pip
3. Go to the folder where you want to install calibre-web, e.g. /opt/calibre-web
4. Install virtual environment and create one for calibre web
4. Install virtual environment and create one for calibre web (module virtualenv will also work as alternative to venv module)
- `python3 -m pip install virtualenv`
- `python3 -m pip install venv`
- `python3 -m virtualenv venv`
- `python3 -m venv venv`
5. Execute the installation of Calibre-Web with newly created virtual python environment:
@ -53,11 +53,11 @@ Before installing Calibre-Web we have to install several components: python3-pip
3. Go to the folder where you want to install calibre-web, e.g. /opt/calibre-web
4. Install virtual environment and create one for calibre web
4. Install virtual environment and create one for calibre web (module virtualenv will also work as alternative to venv module)
- `python3 -m pip install virtualenv`
- `python3 -m pip install venv`
- `python3 -m virtualenv venv`
- `python3 -m venv venv`
5. Execute the installation of Calibre-Web with newly created virtual python environment:

@ -1,12 +1,12 @@
#### Manual installation
If you want to manually install calibre-web ("from source"), follow the procedure below. For Windows pip and venv come with the basic installation. On Windows the python binary can be found after installing the virtual environment under .\venv\script\python3.exe
If you want to manually install Calibre-Web ("from source"), follow the procedure below. For Windows pip and venv come with the basic installation. On Windows the python binary can be found after installing the virtual environment under .\venv\script\python3.exe
1. Make sure you have installed pip and also venv for your python version. If missing, install it by the package manager of your distribution (e.g. apt for debian like distributions)
- `sudo apt install python3-pip python3-venv`
2. Go to the folder where you want to install calibre-web, e.g. /opt/calibre-web
2. Go to the folder where you want to install Calibre-Web, e.g. /opt/calibre-web
3. Create virtual environment for calibre web in folder venv
@ -14,7 +14,7 @@ If you want to manually install calibre-web ("from source"), follow the procedur
4. Install dependencies by running `./venv/bin/python3 -m pip install -r requirements.txt`
5. Download and extract calibre-web into the current folder (in this example /opt/calibre-web)
5. Download and extract Calibre-Web into the current folder (in this example /opt/calibre-web)
6. Execute the command: `./venv/bin/python3 cps.py` (or `nohup ./venv/python3 cps.py` - recommended if you want to exit the terminal window)

@ -10,7 +10,7 @@ The following screenshot shows the relevant settings.
![Settings](images/OAuth/Github_OAuth_Settings.png)
The Callback routine has to end with `login/github/authorized` (example above is for a Calibre-Web instance living in subfolder calibre-web).
The Callback routine has to end with `login/github/authorized` (example above is for a Calibre-Web instance living in subfolder Calibre-Web).
After clicking on "Register application" Github will present you the Client ID and Client secret values.
If your Callback routine is a non encrypted endpoint, Calibre-Web will deny accepting tokens for this endpoint. You can overwrite the encrpytion check by setting an enviroment variable with the name `OAUTHLIB_INSECURE_TRANSPORT`. This is for obvious reasons ** NOT recommended** for productive systems.

@ -4,7 +4,7 @@ Reverse proxy configuration examples for apache, nginx and IIS (on Windows) to u
### Login via Header from Upstream Authentication Source
If your reverse proxy has some kind of authentication mechanism, you can configure Calibre-web to log users in based on headers received from the proxy. If using this feature, it's important that only the proxy is exposed to users, because if the Calibre-web instance is at all directly exposed to traffic, then a malicious user will be able to log in as any user that exists via simply setting a header.
If your reverse proxy has some kind of authentication mechanism, you can configure Calibre-Web to log users in based on headers received from the proxy. If using this feature, it's important that only the proxy is exposed to users, because if the Calibre-Web instance is at all directly exposed to traffic, then a malicious user will be able to log in as any user that exists via simply setting a header.
In the admin configuration, check the box marked `Allow Reverse Proxy Authentication`, and then fill in the text box that appears with the name of the header that will contain the username. If you pass a username that isn't present in the database, nothing will happen - the user must exist beforehand in order to login.
@ -53,7 +53,7 @@ proxy_redirect http://$host/ https://$host:12345/;
Credits to @norangebit see issue [1891](https://github.com/janeczku/calibre-web/issues/1891)
In Nginx Proxy Manager create a new proxy host for calibre-web.
In Nginx Proxy Manager create a new proxy host for Calibre-Web.
You can enable force SSL, HSTS and Block Common Exploits without any problems.
Go to advanced tab and enter the following parameters:
```
@ -76,7 +76,7 @@ proxy_busy_buffers_size 256k;
**Optional Kobo sync support**
Calibre-web
Calibre-Web
1. Go to admin setting in and enable Kobo sync.
2. Set Server External Port to 80.
3. If the port is set to 443, it is not possible to fetch covers.
@ -145,13 +145,13 @@ Then add Reverse Proxy Rules:
![proxy rules step2](images/iis_8.png)
Add the ip address and port of your calibre-web instance: e.g. `http://127.0.0.1:8083`
Add the ip address and port of your Calibre-Web instance: e.g. `http://127.0.0.1:8083`
Change the rule afterwards:
![proxy rules step2](images/iis_9.png)
Enter the folder you want to have calibre-web in (`/calibre-web` instead of `^` might also works). End the name without a slash, otherwise a call to `/calibre-web` would go to nowhere. And Add the server variable to the request and give it the same name as the folder above with starting slash (`/calibre-web` in my example, again **without trailing slash**)
Enter the folder you want to have Calibre-Web in (`/calibre-web` instead of `^` might also works). End the name without a slash, otherwise a call to `/calibre-web` would go to nowhere. And Add the server variable to the request and give it the same name as the folder above with starting slash (`/calibre-web` in my example, again **without trailing slash**)
![proxy rules step2](images/iis_10.png)
@ -243,7 +243,7 @@ Setting up is as easy as:
### Traefik 2.6.0 Example (Kobo Sync Fix Enabled)
The following example presumes that you are using the linuxserver calibre-web image for your container and that you have setup traefik 2.6.0 correctly to automatically redirect http to https requests on the websecure entry point (sometimes setup as https entrypoint)
The following example presumes that you are using the linuxserver Calibre-Web image for your container and that you have setup traefik 2.6.0 correctly to automatically redirect http to https requests on the websecure entry point (sometimes setup as https entrypoint)
```yaml
calibre-web:
image: linuxserver/calibre-web

@ -22,8 +22,8 @@ WantedBy=multi-user.target
### Service file for installation via pip
Find the location of the calibre-web starterfile `cps`, this should be something like `/home/<user>/.local/bin/cps`.
Another option is using `{path to correct pythoninstance} -m cps` as starterfile. The correct python instance depends on how you installed calibre-web (e.g. virtual environment, system interpreter)
Find the location of the Calibre-Web starterfile `cps`, this should be something like `/home/<user>/.local/bin/cps`.
Another option is using `{path to correct pythoninstance} -m cps` as starterfile. The correct python instance depends on how you installed Calibre-Web (e.g. virtual environment, system interpreter)
```
[Unit]

@ -8,7 +8,7 @@ Ensure you add Python to the environmental variables
Check if python is reachable via CMD\
![Check python](images/check_python.png)
Create a folder called "Calibre-Web", or name it whatever you like and extract the "Calibre-web" files into the folder
Create a folder called "Calibre-Web", or name it whatever you like and extract the "Calibre-Web" files into the folder
Change the directory to "C:\Calibre-Web" and run the below command to install the requirements