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
| Tool | Open Source | Free Tier | Monthly Cost |
|---|---|---|---|
| ComiXology Unlimited | No | No | $5.99/mo |
Self Hosted
| Tool | Open Source | Full Features | Notes |
|---|---|---|---|
| Kavita | Yes | Yes | Books, manga, and comics; similar scope |
Installation
Architecture
- Deployment: Single
komgadeployment in thekomganamespace - Image:
gotson/komga:1.24.3(digest-pinned) - Storage: Longhorn PVC (
komga-data, 1Gi, annotatedk8up.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
Schedulebacks 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.
- 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