搭建Kavita 个人文库+保姆级教程+小白一篇搞定+shell脚本

安装docker

1. 安装必要工具
dnf install -y yum-utils

2. 添加国内 Docker 源(阿里云)
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3. 更改repo文件
sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

4. 安装 Docker CE + compose 插件
dnf makecache
dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

5. 启动 & 开机自启
systemctl --now enable docker

6. 配置docker国内加速,不然拉不动镜像
tee /etc/docker/daemon.json <<EOF
{
  "registry-mirrors":["https://docker.1panel.live"]
}
EOF

7. 重启docker
systemctl daemon-reload
systemctl restart docker

8. 验证(出现 Hello from Docker! 即成功)
docker run hello-world

准备文件夹

1.# 建立专门目录用于放所有的PDF文件
mkdir -p /data/library/{config,books}

2.#修改属主属组让kavita更好的获取
chown -R ${USER}:${USER} /data/library/books

3.# 避免权限问题
chmod -R 777 /data/library

上传PDF文件到/data/library/books目录中

  1. 不要出现特殊字符
  2. 一定要确保目前使用的用户拥有这些文件和目录的所有权
  3. 不能直接把所有的文件不分类直接放到/data/library/books目录中
  4. 正确的目录结构示例
/data/library/books
├── 小说/                 # 这是一个图书馆(Library)的根目录
│   ├── 刘慈欣/           # 这是一个作者(Author)目录
│   │   ├── 三体 I.pdf
│   │   ├── 三体 II.pdf
│   │   └── 三体 III.pdf
│   └── J.K. Rowling/     # 另一个作者目录
│       ├── 哈利·波特与魔法石.epub
│       └── 哈利·波特与密室.pdf
├── 技术文档/             # 这是另一个图书馆的根目录
│   ├── Docker/
│   │   └── Docker权威指南.pdf
│   └── Kubernetes/
│       └── K8s实战.pdf
└── 漫画/                 # 这是第三个图书馆,类型可设为 Comic 或 Manga
    ├── 进击的巨人/
    │   ├── 第01话.cbz
    │   └── 第02话.cbz
    └── One Piece/
        └── Volume_01.cbz

#/data/library/books下的每个一级子目录(如 小说、技术文档、 漫画)都应该在 Kavita Web 界面上被创建为一个独立的图书馆
#每个图书馆目录下的二级子目录(如 刘慈欣、Docker、Kubernetes、进击的巨人、One Piece),Kavita 会默认将其识别为作者或系列名
#你的图书文件(PDF, EPUB等)应该放在这些“作者/系列”目录下面

启动 /删除Kavita

#/config 存放配置
#/books 存放你的电子书
docker run -d \
  --name kavita \
  -p 5000:5000 \
  -e PUID=$(id -u) \
  -e PGID=$(id -g) \
  -e TZ=Asia/Shanghai \
  -e LANG=zh_CN.UTF-8 \
  -e LANGUAGE=zh_CN:zh \
  -v /data/library/config:/config \
  -v /data/library/books:/data \
  --restart unless-stopped \
  jvmilazz0/kavita:latest

验证服务启动

1.#验证docker的镜像是否成功启动,出现以下提示表示成功
docker ps
  CONTAINER ID   IMAGE                     COMMAND                   CREATED          STATUS                            PORTS                                         NAMES
05227b28cd5f   jvmilazz0/kavita:latest   "/bin/bash /entrypoi…"   59 seconds ago   Up 4 seconds (health: starting)   0.0.0.0:5000->5000/tcp, [::]:5000->5000/tcp   kavita

2.#等待2~3分钟后在服务器上执行,出现 HTTP/1.1 200 OK 表示成功
curl -I http://localhost:5000

3.#看到Now listening on: http://[::]:5000后即可
docker logs -f kavita

脚本(只适用于 redhat 体系)

#!/bin/bash
#安装步骤:1、安装docker->2、创建文件夹存放源数据->3、运行服务

# 添加调试信息
echo "脚本开始执行..."

#关闭防火墙和SELinux
systemctl stop firewalld
setenforce 0

#判断是否为root用户
[ $UID != 0 ] && echo "请切换到管理员用户" && exit

# 改进输出函数
public(){
    echo -e "\033[$1m$2--------------------- \033[0m"
}

#判断能否机器上网
public "93" "网络连接检查"
ping -c 3 www.baidu.com &>/dev/null
if [ $? == 0 ]; then
    public "92" "网络连接正常"
else
    public "91" "无法连接互联网,请检查网络"
    exit
fi

#安装docker
install_docker(){
    public "93" "开始安装Docker"
    {
        yum -y install yum-utils 
        yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
        sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
        yum clean all && yum makecache
        yum -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    } > /dev/null
    
    systemctl --now enable docker
    tee /etc/docker/daemon.json <<EOF
{
  "registry-mirrors":["https://docker.1panel.live"]
}
EOF
    systemctl daemon-reload && systemctl restart docker
    
    public "93" "验证Docker安装"
    docker run --rm hello-world
}

#创建数据存放目录
storage_location(){
    public "93" "创建数据目录"
    mkdir -p /data/library/{config,books}
    chown -R ${USER}:${USER} /data/library/books
    chmod -R 777 /data/library
    echo "数据目录已创建: /data/library"
}

#启动kavita
start_kavita(){
    public "93" "启动Kavita容器"
    docker run -d \
      --name kavita \
      -p 5000:5000 \
      -e PUID=$(id -u) \
      -e PGID=$(id -g) \
      -e TZ=Asia/Shanghai \
      -e LANG=zh_CN.UTF-8 \
      -e LANGUAGE=zh_CN:zh \
      -v /data/library/config:/config \
      -v /data/library/books:/data \
      --restart unless-stopped \
      jvmilazz0/kavita:latest
    echo "Kavita容器已启动,等待初始化,预计2~3分钟..."
    sleep 180
}

#验证docker状态
verify_docker(){
    public "93" "检查容器状态"
    docker ps -a | grep kavita
}

#安装结束提示
final_message(){
    public "92" "安装完成!"
    echo "请将您的文件放入: /data/library/books"
    echo "访问地址: http://$(hostname -I | awk '{print $1}'):5000"
    echo "或: http://localhost:5000"
}

#调用函数
install_docker
storage_location
start_kavita
verify_docker
final_message

echo "脚本执行完毕"

使用kavita

1. 浏览器访问

无图形界面访问:http://<服务器IP>:5000

有图形界面访问:http://localhost:5000

2. 注册管理员账号(随便填,密码最低6位)

3. 配置扫描文件夹

  • 右上角齿轮 → LibrariesAdd Library
  • Name:随便写,如 MyPDFs
  • Type:选 Book
  • Folder:点 Browse for Media Folders → /data
  • Save → 系统开始扫描,近500个文件 5-10 分钟完成。

4. 设置中文

  • 右上角齿轮 → Preferences → Locale → 点击“Edit”
  • 下拉框中“选择 中文(简体)(100%)” → 刷新页面

kavita不扫描资料库

  1. 99% 是因为容器里的挂载路径没对上
  2. 在 Kavita 的 Web 设置里添加「Libraries」时,必须填容器内的路径/data(或它的子目录),不是宿主路径/data/library/books
  3. 如果路径对了仍不扫,通常是 权限文件格式 问题
  4. 目录名最好不要中文的,更改成英文会更好,不然容易被Linux转义而无法识别
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zh&&Li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值