イントロ
皆さんはPDFの電子書籍をお持ちですか?
私は技術書をPDFで購入することが多いのですが、購入したPDFの管理を全くしていませんでした。
というわけで、Kavitaを導入してみました。
PDFだけでなく、EPUBなどのフォーマットにも対応しているらしいです。
進捗状況やメモ書き(注釈)も欲しかったので、Kavitaを選びました。
Kavitaの使い方
環境情報
$ docker version
Client: Docker Engine - Community
Version: 29.1.3
API version: 1.52
Go version: go1.25.5
Git commit: f52814d
Built: Fri Dec 12 14:49:51 2025
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 29.1.3
API version: 1.52 (minimum version 1.44)
Go version: go1.25.5
Git commit: fbf3ed2
Built: Fri Dec 12 14:49:51 2025
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v2.2.0
GitCommit: 1c4457e00facac03ce1d75f7b6777a7a851e5c41
runc:
Version: 1.3.4
GitCommit: v1.3.4-0-gd6d73eb8
docker-init:
Version: 0.19.0
GitCommit: de40ad0
前提条件
- Docker がインストールされていること
- Traefik が導入されていること(リバースプロキシサーバー)
手順
-
compose.ymlを作成するdomain.tldは自分のドメインに置き換えてください。compose.ymlservices: kavita: image: jvmilazz0/kavita container_name: kavita volumes: - ./data:/kavita/config - ./books:/books environment: TZ: Asia/Tokyo expose: - 5000 restart: unless-stopped labels: traefik.enable: true traefik.http.services.book.loadbalancer.server.port: 5000 traefik.http.routers.book.rule: Host(`kavita.domain.tld`) traefik.http.routers.book.entrypoints: websecure traefik.http.routers.book.tls: true traefik.http.routers.book.tls.certResolver: cloudflare traefik.docker.network: traefik-network glance.name: Kavita glance.icon: https://cdn.jsdelivr.net/gh/selfhst/icons/png/kavita.png glance.url: https://kavita.domain.tld glance.description: Book manager glance.id: kavita networks: - traefik-network drive: image: sigoden/dufs container_name: drive volumes: - ./books:/data expose: - 5000 command: /data -A profiles: - drive labels: traefik.enable: true traefik.http.services.kavita-drive.loadbalancer.server.port: 5000 traefik.http.routers.kavita-drive.rule: Host(`drive.kavita.domain.tld`) traefik.http.routers.kavita-drive.tls: true traefik.http.routers.kavita-drive.tls.certResolver: cloudflare traefik.docker.network: traefik-network glance.parent: kavita glance.name: drive networks: - traefik-network networks: traefik-network: external: true -
Kavitaを起動する
docker compose up -dなお、アップロードは対応していないため、dufsを使ってアップロードしました。
そのため、dufs用のイメージ設定も追加しています。docker compose --profile drive up -d
Kavitaの感想
- 良いところ
- 進捗状況が保存できる
- メモ書き(注釈)が保存できる
- モバイル対応もしている
- イマイチなところ
- 直接アップロードできない
- フォルダ構造によるスキャンを行うため、管理が手間
- 直接アップロードできない
以上、Kavitaの紹介でした。
随分前から建てていたのですが、改めて記事に書いていたところOIDC認証に対応していることを知りました。
ローカル認証はパスワード管理が面倒なので、OIDC認証の追加もぜひ行いたいところです。