mirror of
https://github.com/gotson/komga.git
synced 2025-01-08 11:47:47 +08:00
v0.5.0
This commit is contained in:
parent
c32fafad6c
commit
59982e9c68
19
DOCKERHUB.md
19
DOCKERHUB.md
@ -29,6 +29,7 @@ docker create \
|
||||
-p 8080:8080 \
|
||||
-e KOMGA_USER_PASSWORD=your-user-password
|
||||
-e KOMGA_ADMIN_PASSWORD=your-admin-password
|
||||
-e KOMGA_LIBRARIES_SCAN_DIRECTORY_EXCLUSIONS=#recycle,@eaDir
|
||||
-v path/to/data:/config \
|
||||
-v path/to/books:/books \
|
||||
--restart unless-stopped \
|
||||
@ -54,6 +55,7 @@ services:
|
||||
environment:
|
||||
- KOMGA_USER_PASSWORD=your-user-password
|
||||
- KOMGA_ADMIN_PASSWORD=your-admin-password
|
||||
- KOMGA_LIBRARIES_SCAN_DIRECTORY_EXCLUSIONS=#recycle,@eaDir
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
@ -63,14 +65,15 @@ Container images are configured using parameters passed at runtime (such as thos
|
||||
These parameters are separated by a colon and indicate `external:internal` respectively.
|
||||
For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.
|
||||
|
||||
| Parameter | Function |
|
||||
|:-------------------------:|---------------------------------------------------|
|
||||
| `-p 8080` | The port for the Komga API |
|
||||
| `--user: 1000:1000` | User:Group identifier - see below for explanation |
|
||||
| `-v /config` | Database and Komga configs |
|
||||
| `-v /books` | Location of books library on disk |
|
||||
| `-e KOMGA_USER_PASSWORD` | Password for the `user` user |
|
||||
| `-e KOMGA_ADMIN_PASSWORD` | Password for the `admin` user |
|
||||
| Parameter | Function |
|
||||
|:----------------------------------------------:|-----------------------------------------------------------------------|
|
||||
| `-p 8080` | The port for the Komga API |
|
||||
| `--user: 1000:1000` | User:Group identifier - see below for explanation |
|
||||
| `-v /config` | Database and Komga configs |
|
||||
| `-v /books` | Location of books library on disk |
|
||||
| `-e KOMGA_USER_PASSWORD` | Password for the `user` user |
|
||||
| `-e KOMGA_ADMIN_PASSWORD` | Password for the `admin` user |
|
||||
| `-e KOMGA_LIBRARIES_SCAN_DIRECTORY_EXCLUSIONS` | Comma-separated list of patterns to exclude directories from the scan |
|
||||
|
||||
## User / Group Identifiers
|
||||
|
||||
|
59
README.md
59
README.md
@ -8,23 +8,17 @@ Komga is a free and open source comics/mangas server.
|
||||
|
||||
## Features
|
||||
|
||||
Komga just started, and for now it can:
|
||||
Features include:
|
||||
|
||||
- scan and index a root folder containing sub-folders with comic book archives in `cbz` and `cbr` format, as well as `pdf`. Rescan periodically.
|
||||
- scan and index libraries (local folders) containing sub-folders with comic book archives in `cbz` and `cbr` format, as well as `pdf`. Rescan periodically.
|
||||
- serve the individual pages of those books via an API
|
||||
- serve the complete file via an API
|
||||
- support for OPDS feed
|
||||
- provide OPDS feed
|
||||
|
||||
## Status & vision
|
||||
|
||||
For now Komga is a simple server without user interface, providing an API and OPDS feed. It can work with [Tachiyomi](https://github.com/inorichi/tachiyomi) through the official extension, as well as most OPDS readers.
|
||||
|
||||
Future versions may bring:
|
||||
|
||||
- support for multiple libraries (multiple root folders)
|
||||
- a web UI to administrate the server
|
||||
- matching with online metadata sources (like ComicVine) to enrich information like description or genre
|
||||
|
||||
The long term vision is to offer something similar to Plex, but for comics!
|
||||
|
||||
## Installation
|
||||
@ -43,7 +37,7 @@ In order to run Komga, use the following command:
|
||||
java -jar komga-x.y.z.jar
|
||||
```
|
||||
|
||||
Note that you **need** to have a valid `application.yml` configuration file for Komga to run properly, read on to the next section to find out more.
|
||||
Note that you **need** to have a valid `application.yml` configuration file (or environment variables) for Komga to run properly, read on to the next section to find out more.
|
||||
|
||||
## Configuration
|
||||
|
||||
@ -61,8 +55,7 @@ In order to make Komga run, you need to specify some mandatory configuration key
|
||||
|
||||
- `SPRING_PROFILES_ACTIVE` / `spring.profiles.active`: `prod` - this will enable the database management and upgrades for new versions.
|
||||
- `SPRING_DATASOURCE_URL` / `spring.datasource.url`: the path of the database file. For Docker I use `jdbc:h2:/config/database.h2;DB_CLOSE_DELAY=-1`, where `/config/database.h2` is the actual file inside the docker container. You can customize this part if running without docker.
|
||||
- `KOMGA_ROOT_FOLDER` / `komga.root-folder`: the root folder of your library, this is what Komga will scan.
|
||||
- `KOMGA_ROOT_FOLDER_SCAN_CRON` / `komga.root-folder-scan-cron`: a [Spring cron expression](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/support/CronSequenceGenerator.html) for root folder periodic rescans. `0 0 * * * ?` will rescan every hour. `0 */15 * * * ?` will rescan every 15 minutes.
|
||||
- `KOMGA_LIBRARIES_SCAN_CRON` / `komga.libraries-scan-cron`: a [Spring cron expression](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/support/CronSequenceGenerator.html) for libraries periodic rescans. `0 0 * * * ?` will rescan every hour. `0 */15 * * * ?` will rescan every 15 minutes.
|
||||
|
||||
### Optional configuration
|
||||
|
||||
@ -71,40 +64,56 @@ You can also use some optional configuration keys:
|
||||
- `KOMGA_USER_PASSWORD` / `komga.user-password`: the password for the user `user`. Defaults to `user`.
|
||||
- `KOMGA_ADMIN_PASSWORD` / `komga.admin-password`: the password for the user `admin`. Defaults to `admin`.
|
||||
- `KOMGA_THREADS_PARSE` / `komga.threads.parse`: the number of worker threads used for book parsing. Defaults to `2`. You can experiment to get better performance.
|
||||
- `KOMGA_LIBRARIES_SCAN_DIRECTORY_EXCLUSIONS` / `komga.libraries-scan-directory-exclusions`: a list of patterns to exclude directories from the scan. If the full path contains any of the patterns, the directory will be ignored. If using the environment variable form use a comma-separated list.
|
||||
|
||||
## What does it do?
|
||||
|
||||
Komga will scan your library's root folder for directories containing supported files (at the moment `cbz`, `zip`, `cbr`, `rar` and `pdf`):
|
||||
Komga will scan your libraries for directories containing supported files (at the moment `cbz`, `zip`, `cbr`, `rar` and `pdf`):
|
||||
|
||||
- each folder containing comic books will be made as a `Serie`
|
||||
- each comic book file inside a `Serie` will be made as a `Book`
|
||||
- each folder containing comic books will be made as a `Series`
|
||||
- each comic book file inside a `Series` will be made as a `Book`
|
||||
|
||||
It works with subfolders too, so if you have a structure like this:
|
||||
It works with sub-folders too, so if you have a structure like this:
|
||||
|
||||
```
|
||||
Parent/
|
||||
├── SubFolder/
|
||||
│ ├── file1.cbz
|
||||
│ └── file2.cbz
|
||||
└── direct1.cbz
|
||||
Comics/
|
||||
├── Private Eye/
|
||||
│ ├── Volume 1.cbz
|
||||
│ └── Volume 2.cbz
|
||||
└── One Shot.cbz
|
||||
```
|
||||
|
||||
Komga will generate:
|
||||
|
||||
- a `Serie` called _Parent_, containing a `Book` called _direct1_
|
||||
- a `Serie` called _SubFolder_, containing two `Book`s called _file1_ and _file2_
|
||||
- a `Series` called _Comics_, containing a `Book` called _One Shot_
|
||||
- a `Series` called _Private Eye_, containing two `Book`s called _Volume 1_ and _Volume 2_
|
||||
|
||||
On rescans, Komga will update Series and Books, add new ones, and remove the ones for which files don't exist anymore.
|
||||
|
||||
Then it will _parse_ each book, which consist of indexing pages (images in the archive), and generating a thumbnail.
|
||||
|
||||
## Tachiyomi configuration
|
||||
## Clients
|
||||
|
||||
### Tachiyomi
|
||||
|
||||
Komga has an official extension for [Tachiyomi](https://github.com/inorichi/tachiyomi), available from within Tachiyomi's extension menu.
|
||||
The extension is configurable, you need to specify the `server address`, `username`, and `password`.
|
||||
|
||||
![tachiyomi extension configuration screenshot](./.github/readme-images/tachiyomi-extension-configuration.jpg)
|
||||
|
||||
### OPDS readers
|
||||
|
||||
Komga works with most of the OPDS readers on Android/iOS.
|
||||
|
||||
Tested readers:
|
||||
|
||||
- Android
|
||||
- :white_check_mark: [FBReader: Favorite Book Reader](https://play.google.com/store/apps/details?id=org.geometerplus.zlibrary.ui.android)
|
||||
- :x: [Moon+ reader](https://play.google.com/store/apps/details?id=com.flyersoft.moonreader) - Authentication is not working
|
||||
|
||||
- iOS
|
||||
- :white_check_mark: [KyBook 3](http://kybook-reader.com/)
|
||||
|
||||
## APIs
|
||||
|
||||
### Native API
|
||||
@ -119,7 +128,7 @@ Komga offers a standard OPDS feed, it is available at `/opds/v1.2/catalog`.
|
||||
|
||||
The OPDS feed also supports:
|
||||
|
||||
- OpenSearch functionality, to search by `Serie`
|
||||
- OpenSearch functionality, to search by `Series`
|
||||
- [OPDS Page Streaming Extension 1.0](https://vaemendis.net/opds-pse/)
|
||||
|
||||
## Credits
|
||||
|
@ -1,10 +1,12 @@
|
||||
komga:
|
||||
root-folder: /your/library/root/directory
|
||||
root-folder-scan-cron: "* */15 * * * ?" #periodic scan every 15 minutes
|
||||
libraries-scan-cron: "* */15 * * * ?" #periodic scan every 15 minutes
|
||||
libraries-scan-directory-exclusions: #patterns to exclude directories from the scan
|
||||
- "#recycle" #synology NAS recycle bin
|
||||
- "@eaDir" #synology NAS index/metadata folders
|
||||
user-password: user-password
|
||||
admin-password: admin-password
|
||||
spring:
|
||||
datasource:
|
||||
url: jdbc:h2:./komga-database.h2;DB_CLOSE_DELAY=-1 #database will be located in the current directory
|
||||
profiles:
|
||||
active: prod
|
||||
active: prod
|
||||
|
@ -1,6 +1,8 @@
|
||||
komga:
|
||||
root-folder: D:\\your\\library\\root\\directory
|
||||
root-folder-scan-cron: "* */15 * * * ?" #periodic scan every 15 minutes
|
||||
libraries-scan-cron: "* */15 * * * ?" #periodic scan every 15 minutes
|
||||
libraries-scan-directory-exclusions: #patterns to exclude directories from the scan
|
||||
- "#recycle" #synology NAS recycle bin
|
||||
- "@eaDir" #synology NAS index/metadata folders
|
||||
user-password: user-password
|
||||
admin-password: admin-password
|
||||
spring:
|
||||
@ -8,4 +10,4 @@ spring:
|
||||
url: jdbc:h2:./komga-database.h2;DB_CLOSE_DELAY=-1 #database will be located in the current directory
|
||||
# url: jdbc:h2:D:\\komga\komga-database.h2;DB_CLOSE_DELAY=-1 #database absolute path, uncomment if necessary and comment above line
|
||||
profiles:
|
||||
active: prod
|
||||
active: prod
|
||||
|
@ -18,7 +18,7 @@
|
||||
Komga
|
||||
</v-list-item-title>
|
||||
<v-list-item-subtitle>
|
||||
Plex for comics!
|
||||
Comic books media server
|
||||
</v-list-item-subtitle>
|
||||
</v-list-item-content>
|
||||
</v-list-item>
|
||||
|
@ -29,6 +29,7 @@ class FileSystemScanner(
|
||||
fun scanRootFolder(root: Path): List<Series> {
|
||||
logger.info { "Scanning folder: $root" }
|
||||
logger.info { "Supported extensions: $supportedExtensions" }
|
||||
logger.info { "Excluded patterns: ${komgaProperties.librariesScanDirectoryExclusions}" }
|
||||
|
||||
lateinit var scannedSeries: List<Series>
|
||||
|
||||
|
@ -4,9 +4,9 @@ logging.level:
|
||||
komga:
|
||||
threads:
|
||||
parse: 1
|
||||
libraries-scan-directory-exclusions:
|
||||
- "#recycle"
|
||||
- "@eaDir"
|
||||
# libraries-scan-directory-exclusions:
|
||||
# - "#recycle"
|
||||
# - "@eaDir"
|
||||
# libraries-scan-cron: "*/5 * * * * ?"
|
||||
spring:
|
||||
profiles:
|
||||
|
Loading…
Reference in New Issue
Block a user