From 6d185c2324f93ff09361b222795ac76efde52f67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Fri, 16 Jan 2026 11:48:50 +0100 Subject: [PATCH] komga: integrate komf --- services/komga.yml | 167 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) diff --git a/services/komga.yml b/services/komga.yml index e46f14a..dbebc4e 100644 --- a/services/komga.yml +++ b/services/komga.yml @@ -1,5 +1,149 @@ --- configs: + + komf-application-yaml: + content: | + komga: + #baseUri: http://192.168.0.106:25600 #or env:KOMF_KOMGA_BASE_URI + #komgaUser: admin@example.org #or env:KOMF_KOMGA_USER + #komgaPassword: admin #or env:KOMF_KOMGA_PASSWORD + eventListener: + enabled: true # if disabled will not connect to komga and won't pick up newly added entries + metadataLibraryFilter: [ ] # listen to all events if empty + metadataSeriesExcludeFilter: [ ] + notificationsLibraryFilter: [ ] # Will send notifications if any notification source is enabled. If empty will send notifications for all libraries + metadataUpdate: + default: + libraryType: "MANGA" # Can be "MANGA", "NOVEL" or "COMIC". Hint to help better match book numbers + updateModes: [ API ] # can use multiple options at once. available options are API, COMIC_INFO + aggregate: false # if enabled will search and aggregate metadata from all configured providers + mergeTags: false # if true and aggregate is enabled will merge tags from all providers + mergeGenres: false # if true and aggregate is enabled will merge genres from all providers + bookCovers: true # update book thumbnails + seriesCovers: true # update series thumbnails + overrideExistingCovers: true # if false will upload but not select new cover if another cover already exists + overrideComicInfo: true # Replace existing ComicInfo file. If false, only append additional data + postProcessing: + seriesTitle: true # update series title + seriesTitleLanguage: "en" # series title update language. If empty chose first matching title + fallbackToAltTitle: false # fallback to first alternative tile if series title is not found + alternativeSeriesTitles: false # use other title types as alternative title option + alternativeSeriesTitleLanguages: # alternative title languages + - "en" + - "ja" + - "ja-ro" + orderBooks: true # will order books using parsed volume or chapter number + scoreTagName: "score" # adds score tag of specified format e.g. "score: 8" only uses integer part of rating. Can be used in search using query: tag:"score: 8" in komga + readingDirectionValue: # override reading direction for all series. should be one of these: LEFT_TO_RIGHT, RIGHT_TO_LEFT, VERTICAL, WEBTOON + languageValue: # set default language for series. Must use BCP 47 format e.g. "en" + #TagName: if specified and if provider has data about publisher in that language then additional tag will be added using format ({TagName}: publisherName) + #e.g. originalPublisherTagName: "Original Publisher" will add tag "Original Publisher: Shueisha" + originalPublisherTagName: + #publisherTagNames: + # - tagName: "English Publisher" + # language: "en" + + kavita: + baseUri: "http://localhost:5000" #or env:KOMF_KAVITA_BASE_URI + apiKey: "16707507-d05d-4696-b126-c3976ae14ffb" #or env:KOMF_KAVITA_API_KEY + eventListener: + enabled: false # if disabled will not connect to kavita and won't pick up newly added entries + metadataLibraryFilter: [ ] # listen to all events if empty + metadataSeriesExcludeFilter: [ ] + notificationsLibraryFilter: [ ] # Will send notifications if any notification source is enabled. If empty will send notifications for all libraries + metadataUpdate: + default: + libraryType: "MANGA" # Can be "MANGA", "NOVEL" or "COMIC". Hint to help better match book numbers + updateModes: [ API ] # can use multiple options at once. available options are API, COMIC_INFO + aggregate: false # if enabled will search and aggregate metadata from all configured providers + mergeTags: false # if true and aggregate is enabled will merge tags from all providers + mergeGenres: false # if true and aggregate is enabled will merge genres from all providers + bookCovers: false #update book thumbnails + seriesCovers: false #update series thumbnails + overrideExistingCovers: true # if false will upload but not select new cover if another cover already exists + lockCovers: true # lock cover images so that kavita does not change them + postProcessing: + seriesTitle: false #update series title + seriesTitleLanguage: "en" # series title update language. If empty chose first matching title + alternativeSeriesTitles: false # use other title types as alternative title option + alternativeSeriesTitleLanguages: # alternative title language. Only first language is used. Use single value for consistency + - "ja-ro" + orderBooks: false # will order books using parsed volume or chapter number. works only with COMIC_INFO + languageValue: # set default language for series. Must use BCP 47 format e.g. "en" + + notifications: + templatesDirectory: "./" # path to a directory with templates + discord: + # List of discord webhook urls. Will call these webhooks after series or books were added. + webhooks: # config example: webhooks: ["https://discord.com/api/webhooks/9..."] (env:KOMF_DISCORD_WEBHOOKS - comma separated list of webhooks) + seriesCover: false # include series cover in message + embedColor: "1F8B4C" + apprise: + # List of apprise urls. Will call these after series or books were added. + urls: + seriesCover: false # include series cover as attachment + + database: + file: ./database.sqlite # database file location. + + metadataProviders: + malClientId: "" # required for mal provider. See https://myanimelist.net/forum/?topicid=1973077 env:KOMF_METADATA_PROVIDERS_MAL_CLIENT_ID + comicVineApiKey: # required for comicVine provider https://comicvine.gamespot.com/api/ env:KOMF_METADATA_PROVIDERS_COMIC_VINE_API_KEY + bangumiToken: # bangumi provider require a token to show nsfw items https://next.bgm.tv/demo/access-token env:KOMF_METADATA_PROVIDERS_BANGUMI_TOKEN + defaultProviders: + mangaUpdates: + priority: 10 + enabled: true + mediaType: "MANGA" # filter used in matching. Can be NOVEL or MANGA. MANGA type includes everything except novels + authorRoles: [ "WRITER" ] # roles that will be mapped to author role + artistRoles: [ "PENCILLER","INKER","COLORIST","LETTERER","COVER" ] # roles that will be mapped to artist role + mal: + priority: 20 + enabled: false + mediaType: "MANGA" # filter used in matching. Can be NOVEL or MANGA. MANGA type includes everything except novels + nautiljon: + priority: 30 + enabled: false + aniList: + priority: 40 + enabled: false + mediaType: "MANGA" # filter used in matching. Can be NOVEL or MANGA. MANGA type includes everything except novels + tagsScoreThreshold: 60 # tags with this score or higher will be included + tagsSizeLimit: 15 # amount of tags that will be included + yenPress: + priority: 50 + enabled: false + mediaType: "MANGA" # filter used in matching. Can be NOVEL or MANGA. + kodansha: + priority: 60 + enabled: false + viz: + priority: 70 + enabled: false + bookWalker: + priority: 80 + enabled: false + mediaType: "MANGA" # filter used in matching. Can be NOVEL or MANGA. + mangaDex: + priority: 90 + enabled: false + coverLanguages: + - "en" + - "ja" + bangumi: # Chinese metadata provider. https://bgm.tv/ + priority: 100 + enabled: false + comicVine: # https://comicvine.gamespot.com/ requires API key. Experimental provider, can mismatch issue numbers + priority: 110 + enabled: false + hentag: + priority: 120 + enabled: false + + server: + port: 8085 # or env:KOMF_SERVER_PORT + + logLevel: INFO # or env:KOMF_LOG_LEVEL komga-config: content: | spring: @@ -41,3 +185,26 @@ services: - source: komga-config target: /config/application.yml restart: unless-stopped + komf: + image: sndxr/komf:1.3.0 + container_name: komf + networks: + public: + ipv4_address: 192.168.240.54 + user: 1000:100 + ports: + - "8085:8085" + environment: + - KOMF_KOMGA_BASE_URI=http://komga:25600 + - KOMF_KOMGA_USER=lukas@kucharczyk.xyz + - KOMF_KOMGA_PASSWORD=kRalovna12514265! + - KOMF_KAVITA_BASE_URI=http://kavita:${KAVITA_INTERNAL_PORT} + - KOMF_KAVITA_API_KEY=c8023836-7aab-46ed-9409-c24b950002d4 + - KOMF_LOG_LEVEL=INFO + - JAVA_TOOL_OPTIONS=-XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact -XX:ShenandoahGuaranteedGCInterval=3600000 -XX:TrimNativeHeapInterval=3600000 + configs: + - source: komf-application-yaml + target: /config/application.yml + volumes: + - "${DOCKER_STORAGE_PATH}/komf/config:/config" + restart: unless-stopped