Skip to main content

Komga

A self-hosted comics and manga server.

Komga is an open-source media server for comics, manga, and digital books. It organizes CBZ/CBR/PDF files, provides a web reader and OPDS feed, and supports reading progress sync across devices. Self-hosting avoids subscription fees and keeps your collection on your own hardware.

Alternatives considered

Cloud Hosted

ToolOpen SourceFree TierMonthly Cost
ComiXology UnlimitedNoNo$5.99/mo

Self Hosted

ToolOpen SourceFull FeaturesNotes
KavitaYesYesBooks, manga, and comics; similar scope

Installation

Architecture

  • Deployment: Single komga deployment in the komga namespace
  • Image: gotson/komga:1.24.3 (digest-pinned)
  • Storage: Longhorn PVC (komga-data, 1Gi, annotated k8up.io/backup: "true") for database and config; NFS volume from TrueNAS for the books library
  • Networking: HTTPRoute via public gateway

Security

  • Runs as runAsUser: 0, runAsNonRoot: false
  • Longhorn PVC encrypted at rest via SOPS-managed keys

Updates

Managed by Renovate. Image is digest-pinned.

Data Management

  • PVC: komga-data (1Gi, Longhorn-encrypted, k8up.io/backup: "true") for embedded database and config
  • NFS: TrueNAS NFS volume for books library (read-only)
  • Backups: k8up Schedule backs up the Longhorn PVC to Hetzner S3 via restic.

User Management

No OIDC env vars in manifests. User accounts managed through the Komga web UI. Komga supports OIDC natively but it is not configured here.

Configuration Management

  • k8up restic password and Longhorn encryption key from SOPS-encrypted secrets

Administration

Usage

Add library folders pointing to your comics or manga directories. Komga scans and builds a metadata database automatically. Read books in the built-in web reader or use a compatible OPDS reader on mobile (e.g., Chunky, Moon+ Reader). Reading progress syncs across all connected clients.

Cluster-specific deviations from the above live in the per-cluster README — see k8s/apps/talos/komga/README.md.

Cluster Deployment

Komga — Talos cluster

Cluster-specific notes only. General product info, "why we use it", and alternatives live in docusaurus/docs/apps/komga.mdx.

Deviations from defaults

Defaults live in docusaurus/docs/apps/komga.mdx — document anything this cluster does differently here, with a one-line reason.

Kubernetes Metadata
  • Image: gotson/komga:1.24.4@sha256:dae630271561b642d47c9723803ec77900d1f0a803fbe6a42da69db5b21ebaeb
Rendered manifests (kustomize build)
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
kustomize.toolkit.fluxcd.io/force: enabled
labels:
app: komga
name: komga
namespace: komga
spec:
replicas: 1
selector:
matchLabels:
app: komga
ingress: public
strategy:
rollingUpdate: null
type: Recreate
template:
metadata:
labels:
app: komga
ingress: public
spec:
containers:
- image: gotson/komga:1.24.4@sha256:dae630271561b642d47c9723803ec77900d1f0a803fbe6a42da69db5b21ebaeb
livenessProbe:
httpGet:
path: /
port: 25600
initialDelaySeconds: 30
periodSeconds: 10
name: komga
ports:
- containerPort: 25600
name: web
protocol: TCP
readinessProbe:
httpGet:
path: /
port: 25600
initialDelaySeconds: 30
periodSeconds: 10
volumeMounts:
- mountPath: /config
name: komga-data
- mountPath: /books
name: komga-books
volumes:
- name: komga-data
persistentVolumeClaim:
claimName: komga-data
- name: komga-books
persistentVolumeClaim:
claimName: komga-truenas-nfs-reading