内容提要
作者自建个人漫画库,使用Komga在Kubernetes上管理漫画,并通过KMReader在iPhone上阅读。流程包括下载漫画、上传至Komga、扫描整理、客户端同步阅读。Komga负责元数据和阅读进度,KMReader支持离线阅读。部署采用StatefulSet和单卷,配置简单。作者提醒注意版权,并分享了上传和连接中的常见问题及解决经验。
延伸解读
为什么选择Komga而不是其他方案
作者选择Komga是因为它支持多种格式(cbz、zip、cbr、rar、pdf、epub),并且能集中管理元数据和阅读进度。相比仅使用iOS阅读器,Komga将文件管理移到服务器端,解决了多设备同步和缓存清理的麻烦。此外,Komga能无缝集成到作者已有的Kubernetes和ArgoCD环境中,降低了维护成本。
Kubernetes部署的关键细节
部署Komga时,作者使用StatefulSet和单卷,通过subPath分离配置和数据目录。注意官方文档要求/config使用本地文件系统,避免网络存储。initContainer用于创建目录并设置权限,使主容器以非root运行。这种配置简化了备份,但需注意单卷的存储容量和性能限制。
上传漫画的常见误区
Komga没有网页上传功能,它只扫描服务器上已有的目录。作者使用kubectl cp上传文件,并强调每个系列应有独立目录,否则后期整理困难。对于批量导入,可设置导入目录,利用硬链接移动文件,但作者目前选择直接上传到系列目录后扫描。
KMReader连接与离线阅读
KMReader是Komga的iOS客户端,连接时需使用服务器根地址(如https://komga.example.com),不要添加/opds路径。它支持三种离线策略:手动、最新、全部。作者推荐手动模式,只缓存计划阅读的书籍以节省空间。阅读进度会在联网时自动同步回Komga。
Q&A
Komga是什么?它有什么主要功能?
Komga是一个自托管的漫画/电子书服务器,可以扫描本地目录中的漫画文件,将其整理为系列和书籍,并管理封面、元数据和阅读进度。它支持cbz、zip、cbr、rar、pdf和epub等格式,并提供网页阅读器。
如何在Kubernetes上部署Komga?
使用StatefulSet部署,设置一个副本,使用一个PVC(如100Gi),通过subPath将卷分别挂载到容器的/config和/data目录。容器以1000:1000用户运行,需要initContainer创建目录并设置权限。服务监听25600端口,通过ClusterIP Service暴露,再用Traefik提供HTTPS访问。
Komga的/config和/data目录分别存储什么?为什么/config不能放在网络存储上?
/config存储Komga的数据库和配置文件,/data存储漫画文件。官方文档要求/config必须使用本地文件系统,不能使用CIFS或NFS,因为数据库对I/O和文件锁有要求,网络存储可能导致性能问题或数据损坏。
如何向Komga上传漫画文件?
Komga没有网页上传按钮,需要将文件放到服务器目录中。在K8s中可以使用kubectl cp命令,先创建系列目录,再复制文件到/data下的对应目录,然后在Komga中执行扫描。也可以使用导入功能,将文件放到/data/import,再通过Import Books移动到目标系列。
KMReader如何连接Komga?它有哪些离线阅读策略?
在KMReader中添加服务器,输入Komga的根地址(如https://komga.example.com),不需要加/opds,使用用户名密码或API密钥登录。KMReader提供三种离线策略:Manual(手动下载)、Latest(自动下载最新)、All(下载整个系列)。
使用Komga时常见的错误有哪些?如何避免?
常见错误包括:1. 找不到上传按钮,因为Komga只扫描服务器目录,需用kubectl cp或导入功能;2. 每个系列必须有独立目录,否则整理困难;3. 将/config放在网络存储上,应使用本地文件系统;4. 使用一个卷时未用subPath导致目录混淆;5. KMReader连接时添加/opds路径导致无法连接,应使用根地址。
作者为什么选择Komga而不是其他漫画阅读方案?
作者最初只想找iOS漫画阅读器,但发现文件仅存在手机上不方便,切换设备、清理缓存和同步进度都很麻烦。Komga将管理任务移到服务器,支持多种格式,并适合作者已有的自托管环境(K8s、Traefik、ArgoCD),维护成本低。