Komf — a metadata fetcher and manager for Komga and Kavita: automatically pulls series/book metadata and covers from providers and writes them back to your library. Deployed as a single host-networked Nomad service.
Needs nomad-pack on PATH. The script only adds the nomploy registry and runs this pack.
Source ↗ Project ↗ ★ 713 ⚑ Report an issue
Save as values.hcl, edit, then run:
# The name of the Nomad job.
job_name = "komf"
# The Nomad namespace to deploy into.
namespace = "default"
# The datacenters to deploy to.
datacenters = ["*"]
# The Komf container image. Pin a tag in production.
image = "sndxr/komf:latest"
# Host port for the Komf web UI.
port = 8085
# Named volume mounted at /config (application.yml and the state database).
data_volume = "komf_data"
# Optional Komga base URL (KOMF_KOMGA_BASE_URI), e.g. http://127.0.0.1:25600. Empty = configure in application.yml / the web UI.
komga_url = ""
# Optional Kavita base URL (KOMF_KAVITA_BASE_URI), e.g. http://127.0.0.1:5000. Empty = configure in application.yml / the web UI.
kavita_url = ""
# Placement constraints. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
constraints = []
# The task resources.
resources = {
cpu = 300
memory = 256
}
| Name | Type | Default | Description |
|---|---|---|---|
| job_name | string | "komf" | The name of the Nomad job. |
| namespace | string | "default" | The Nomad namespace to deploy into. |
| datacenters | list | ["*"] | The datacenters to deploy to. |
| image | string | "sndxr/komf:latest" | The Komf container image. Pin a tag in production. |
| port | number | 8085 | Host port for the Komf web UI. |
| data_volume | string | "komf_data" | Named volume mounted at /config (application.yml and the state database). |
| komga_url | string | "" | Optional Komga base URL (KOMF_KOMGA_BASE_URI), e.g. http://127.0.0.1:25600. Empty = configure in application.yml / the web UI. |
| kavita_url | string | "" | Optional Kavita base URL (KOMF_KAVITA_BASE_URI), e.g. http://127.0.0.1:5000. Empty = configure in application.yml / the web UI. |
| constraints | list | [] | Placement constraints. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true". |
| resources | object | {
cpu = 300
memory = 256
} | The task resources. |
No variables match.
This pack stores data in one Docker named volume:
komf_data
restic
# Run on the node hosting this pack. Point restic at your repo first: # export RESTIC_REPOSITORY="s3:https://<account>.r2.cloudflarestorage.com/<bucket>" # export RESTIC_PASSWORD="<repo-password>" # export AWS_ACCESS_KEY_ID=<key> AWS_SECRET_ACCESS_KEY=<secret> restic backup \ /var/lib/docker/volumes/komf_data/_data
rclone (sync to S3/R2)
rclone sync /var/lib/docker/volumes/komf_data/_data backup:<bucket>/komf_data
Paths assume the default Docker volume location (/var/lib/docker/volumes). Restore by stopping the job, restoring files into the same volume, and re-running the pack.
Komf — a metadata fetcher and manager for Komga and Kavita. It pulls series and book metadata plus covers from providers (AniList, MangaUpdates, MAL, Comic Vine and more) and writes them back to your library, and can auto-run on new additions via webhooks. Includes a small web UI.
Single host-networked Nomad service with a persistent config volume.
nomad-pack registry add nomploy https://github.com/Nomploy/nomad-packs
nomad-pack run komf --registry=nomploy
| Variable | Default | Description |
|---|---|---|
port |
8085 |
Web UI port. |
komga_url |
"" |
Optional Komga base URL (KOMF_KOMGA_BASE_URI), e.g. http://127.0.0.1:25600. |
kavita_url |
"" |
Optional Kavita base URL (KOMF_KAVITA_BASE_URI), e.g. http://127.0.0.1:5000. |
image |
sndxr/komf:latest |
Container image. Pin a tag in production. |
data_volume |
komf_data |
/config — application.yml and the state database. |
resources |
{ cpu = 300, memory = 256 } |
Task resources. |
Point
komga_url/kavita_urlat your library server (run them on the same node so loopback works), then set credentials and providers inapplication.ymlor the web UI. A prestart init task chowns the config volume to uid1000. Pin the job to the node holding the volume withconstraints.