TaleBook 部署教程

本教程基于 Ubuntu 24.04 服务器部署 TaleBook 过程整理,包含全程操作步骤、常见报错及解决方案,适配新手,所有命令可直接复制执行。

一、部署tablebook

创建tablebook部署位置的文件夹,并进入这个文件夹

1
mkdir -p ~/talebook && cd ~/talebook

通过 SSH 连接服务器后,尝试下载 TaleBook 官方 docker-compose.yml 文件

1
wget https://raw.githubusercontent.com/talebook/talebook/master/docker-compose.yml

使用国内 1ms.run 镜像加速服务,替换 docker-compose.yml 中的镜像地址,这里我使用的是8456端口:

1
2
3
4
5
6
7
8
9
10
11
cat > docker-compose.yml << 'EOF'
services:
talebook:
image: docker.1ms.run/talebook/talebook:latest
container_name: talebook
restart: always
ports:
- "8456:80"
volumes:
- ./data:/data
EOF

重新启动:docker compose up -d,镜像成功拉取,容器启动。

开启Ubuntu服务器端口8456端口(自己手动去宝塔面板放开这个端口也可以的)

1
2
3
4
5
6
7
8
9
10
11
12
# 1. 放行TCP 8456端口
sudo ufw allow 8456/tcp
# 如需UDP协议,额外执行:
sudo ufw allow 8456/udp

# 2. 启用防火墙(若未开启)
sudo ufw enable
# 重载规则
sudo ufw reload

# 3. 验证规则是否生效
sudo ufw status | grep 8456

二、部署后访问

重复提示创建账户

访问 http://192.168.3.96:8456 时,第一次进入提示创建账户。

但我创建了账户后,重新进入,仍然提示我未创建账户。

原因:TaleBook 已完成初始化,生成 install.lock 锁定文件,浏览器缓存导致无法跳转登录页。

解决:直接访问登录页 http://192.168.3.96:8456/login,使用初始化时设置的管理员账号密码登录;若仍异常,清除浏览器缓存或重启容器。


Samba 挂载服务器文件夹到本地

Samba挺好用的(Windows 原生支持,稳定性高)

服务器端配置 Samba

我的服务器用户名称:risespark

我的tablebook在服务器的书籍目录:/mnt/1T-disk/talebook/data/books/library


在宝塔面板中,查看该docker的数据卷目录

服务器端(Linux)执行代码

1
2
# 1、安装 samba
sudo apt update && sudo apt install samba -y
1
2
# 2、给当前用户risespark设置 samba 密码(记好,Windows 挂载时使用)
sudo smbpasswd -a risespark
1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 3、编辑Samba配置文件,注意[bookshare]是你将来挂在到Windows电脑上的名称(这个是自己起的名),path是在服务器上tablebook的文件目录
sudo tee -a /etc/samba/smb.conf <<EOF
[bookshare]
path = /mnt/1T-disk/talebook/data/books/library
browseable = yes
read only = no
writable = yes
valid users = risespark
force user = risespark
force group = risespark
create mask = 0644
directory mask = 0755
EOF

1
2
3
4
5
6
# 4、重启 samba 服务并设置开机自启
sudo systemctl restart smbd nmbd
sudo systemctl enable smbd nmbd

# 5、防火墙放行 samba 端口
sudo ufw allow samba

给 tablebooks 目录授权(关键!否则容易出现报错访问目标文件夹被拒绝

1
2
sudo chown -R risespark:risespark /mnt/1T-disk/talebook/data/books/library
sudo chmod -R 755 /mnt/1T-disk/talebook/data/books/library

Windows 端挂载操作

  1. 打开「此电脑」,新建 → 映射网络驱动器;

映射网络驱动器
  1. 驱动器选择 Z:,文件夹输入:\\192.168.3.96\bookshare; 这个bookshare就是刚刚代码中自己起的名

  2. 勾选「登录时重新连接」,点击完成;

  3. 输入用户名 risespark 和刚才设置的 Samba 密码,即可完成挂载。

  4. ✅ 成功后你的电脑会多出一个 Z 盘,这个 Z 盘 = 服务器 /mnt/1T-disk/talebook/data/books/library,即代码中path对应的路径。


刚刚建立的盘符

若遇到目标文件夹访问被拒绝


问题:目标文件夹访问被拒绝

请执行以下代码,给予权限即可:

1
2
sudo chown -R risespark:risespark /mnt/1T-disk/talebook/data/books/library
sudo chmod -R 755 /mnt/1T-disk/talebook/data/books/library

Calibre 管理数据

打开 Calibre → 书库位置选择 **Z:**,即你刚刚新建的网络驱动器对应的盘符。

以后:

  • 在 Calibre 里改书名、封面、格式

  • 直接改到服务器文件

  • 不用传文件

  • 改完只需要在命令行中手动运行(即重启 tablebook的docker),即可在网页中看到刚刚的修改了:

    1
    sudo docker restart talebook

若你懒得每次手动重启,想服务器自己智能重启,即TaleBook 书籍目录新增 / 删除书籍后,需重启容器才能刷新书库

创建智能检测重启脚本

1. 脚本功能

  • 每 12 小时检测书籍目录文件变化
  • 有变化:自动重启 talebook 并记录状态
  • 无变化:不重启,仅输出日志
  • 宝塔面板可查看完整执行过程

2. 宝塔计划任务配置

  1. 宝塔 → 计划任务 → 添加任务
  2. 任务类型:Shell 脚本
  3. 任务名称:TaleBook 书籍变化检测重启
  4. 执行周期:自定义 → 0 */12 * * *(每 12 小时执行一次)
  5. 脚本内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash
BOOK_DIR="/mnt/1T-disk/talebook/data/books/library"
CHECK_FILE="/home/risespark/books_check.txt"

# 创建记录文件
touch "$CHECK_FILE"

# 计算目录指纹
current=$(find "$BOOK_DIR" -type f -printf "%p %T@\n" 2>/dev/null | md5sum | awk '{print $1}')
last=$(cat "$CHECK_FILE" 2>/dev/null || echo "")

echo "===== 开始检测书籍目录 ====="
echo "当前目录指纹: $current"
echo "上次目录指纹: $last"

# 对比判断
if [ "$current" != "$last" ]; then
echo "检测到书籍目录有变化 → 开始重启 TaleBook"
docker restart talebook
echo "$current" > "$CHECK_FILE"
echo "重启完成,已更新记录"
else
echo "书籍目录无变化 → 不重启"
fi

echo "===== 检测结束 ====="

3.使用说明

  1. 自动执行:每天 0:00、12:00 自动检测目录变化

  2. 手动执行:宝塔计划任务 → 执行,逻辑与自动执行完全一致

  3. 日志说明

    • 无变化:书籍目录无变化 → 不重启
    • 有变化:检测到书籍目录有变化 → 开始重启 TaleBook
  4. 资源消耗:docker 重启耗时 1~3 秒,资源占用极低,无频繁重启损耗