Nomploy Nomad Packs

← All packs

komf v0.1.0

Media

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.

nomad-pack run komf --registry nomploy
…or one line (add registry + run)
curl -fsSL https://packs.nomploy.com/install.sh | sh -s -- komf

Needs nomad-pack on PATH. The script only adds the nomploy registry and runs this pack.

2 tasks http 8085 1 volume image sndxr/komf:latest tracks :latest image bumped today
Variables 10
values.hcl

Save as values.hcl, edit, then run:

nomad-pack run komf -f values.hcl --registry nomploy
# 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
  }
NameTypeDefaultDescription
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.
Back up this pack

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.

Readme

komf

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.

Deploy

nomad-pack registry add nomploy https://github.com/Nomploy/nomad-packs
nomad-pack run komf --registry=nomploy

Configure

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_url at your library server (run them on the same node so loopback works), then set credentials and providers in application.yml or the web UI. A prestart init task chowns the config volume to uid 1000. Pin the job to the node holding the volume with constraints.