about
deploy
Deploy on NAS
Install Docker Suite
Install Komga
The port of the current version is
twenty-five thousand and six hundred 。
Deploy on Linux
Install Docker
Install Komga
version: "3.9" services: Komga: image: gotson/komga:latest container_name: komga ports: -2333:25600 # 2333 on the left can be modified arbitrarily environment: - TZ=Asia/Shanghai volumes: - ./ komga:/config - /root/comic:/comic # - /book:/book restart: unless-stopped
root ├── comic └── myapp ├── docker-compose.yml └── komga
Deploy on Windows
Install using Microsoft Store
Installing with EXE
Run directly using Java
java -jar komga-x.y.z.jar
PS C:\Users\admin> java -version java version "18.0.1.1" 2022-04-22 Java(TM) SE Runtime Environment (build 18.0.1.1+2-6) Java HotSpot(TM) 64-Bit Server VM (build 18.0.1.1+2-6, mixed mode, sharing)
java -jar komga-0.157.4.jar
javaw -jar komga-0.157.4.jar
Installing with Scoop
iwr -useb get.scoop.sh | iex
scoop bucket add java extras
scoop install java/temurin-lts-jdk
scoop install komga
PS C:\Users\admin> scoop install komga Updating Scoop... Updating 'extras' bucket... Installing 'komga' (0.157.4) [64bit] from extras bucket komga-0.157.4.jar (132.2 MB) [================================================================================] 100% Checking hash of komga-0.157.4.jar ... ok. Linking ~\Scoop\apps\komga\current => ~\Scoop\apps\komga\0.157.4 Creating shim for 'komga'. Persisting config 'komga' (0.157.4) was installed successfully! Notes ----- Default URL is http://localhost:8080 'komga' suggests installing 'java/oraclejdk' or 'java/openjdk'.
komga
scoop update komga
scoop uninstall komga
Reverse proxy
location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://your_server_url:8080 ; proxy_http_version 1.1; }
komga.yourdomain.com { reverse_proxy http://your-komga-server:25600 }
to configure
initialization
Create comic book library
-
Fill in any name you like, such as "comic" -
Click the "Browse" button to find the location where you saved the comic. If the container is filled in, it is the path inside the container, such as the path in the previous tutorial /comic -
His "next book" should be the wrong translation. It is the "next step" that is right
You can check: -
Automatically empty the dustbin after each scan -
Automatically convert to CBZ format
-
-
Other options are evaluated by themselves
Edit Metadata
-
title -
author -
Serials -
language -
Reading direction -
brief introduction -
press -
schools -
label -
……
Import comics
This screen allows you to import files other than the existing library You can only import files into an existing sequence, in which case Komga will move or copy the files to the directory of the selected sequence
If you have selected a number for a book and a book with that number already exists, you can compare the two books. If you decide to import the book Komga will upgrade existing books to use new files, effectively replacing old files with new ones
comic ├── test |☆ - Cartoon 1 |L -- Comic 2 └── test2 ☆ - Cartoon 3 L -- Better quality comics 2
-
You have /comic/test Set as a comic library -
be known as test 's folder is automatically recognized as a comic series -
take test2 In Cartoon 3 Add to test series -
use test2 In Better quality comics 2 replace test In Cartoon 2
Omit in front environment: - TZ=Asia/Shanghai - PUID=0 - PGID=0 Omitted later
Assign Permissions
arrangement
Create folders by series
comic ▄ - Fire Shadow │Γ - Huoying 1 │Γ - Huoying 2 │ └── …… ▄ - Pirates │☆ - Pirate 1 │☆ - Pirate 2 │ └── …… L -- Dunk ☆ Slam 1 ▄ - Slam Dunk 2 └── ……
Embedded metadata
<? xml version="1.0" encoding="utf-8"?> <xs:schema elementFormDefault="qualified" xmlns:xs=" http://www.w3.org/2001/XMLSchema "> <xs:element name="ComicInfo" nillable="true" type="ComicInfo" /> <xs:complexType name="ComicInfo"> <xs:sequence> <xs:element minOccurs="0" maxOccurs="1" default="" name="Title" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="Series" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="Number" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="-1" name="Count" type="xs:int" /> <xs:element minOccurs="0" maxOccurs="1" default="-1" name="Volume" type="xs:int" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="AlternateSeries" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="AlternateNumber" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="-1" name="AlternateCount" type="xs:int" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="Summary" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="Notes" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="-1" name="Year" type="xs:int" /> <xs:element minOccurs="0" maxOccurs="1" default="-1" name="Month" type="xs:int" /> <xs:element minOccurs="0" maxOccurs="1" default="-1" name="Day" type="xs:int" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="Writer" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="Penciller" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="Inker" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="Colorist" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="Letterer" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="CoverArtist" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="Editor" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="Publisher" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="Imprint" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="Genre" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="Web" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="0" name="PageCount" type="xs:int" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="LanguageISO" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="Format" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="Unknown" name="BlackAndWhite" type="YesNo" /> <xs:element minOccurs="0" maxOccurs="1" default="Unknown" name="Manga" type="Manga" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="Characters" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="Teams" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="Locations" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="ScanInformation" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="StoryArc" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="SeriesGroup" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="Unknown" name="AgeRating" type="AgeRating" /> <xs:element minOccurs="0" maxOccurs="1" name="Pages" type="ArrayOfComicPageInfo" /> <xs:element minOccurs="0" maxOccurs="1" name="CommunityRating" type="Rating" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="MainCharacterOrTeam" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" default="" name="Review" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:simpleType name="YesNo"> <xs:restriction base="xs:string"> <xs:enumeration value="Unknown" /> <xs:enumeration value="No" /> <xs:enumeration value="Yes" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="Manga"> <xs:restriction base="xs:string"> <xs:enumeration value="Unknown" /> <xs:enumeration value="No" /> <xs:enumeration value="Yes" /> <xs:enumeration value="YesAndRightToLeft" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="Rating"> <xs:restriction base="xs:decimal"> <xs:minInclusive value="0"/> <xs:maxInclusive value="5"/> <xs:fractionDigits value="2"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="AgeRating"> <xs:restriction base="xs:string"> <xs:enumeration value="Unknown" /> <xs:enumeration value="Adults Only 18+" /> <xs:enumeration value="Early Childhood" /> <xs:enumeration value="Everyone" /> <xs:enumeration value="Everyone 10+" /> <xs:enumeration value="G" /> <xs:enumeration value="Kids to Adults" /> <xs:enumeration value="M" /> <xs:enumeration value="MA15+" /> <xs:enumeration value="Mature 17+" /> <xs:enumeration value="PG" /> <xs:enumeration value="R18+" /> <xs:enumeration value="Rating Pending" /> <xs:enumeration value="Teen" /> <xs:enumeration value="X18+" /> </xs:restriction> </xs:simpleType> <xs:complexType name="ArrayOfComicPageInfo"> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" name="Page" nillable="true" type="ComicPageInfo" /> </xs:sequence> </xs:complexType> <xs:complexType name="ComicPageInfo"> <xs:attribute name="Image" type="xs:int" use="required" /> <xs:attribute default="Story" name="Type" type="ComicPageType" /> <xs:attribute default="false" name="DoublePage" type="xs:boolean" /> <xs:attribute default="0" name="ImageSize" type="xs:long" /> <xs:attribute default="" name="Key" type="xs:string" /> <xs:attribute default="" name="Bookmark" type="xs:string" /> <xs:attribute default="-1" name="ImageWidth" type="xs:int" /> <xs:attribute default="-1" name="ImageHeight" type="xs:int" /> </xs:complexType> <xs:simpleType name="ComicPageType"> <xs:list> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="FrontCover" /> <xs:enumeration value="InnerCover" /> <xs:enumeration value="Roundup" /> <xs:enumeration value="Story" /> <xs:enumeration value="Advertisement" /> <xs:enumeration value="Editorial" /> <xs:enumeration value="Letters" /> <xs:enumeration value="Preview" /> <xs:enumeration value="BackCover" /> <xs:enumeration value="Other" /> <xs:enumeration value="Deleted" /> </xs:restriction> </xs:simpleType> </xs:list> </xs:simpleType> </xs:schema>
<? xml version="1.0"?> <ComicInfo xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance " xmlns:xsd=" http://www.w3.org/2001/XMLSchema "> <Title>Concealment (1)</Title> <Series>Concealed things</Series> <Number>1.0</Number> <Summary>Concealing is the work of drawing? The cartoonist Mr. Kokushi Goto is serializing some indecent cartoons in the weekly juvenile comic magazine! But at the thought that it might be discovered by Ji, the only daughter in Grade 4 of primary school, he was afraid that he could not sleep well every night. Love and laughter cartoonist dad? Daughter story, here's the opening! </Summary> <Year>2017</Year> <Month>11</Month> <Day>14</Day> <Writer>Kumita Kangzhi</Writer> <Publisher>Dongli Publishing House</Publisher> <LanguageISO>zh</LanguageISO> </ComicInfo>
read
Tachiyomi
OPDS reader
Komga should work with any OPDS reader, unfortunately most readers badly implement the OPDS protocol 😞.
Komga should be able to be used on any OPDS reader. Unfortunately, most readers do not follow the OPDS protocol well 😞。
http(s)://your-server(:8080)(/baseUrl)/opds/v1.2/catalog
http://127.0.0.1:2333/opds/v1.2/catalog
summary
reference resources
-
Official Komga documents: https://komga.org -
The Anansi Project - ComicInfo: https://anansi-project.github.io/docs/category/comicinfo
Author: mikusa
Link to this article: https://www.himiku.com/archives/komga.html
Copyright notice: Unless otherwise stated, all articles are my own creation. Please contact the author for reprinting and quotation, and indicate the source (author, original link, etc.).