安装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目录中
- 不要出现特殊字符
- 一定要确保目前使用的用户拥有这些文件和目录的所有权
- 不能直接把所有的文件不分类直接放到/data/library/books目录中
- 正确的目录结构示例
/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. 配置扫描文件夹
- 右上角齿轮 → Libraries → Add Library
- Name:随便写,如 MyPDFs
- Type:选 Book
- Folder:点 Browse for Media Folders → /data
- Save → 系统开始扫描,近500个文件 5-10 分钟完成。
4. 设置中文
- 右上角齿轮 → Preferences → Locale → 点击“Edit”
- 下拉框中“选择 中文(简体)(100%)” → 刷新页面
kavita不扫描资料库
- 99% 是因为容器里的挂载路径没对上
- 在 Kavita 的 Web 设置里添加「Libraries」时,必须填容器内的路径/data(或它的子目录),不是宿主路径/data/library/books
- 如果路径对了仍不扫,通常是 权限 或 文件格式 问题
- 目录名最好不要中文的,更改成英文会更好,不然容易被Linux转义而无法识别
4573





