+ + Authentication Settings +
++ Configure authentication methods for your Booklore instance. Internal authentication is always enabled, + and you can optionally enable OIDC for external authentication providers. +
+ + Internal Authentication +
++ Internal authentication is always enabled and cannot be disabled. However, OIDC can be used alongside internal authentication if OIDC is enabled. +
+OIDC Authentication (Experimental):
-OIDC Provider Settings:
-OIDC User Provisioning:
-Automatic user provisioning:
-Default permissions for auto-provisioned users:
-Default libraries for auto-provisioned users:
-+ + OIDC Authentication (Experimental) +
++ Configure external authentication providers using OpenID Connect (OIDC) protocol for seamless single sign-on integration. +
+OIDC Provider Settings
+OIDC User Provisioning
+- Kobo Integration Settings: - - -
++ + Kobo Integration Settings + + +
++ Configure Kobo device integration to sync your library books and reading progress with your Kobo e-reader. +
+Kobo Settings (Admin Only):
-
- Pros: KEPUB format enables enhanced Kobo features like better typography, reading stats, and faster page turns.
-
- Cons: Conversion takes extra processing time and may occasionally fail for complex layouts.
- Books over the size limit below will skip conversion automatically.
+ @if (hasKoboTokenPermission) {
+
+ + Sync Configuration +
++ Enable and configure synchronization between your Booklore library and Kobo device.
+ + Administrator Settings +
++ Configure advanced Kobo sync settings that affect all users on this server. +
- Large files (100MB+) can cause conversion timeouts and server strain. Lower limits ensure faster syncing but may skip conversion of larger books. + +
+ Pros: KEPUB format enables enhanced Kobo features like better typography, reading stats, and faster page turns.
+
+ Cons: Conversion takes extra processing time and may occasionally fail for complex layouts.
+ Books over the size limit below will skip conversion automatically.
+
+ Large files (100MB+) can cause conversion timeouts and server strain. Lower limits ensure faster syncing but may skip conversion of larger books.
+
+ Recommended: 50-100MB for most libraries. Very large books will sync as regular EPUB regardless of this setting.
+
Access Restricted
+
+ Access to Kobo sync is restricted.
- Recommended: 50-100MB for most libraries. Very large books will sync as regular EPUB regardless of this setting.
+ Please contact your administrator to request permission.
- Please contact your administrator to request permission. - -
- KOReader Sync Settings: - - -
- -@if (hasPermission) { - -} @else { -- Please contact your administrator to request permission. - +
+ + KOReader Sync Settings + + +
++ Configure KOReader integration to sync your reading progress and annotations between your device and Booklore library. +
+ + Sync Configuration +
++ Enable and configure synchronization between your Booklore library and KOReader device. +
+Access Restricted
+
+ Access to KOReader sync is restricted.
+
+ Please contact your administrator to request permission.
+
- Email Providers - -
-+ + Email Providers +
++ Configure email-sending services like Gmail, Outlook, or custom SMTP servers for sending books via email. The default email provider will be used for 'Quick Book Send' located in the Book Card menu. +
++ + Current Providers +
+- Recipient Emails - -
-+ + Recipient Emails +
++ Manage the list of recipients who will receive books via email. The 'Default' recipient will be used for 'Quick Book Send,' located in the Book Card menu. +
++ + Current Recipients +
++
+ File Naming Patterns - - +
++ Define custom naming patterns for uploaded files and for moving files within your library. Use metadata placeholders to automate organization.
-Default File Naming Pattern:
-+
+ + Default File Naming Pattern +
+Define the default naming pattern for files. This pattern applies to all libraries unless overridden.
-Preview:
-{{ generateDefaultPreview() }}
-Overrides for Libraries:
-+
+ + Library-Specific Overrides +
+Define custom naming patterns for specific libraries. Leave empty to use the default pattern.
- - @for (library of libraries; track library.id) { -Preview:
-{{ generateLibraryPreview(library) }}
-Available Placeholders:
++
+ + Available Placeholders +
+
Use placeholders to dynamically insert book metadata into file names and folder paths. These will be replaced with actual values when uploading or moving files.
- You can also wrap parts of the pattern in {{ '{{<...>}' }} to make them optional, if any placeholder inside is missing, that section will be omitted entirely.
-
-
{{ '{title}' }}– Book title
- {{ '{authors}' }}– Author(s)
- {{ '{year}' }}– Full year (e.g. 2025)
- {{ '{series}' }}– Series name
- {{ '{seriesIndex}' }}– Series index (e.g. 01)
- {{ '{language}' }}– Language code (e.g. en)
- {{ '{publisher}' }}– Publisher name
- {{ '{isbn}' }}– ISBN number
- {{ '{currentFilename}' }}Original file name (with extension)
-
Available Placeholders
+-
+
{{ '{title}' }}– Book title
+ {{ '{authors}' }}– Author(s)
+ {{ '{year}' }}– Full year (e.g. 2025)
+ {{ '{series}' }}– Series name
+ {{ '{seriesIndex}' }}– Series index (e.g. 01)
+ {{ '{language}' }}– Language code (e.g. en)
+ {{ '{publisher}' }}– Publisher name
+ {{ '{isbn}' }}– ISBN number
+ {{ '{currentFilename}' }}Original file name (with extension)
+
Optional blocks
-+
Optional blocks
+
Surround parts of your pattern with angle brackets
- {{ '{<...>}' }}
- to make them optional.
If any placeholder inside the block has no value, the whole block is excluded.
+ {{ '{<...>}' }}
+
+ to make them optional. If any placeholder inside the block has no value, the whole block is excluded.
Example:
-{{ '{<{seriesIndex} - >{title}' }}
• 01 - Dune (if {{ '{seriesIndex}' }} exists)
• Dune (if {{ '{seriesIndex}' }} is missing)
Example:
+{{ '{<{seriesIndex} - >{title}' }}
-
+
01 - Dune(if{{ '{seriesIndex}' }}exists)
+ Dune(if{{ '{seriesIndex}' }}is missing)
+
+ + Example Patterns & Output +
++ See how different patterns work with sample book metadata and learn best practices for organizing your library. +
+Example Patterns & Output:
- -Examples with Full Metadata
-
- title: Harry Potter and the Sorcerer's Stone
- authors: J.K. Rowling
- series: Harry Potter
- seriesIndex: 01
- year: 1997
- currentFilename: harry1_original.epub
-
Basic pattern: {{ '{authors} - {title}' }}
Output: J.K. Rowling - Harry Potter and the Sorcerer's Stone.epub
Examples with Full Metadata
+ -Pattern with punctuation: {{ '{title}: {series}' }}
Output: Harry Potter and the Sorcerer's Stone: Harry Potter.epub
Basic pattern: {{ '{authors} - {title}' }}
Output: J.K. Rowling - Harry Potter and the Sorcerer's Stone.epub
Series in folder path: {{ '{authors}/{series}/{seriesIndex} - {title}' }}
Output: J.K. Rowling/Harry Potter/01 - Harry Potter and the Sorcerer's Stone.epub
Pattern with punctuation: {{ '{title}: {series}' }}
Output: Harry Potter and the Sorcerer's Stone: Harry Potter.epub
Folder only: {{ '{title}/' }}
Output: /Harry Potter and the Sorcerer's Stone/harry1_original.epub
Series in folder path: {{ '{authors}/{series}/{seriesIndex} - {title}' }}
Output: J.K. Rowling/Harry Potter/01 - Harry Potter and the Sorcerer's Stone.epub
Absolute path: {{ '/{authors}/{title}' }}
Output: /J.K. Rowling/Harry Potter and the Sorcerer's Stone.epub
Folder only: {{ '{title}/' }}
Output: /Harry Potter and the Sorcerer's Stone/harry1_original.epub
Reuse original filename in path: {{ '{authors}/{series}/{currentFilename}' }}
-
Output: J.K. Rowling/Harry Potter/harry1_original.epub
Absolute path: {{ '/{authors}/{title}' }}
Output: /J.K. Rowling/Harry Potter and the Sorcerer's Stone.epub
Preserve original filename only: {{ '{currentFilename}' }}
Output: harry1_original.epub
Empty pattern (defaults to current filename): {{ '' }}
Output: harry1_original.epub
Reuse original filename in path: {{ '{authors}/{series}/{currentFilename}' }}
Output: J.K. Rowling/Harry Potter/harry1_original.epub
Examples with Missing Optional Fields
-
- title: Project Hail Mary
- authors: Andy Weir
- year: 2021
- series: (not provided)
- seriesIndex: (not provided)
- currentFilename: project_hail_mary_final.epub
-
Pattern with optional blocks: {{ '{authors}/<{series}/><{seriesIndex}. >{title}< ({year})>' }}
Output: Andy Weir/Project Hail Mary (2021).epub
Examples with Missing Optional Fields
+ -Fallback with seriesIndex and dash: {{ '<{seriesIndex}. >{title}< - {authors}>' }}
Output: Project Hail Mary - Andy Weir.epub
Pattern with optional blocks: {{ '{authors}/<{series}/><{seriesIndex}. >{title}< ({year})>' }}
Output: Andy Weir/Project Hail Mary (2021).epub
Brackets & punctuation fallback: {{ '<[{series}] >{title} - {authors}' }}
Output: Project Hail Mary - Andy Weir.epub
Fallback with seriesIndex and dash: {{ '<{seriesIndex}. >{title}< - {authors}>' }}
Output: Project Hail Mary - Andy Weir.epub
Series + punctuation fallback: {{ '<{series}: >{title} by {authors}' }}
Output: Project Hail Mary by Andy Weir.epub
Brackets & punctuation fallback: {{ '<[{series}] >{title} - {authors}' }}
Output: Project Hail Mary - Andy Weir.epub
Only folders, no filename: {{ '{authors}/' }}
Output: Andy Weir/project_hail_mary_final.epub
Series + punctuation fallback: {{ '<{series}: >{title} by {authors}' }}
Output: Project Hail Mary by Andy Weir.epub
Deep nested folders: {{ '{authors}/books/<{series}/>{title}/' }}
Output: Andy Weir/books/Project Hail Mary/project_hail_mary_final.epub
With static folder prefix: {{ 'Books/<{series}/>{authors} - {title}' }}
Output: Books/Andy Weir - Project Hail Mary.epub
Use original filename in path: {{ '{authors}/books/<{series}/>{currentFilename}' }}
Output: Andy Weir/books/project_hail_mary_final.epub
Prefix current filename manually: {{ '{authors}/final__{currentFilename}' }}
Output: Andy Weir/final__project_hail_mary_final.epub
Filename preserved, renamed folder: {{ '{title}/source/{currentFilename}' }}
Output: Project Hail Mary/source/project_hail_mary_final.epub
Use current filename with year suffix: {{ '{authors}/{year}__{currentFilename}' }}
Output: Andy Weir/2021__project_hail_mary_final.epub
Fallback with optional + extras folder: {{ '<{series}/>{authors}/extras/{currentFilename}' }}
Output: Andy Weir/extras/project_hail_mary_final.epub
Archive structure using original name: {{ 'archive/<{series}/>{year}/{currentFilename}' }}
Output: archive/2021/project_hail_mary_final.epub
Structured folder + renamed file: {{ '{authors}/<{series}/>{title} ({year}) by {authors}' }}
Output: Andy Weir/Project Hail Mary (2021) by Andy Weir.epub
Use original filename with year suffix: {{ '{authors}/{year}__{currentFilename}' }}
Output: Andy Weir/2021__project_hail_mary_final.epub
Book Cover Image
- - -Regenerate Covers? - - -
-Auto Book Search - - +
+ + Global Preferences +
++ Configure global settings for your Booklore instance, including cover image handling, search preferences, and file upload limits.
-Similar Book Recommendation - - -
-Max File Upload Size: - - -
-+ + Book Cover Image +
+ + Regenerates cover images for all EPUB and PDF books (excluding locked ones) from the embedded covers in the file. +
+CBX Cache Size: - - -
-+ + Search & Recommendations +
++ + Automatically attempts metadata matching when the book information panel is opened. +
++ + Enables or disables similar book recommendations based on your library. +
++ + File Management +
++ + Defines the maximum allowed size (in MB) for each uploaded file. Applies to EPUB, PDF, CBZ, CBR, and CB7 formats. +
+ ++ + Limits the total size (in MB) of the CBX image cache. If exceeded, older cache entries are removed automatically. +
+