[Debian]在线图书阅读管理平台 kavita 的搭建与使用教程(更新于:20240414)

有很长一段时间没有写过搭建类的教程了,这次发现了一个很不错的图书阅读管理平台,我在官方 Demo 站点里使用了一下,发现 Kavita 不仅能支持漫画阅读,电子书阅读也不在话下,而且在线阅读的体验也很不错,再加上现在有在积极开发维护……拜托,这我高低要吹一下!

一、Kavita 介绍

Kavita 官网:https://www.kavitareader.com

Github 项目页:https://github.com/Kareadita/Kavita

Kavita Demo 演示站:https://demo.kavitareader.com

演示站用户名:demouser

演示站密码:Demouser64

Kavita 是一个快速且功能比较多样,支持自托管多用户使用的在线阅读阅读平台。

作为我个人来说,Kavita 的以下几点比较吸引我:

  • 漫画在线阅读,支持 cbr,cbz,zip/rar/rar5,7zip,cb7 格式
  • 电子书在线阅读,支持 ePub,PDF 格式
  • 响应式布局,不依赖于 APP 就可以在各类设备上享受在线观看的快感
  • 支持 Metadata 元数据的读取以及编辑
  • 支持自定义媒体库
  • 支持阅读进度记录,添加书签以及评分等功能
  • 支持多用户使用,每个用户的记录统计都是独立的
  • 支持自我搭建,仍活跃开发,满足漫画电子书杂志等一站式阅读管理的平台

在 Kavita 之前,我也不是没用过其它阅读管理的平台,但是我自己的体验都不是很好。

首先是 Jellyfin 自带的图书媒体库,虽然是支持的但是支持的非常有限,从我个人的体验来说它的书籍媒体库更像是一个管理归档的媒体库(基于文件夹模式管理),只有比较基本的在线阅读功能,比如一些对阅读比较重要的书签,阅读界面调整等设置它就是不支持的,而且在打开国内常有的网文小说 ePUB 文件时也显得比较吃力,再加上也不像电影电视剧那样界面布局良好支持很多元数据,所以虽然用过但很难说体验很好。当然了,博主也知道开发者用爱发电的可贵之处,毕竟大家都是精力有限的更不用说是在做自愿劳动,所以并不期待 Jellyfin 是全能选手,也理解开发者们更多的重心还是在音视频支持这方面,前面所说的也没有谴责的意思只是基于客观事实的表述。

还有 Mango 和 Komga 这两个程序,前者似乎已经不再活跃开发了,后者的话因为只支持 cbz 这类漫画资源所以也无奈放弃。

最后再说说 Calibre-Web 或者类似的程序,Calibre 自不用我多说,习惯在 PC 上阅读管理图书的对它一定不陌生,毕竟开源不说功能也非常强大,而网上也有很多针对 Calibre 线上管理阅读图书的项目,比如 Calibre-Web。这类程序我不能说它们不好,但我个人在使用它们时难免觉得有些束手束脚的,因为它们首先需要依赖 Calibre 的数据库来运行,其次它们的管理都是基于程序内操作的(比如添加新书需要你自己来),这对于我这种有自己管理逻辑的图书库又想完全交给程序来处理的人来说,好像有些不太舒服,所以只能说是不合适放弃了。

所以基于以上种种,在我看到 Kavita 的时候,不免有些激动,因为我似乎看到了自己想要的在线阅读器的样子,那还等什么呢,装起来!

PS:Kavita 在博主写文这会开始,还只支持英文界面,不过作者已经有计划准备多语言的翻译了,先提醒大家一下。

二、搭建环境介绍

每次出搭建教程时,我都会习惯写下自己的搭建环境,这样大家也好有个参考知道什么是适合自己的什么是不适合自己的。

硬件条件:1 CPU,1 G 内存,20 G 硬盘,但需要说明的是我是使用 Rclone 挂载的网盘上的图书目录,所以对硬盘资源要求比较低

系统:Debian 11

Kavita 由于用的是 .Net 框架编写的,作者已经打包好了程序文件,所以我们不怎么需要再去额外折腾环境依赖了,至少我测试用默认选项安装的 Debian 11 是这样子的。

三、Kavita 搭建

3.1 主程序的下载与配置

前面也说了,Kavita 作者已经编译打包好文件了,我们只需要下载解压运行就可以了,所以这一步其实挺简单的,要做的也不是很多。

首先下载对应平台的程序包,可以从这里找到:https://github.com/Kareadita/Kavita/releases

这里需要提一下其实 Kavita 除了 Linux 也支持 Windows 和 Mac,不过这里我用的是 Debian 自然是选择 Linux 包了,将对应的下载链接复制下来,然后用 wget 命令下载:

#包保存在当前目录
wget https://github.com/Kareadita/Kavita/releases/download/v0.7.3.1/kavita-linux-x64.tar.gz

下载完成之后,用 tar 命令解压到你想保存程序的目录,注意替换其中的文件名为你下载文件的文件名,以及目录路径替换为你要保存到的位置:

tar zxvf kavita-linux-x64.tar.gz -C /home/www-data

解压完成之后,你就能在对应目录下看到一个 kavita 文件夹了,然后我们需要用 chown 命令给这个文件夹赋予正确的用户名和组权限,并且将文件夹里面的 kavita 文件赋予执行权限好让它能运行:

#将 kavita 的用户和组都改为 www-data
Chown -R www-data:www-data /home/www-data/Kavita
#让 kavita 程序文件有执行权限
chmod 744 /home/www-data/Kavita/Kavita

上面做完之后,再在系统/etc/systemd/system 目录下,创建一个服务文件,比如我们叫它 read.service,这个文件的作用是让 kavita 能开机运行。复制下面的内容保存文件:

[Unit]
Description=Kavita Server
After=network.target

[Service]
User=www-data
Group=www-data
Type=simple
WorkingDirectory=/home/www-data/Kavita
ExecStart=/home/www-data/Kavita/Kavita
TimeoutStopSec=20
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target

上面复制的内容里,需要注意 user 和 group 需要填写你运行 Kavita 实际使用的用户和组,比如我这里用的是 www-data,另外也注意下 WorkingDirectory 改成你程序所在目录,ExecStart 为程序文件的完成路径。

搞定之后,使用下面的命令先测试下运行有没有问题:

systemctl start read.service
systemctl status read.service

如果最后显示程序正在运行的 active 状态,说明一切正常,就可以用下面的命令正式让 kavita 开机启动了:

systemctl enable read.service

到这里,kavita 的下载和配置算是做完了,此时 kavita 已经在运行并且在监听 5000 端口。

3.2 Nginx 的安装与配置

上面程序的配置弄好之后,其实此时就已经可以打开你的服务器 http://你服务器的IP:3001 来访问 Kavita 了,但这样显然是不够安全的,一般还是建议用专用的 Web Server 代理连接后端的 Kavita 服务器。出于本人的习惯问题,我这里选择的是 Nginx。

输入下面的命令在 Debian 上下载安装 Nginx:

apt update
apt install nginx

安装好之后,在 Nginx 的配置文件保存目录(/etc/nginx/sites-enabled)下新建一个配置文件,比如我这里叫 read.conf,然后复制下面的内容到文件里保存:

server{    
    set $server "Your_Kavita_IP_Here(你服务器的 IP)";
    set $port "Your_Kavita_Port_Here(Kavita 监听的端口,默认是 5000)";
    set $domain "kavita.example.com(你要给 Kavita 绑定访问的域名,注意绑域名之前做好对应的 DNS 解析记录)";
    #set $organizr "organizr.example.com"; #Uncomment this for organizr support
    server_name $domain;

    location / {
         # The following configurations must be configured when proxying to Kavita

         # Host and X headers
         proxy_set_header        Host $host;
         proxy_set_header        X-Real-IP $remote_addr;
         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for; aio threads;
         proxy_set_header        X-Forwarded-Proto $scheme;

         # Headers to proxy websocket connections
         proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection "Upgrade"; 

         # Proxy to Kavita running locally on port 5000 using ssl
         proxy_pass http://$server:$port;

         # Organizr support - uncomment both of the following lines
         #proxy_hide_header "Content-Security-Policy";
         #add_header Content-Security-Policy "frame-ancestors $organizr;"; 
    }

    listen 443 ssl http2; # managed by Certbot
    listen [::]:80 ssl http2;
    ssl_session_cache shared:le_nginx_SSL:10m;
    ssl_session_timeout 1440m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers off;
    ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
    #下面这里填写的文件可以通过 openssl dhparam -out /保存位置/ssl-dhparams.pem 2048 生成
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # 填写你的 ssl-dhparams.pem 文件所在路径

    ssl_certificate /etc/letsencrypt/live/kavita.example.com/fullchain.pem; # 填写 SSL 证书所在位置
    ssl_certificate_key /etc/letsencrypt/live/kavita.example.com/privkey.pem; # 填写 SSL 证书密钥所在位置

}

server {
    if ($host = $domain) {
        return 301 https://$host$request_uri;
     } # managed by Certbot

       listen 80;
       listen [::]:80;

       server_name $domain;
    return 404; # managed by Certbot

 }

以上配置文件来自于官方文档的演示,由于包含了一些 Certbot 自动生成的配置内容,所以我将其配置稍微完善了一下,另外再附上了一些中文的解释,这样好让大家更好理解。

如配置里所说,这里需要用到 SSL 证书,也就是可以通过 https://example.com 这样的方式来访问你的 Kavita,这是现在流行也比较推荐的做法,但因为无可避免的要使用 SSL 证书,可能对于新手来说有点麻烦。

出于文章篇幅的控制(博主犯懒摆烂了),我这里没有去写怎么申请 SSL 证书,因为可能会偏的有点远了而且方法也不止一种。如果有朋友确实不懂需要教程的话,我之后再来补充吧!_(:з)∠)_

另外还需要说明的是,这里提供的配置只是比较基本的 Nginx 配置,所以自然还有能完善的地方,这个感兴趣的可以自行研究~

好了不说了。上面的复制保存文件之后,就可以重载下 Nginx 让写的配置生效了:

nginx -s reload

如果上面都做的没问题的话,这时候再试试打开自己的域名,是不是可以访问 Kavita 页面了?

四、Kavita 的初期配置

上面算是把服务器部分配置好了,之后就是正式开始使用 Kavita 了,这里有一些地方需要我们前期配置一下。

提醒:因为目前 Kavita 还只支持英文,所以一些截图我会尽量跟大家解释清楚,不过作者也有计划准备翻译了,这里期待一下。

刚打开网页的时候,Kavita 会提示我们创建一个管理员账号,这里就没什么多说的了,只是建议大家先填写好真实有效的邮箱,不然后面想要改邮箱的时候因为原邮箱接收不到邮件可能会有些麻烦。

注册完账号之后,首先需要打开网站的设置页面,比如:https://example.com/admin/dashboard,或者你点击页面右上角你用户名旁边那个设置按钮也是一样的。

之后你会看到下图这个页面,找到 Libraries 这个选项点开:

Libraries 这个选项就是让我们来添加 Kavita 图书库位置的,点击右边的 ADD Library 选项来创建图书分类以及图书的类型:

Name 写分类名,Type 按照图书类型选择,Manga 和 Comic 比较适合 cbr cbz 这种漫画资源,Book 比较适合 ePUB 和 PDF。当然,根据说明解释类型选择影响的是分类 UI 和文件名识别逻辑,也没有严格说什么扩展名的文件就只能用某种类型,也不是说某个类型下就只能存在某类扩展名的文件,它们在文件本身的识别上都是没问题的。

之后的添加选项就没什么特别好交代的了,一般没特别需求的话就保持默认的样子一路 Save/Next 保存就好了,想知道选项意思的可以自己翻译或者等官方完成翻译。_(:з)∠)_

添加完之后,Kavita 就会开始初次执行目录扫描添加图书了,这个过程依据你的图书目录大小可能会比较漫长,耐心等就行了,以后每次 Kavita 都会在夜间自动执行扫描(服务器时间上的夜间),具体是什么时候没仔细探究过,反正是会自动执行扫描就是了。如果你急着把新添加的书扫描出来的话,也可以在主页面的分类那里,点它后面的三个点,选择 Scan Library 就会开始扫描了。

五、Kavita 的升级更新

Kavita 只有一个检测是否有新版本发布的不能,不能直接在 Web 端进行程序更新,所以我们需要每次有新版本的时候自己手动更新一下。

更新有个特别要注意的地方,因为 Kavita 目前还处于快速更新开发中,开发者提醒我们最好是保持在 2 个版本内进行更新。如果想超过 2 个版本进行更新,最好循序渐进每 2 个版本更新一次,慢慢从旧版本更新上来。

首先我们去 Github 上查找新版本的下载安装包:https://github.com/Kareadita/Kavita/releases

目前最新版的是 v0.8.0,所以下面我以此版本为例子进行更新。

将对应的新版本程序包下载到自己的 VPS 上:

wget https://github.com/Kareadita/Kavita/releases/download/v0.8.0/kavita-linux-x64.tar.gz

下载好之后,将旧的 Kavita 结束运行,并重命名程序文件夹以避免冲突:

systemctl stop read
mv /home/www-data/Kavita /home/www-data/Kavita_old

解压新版本到网站目录:

tar zxvf kavita-linux-x64.tar.gz -C /home/www-data

将旧程序的 config 配置文件夹复制到新程序文件夹内:

#删除新版本 kavita 默认自带的配置文件夹
rm -rf /home/www-data/Kavita/config
#复制旧 Kavita 的配置文件夹到新版本 Kavita 下
cp -r /home/www-data/Kavita_old/config /home/www-data/Kavita

别忘了修改新 Kavita 文件夹的所有者信息和执行权限:

#将 kavita 的用户和组都改为 www-data
Chown -R www-data:www-data /home/www-data/Kavita
#让 kavita 程序文件有执行权限
chmod 744 /home/www-data/Kavita/Kavita

升级完成,重新启动 Kavita:

systemctl start read

Kavita 升级其实和全新安装并无太大区别,只是需要迁移下配置文件。

不过提醒大家,有时候更新完成之后需要用户手动执行或者修改一些配置,比如这次的 v8.0.0 就需要用户升级完成之后手动执行下强制媒体库扫描,所以各位升级时也要注意多看下 releases 里的版本说明哦。

结束

好了,本次教程就写这么多了,Kavita 初期给我的感觉挺不错的,设置起来没什么难度,使用上体验也很不错,希望能越发完善壮大吧!

不过需要说的是,图书文件都有自己的一套 Metadata,Kavita 也不像 Jellyfin 那样可以从外部文件内读取图书信息,所以为了图书识别精准归类准确,建议尽量写好正确的图书文件名并添加好 Metadata 再保存(这么说是因为网上资源挺杂的很多连 Metadata 都没有),另外也可以看下 Kavita 的一些书写规范:https://wiki.kavitareader.com/en/guides/managing-your-files

好了就写这么多了,如果大家还有什么不明白的,可以多看看 WiKi,或者留言问我也可以~

PS:文章特色图片出自 Unsplash 作者 Luisa Brimble,原链接:https://unsplash.com/photos/VfHoMBagDPc

文章标题:[Debian]在线图书阅读管理平台 kavita 的搭建与使用教程(更新于:20240414)
本文作者:希卡米
链接:https://hikami.moe/master/program/4521.html

如非文内特别说明,博客内作品均默认采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
知识共享许可协议
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇