飞牛 OS 部署 Calibre-Web:Docker 整理电子书库、上传 PDF 到固定公网访问
前言
我以前整理电子书,最常做的事情不是阅读,而是在一层层文件夹里找书:小说、技术资料、PDF、EPUB 混着放,临时下载的文件名看不出内容,换到手机上又得重新翻一遍。把硬盘扩容并不能解决这件事,真正缺的是能按书名、作者和简介查找的统一入口。Calibre-Web 恰好适合给已有书库做一个网页界面:书还放在自己的设备上,浏览器负责展示、搜索和访问,不必因为换了阅读设备就重新整理文件。
这次我用飞牛 OS 的 Docker 搭建这套书库。先准备 config 与 books 两个目录,启动 lscr.io/linuxserver/calibre-web:latest,再连接 /books 下的 metadata.db。打开后台以后,继续修改中文显示、开启上传权限、上传一本 PDF 并补齐基本信息,确认书籍确实出现在首页。局域网访问跑通,再通过 cpolar 给 8083 配置随机公网地址,最后预留固定二级子域名 cw1。我会特别留意几个容易混淆的地方:书籍文件和数据库不是同一回事,浏览器能登录不等于书库初始化完成,能生成公网地址也不代表默认管理员密码已经适合长期对外使用。我更愿意先拿一份熟悉的 PDF 把上传、保存和书目显示逐个确认,再开始配置远程入口,免得日后找不到书时分不清是网络还是书库本身出了问题。

一、Calibre-Web 是书库入口,不是另一个网盘
我希望打开浏览器就能看到书名、封面和分类,而不是面对一堆下载文件名。Calibre-Web 提供的正是这层书库界面:它读取 Calibre 格式的书库及其 metadata.db,把书籍信息组织成可浏览、可查找的页面。实际文件仍存放在 NAS 的书库目录,上传操作也会写入相应的存储位置;“网页门面”不等于文件凭空脱离了本地硬盘。
这类部署尤其适合已经把 PDF、EPUB、MOBI 和其他资料集中放在一台设备上的人。我的目标先定得简单一些:完成数据库连接、显示一本上传的 PDF,再从外网打开同一座书库。在线阅读、格式处理或跨设备阅读进度等具体体验,应按实际格式与客户端分别确认,不能仅凭首页截图就认定全部能力已经验证。
二、在飞牛 OS 上准备 Docker 与书库目录
打开飞牛 OS,先进入 Docker。镜像仓库里搜索 Calibre-Web,按页面步骤下载镜像;随后到文件管理器中建立 docker 文件夹,并在下面准备 books 与 config 两个目录。前者作为书库位置,后者保存应用配置。先把目录安排好,再启动容器,后面查文件、备份和排错都比较清楚。







书库初始化的演示中还准备了一个 metadata.db 文件;配套文件地址是:https://xiaoxu.lanzoub.com/iYSDi2ae3xud 。这里要注意,Calibre-Web 需要的是能够识别的 Calibre 书库数据库,而不是任意零字节文件改个名字。若选中数据库后无法保存或读取书籍,应先检查文件是否存在、是否是有效数据库,以及 /books 的读写权限。

通过终端远程进入飞牛 OS,使用 sudo -i 切换到管理员用户,在确认宿主机路径存在后执行 Docker 命令:
docker run -d --name=calibre-web -e PUID=1000 -e PGID=1000 -e TZ=Asia/Shanghai -p 8083:8083 -v /vol1/1000/docker/calibre/config:/config -v /vol1/1000/docker/books:/books --restart unless-stopped lscr.io/linuxserver/calibre-web:latest

这条命令使用镜像 lscr.io/linuxserver/calibre-web:latest,容器名为 calibre-web,端口映射是 8083:8083。PUID=1000 和 PGID=1000 关系到容器写入文件时的权限,TZ=Asia/Shanghai 设置时区;两个挂载分别是 /vol1/1000/docker/calibre/config:/config 和 /vol1/1000/docker/books:/books。因此,文件管理器里建目录时要核对完整路径:命令中的配置目录比书籍目录多了一级 calibre,不要只看见同名 config 就以为已经对应上。
三、先登录,再把数据库指向 /books
容器启动后,在浏览器访问 http://IP:8083,其中 IP 换成飞牛 OS 的局域网地址。登录页使用的示例初始账号为 admin,密码为 admin123。如果登录后反复跳回登录页,可以先尝试强制刷新或清理浏览器缓存;但在后面开放公网之前,应该先改掉默认密码。



登录成功后,还不能把空页面当成已经有了图书馆。Calibre-Web 接下来需要知道书库数据库在哪里:打开数据库路径选择器,按页面操作返回上层目录,再进入 books,选择 metadata.db,点击 select 并保存。目录结构与数据库文件要一起核对,这一步决定应用能否读取后续上传与管理的书籍信息。




四、切换中文、开放上传,并用一本 PDF 验证
数据库连接好以后,先在用户设置里切换中文显示,再进入管理权限和基本设置,勾选上传权限并保存。这个权限开关很关键:找不到“上传书籍”按钮时,不一定是容器或端口出错,也可能只是没有开放对应功能。






随后选取一份 PDF 上传,补充书名等基本信息,再保存并返回书库查看。这比只展示登录页更能证明整条链路:/books 可以使用、数据库能够记录书籍、页面也能把上传结果展示出来。这里演示的是 PDF 上传,不把其他格式的转换效果或阅读进度同步写成已经完成的测试。






五、书库在内网能打开以后,再安装 cpolar
书已经能从飞牛 OS 的 8083 页面找到,下一步才考虑人在外面怎样进入。cpolar 的职责只是把现有 Web 服务提供到公网;书籍文件、数据库和 Calibre-Web 容器仍在 NAS 上,不会因为有了公网地址就变成托管在外部的书库。
先在飞牛 OS 设置中开启 SSH,使用设备局域网 IP 远程连接。按 Linux 安装方式执行:


sudo curl https://get.cpolar.sh | sh
安装后检查 cpolar 服务状态:
sudo systemctl status cpolar

服务正常时,通过飞牛 OS 的局域网 IP 加 9200 进入 cpolar 管理界面,用已经注册的账号登录。这里需要区分两个端口:9200 是隧道管理页面,真正需要被外部访问的书库仍是 8083。

六、先用随机域名验证公网访问
进入 隧道管理 → 创建隧道,名称填写 cw,协议选 HTTP,本地地址填 8083,域名类型选随机域名,地区选 China Top。创建后到在线隧道列表复制生成的地址,再用另一台不在同一局域网内的设备打开,确认看到的是 Calibre-Web 页面。



这一层验证的是“外部浏览器 → cpolar → NAS 的 8083 → Calibre-Web”,不是重新部署一套书库。如果公网地址能打开,但书籍打不开,还应回到数据库、目录挂载及应用权限这一层继续排查。
七、为经常使用的书库保留固定入口
随机地址适合先试通网络;需要长期从手机、平板或其他地方进入时,固定二级子域名更方便收藏。进入 cpolar 的预留页面,选择保留二级子域名,地区为 china top,示例名称为 cw1,按提示填写备注并保留。名称有唯一性,最终以自己账号实际保留成功的结果为准。


再回到 隧道管理 → 隧道列表,找到前面名为 cw 的隧道,点击编辑,把域名类型改为二级子域名,在 Sub Domain 中填写预留成功的名称,地区选择 China Top,点击更新。到在线隧道列表查看新的固定地址,并从外部浏览器再次访问确认。



固定的是访问入口,而不是容器永不停止或 NAS 永不断网。也不要忘记,公开地址会扩大书库的可访问范围;除了更改初始密码,还应根据家庭使用范围管理账号、上传权限和藏书分享范围。电子书的上传、下载与分享也应遵守相应内容的使用授权。
总结
以前面对一整盘电子书,我最花时间的是寻找和辨认文件;现在有了 Calibre-Web,能把查书、浏览书目信息和上传新书集中到一个页面。飞牛 OS 负责承载容器和书库,/config 保存应用配置,/books 对应藏书与书库数据库,这三个位置弄清楚以后,比只追求一个漂亮首页更便于长期维护。
从本地的 8083 到 cpolar 随机地址,再到固定二级子域名 cw1,远程访问只是最后一环。真正值得留意的还是数据库是否有效、目录是否准确、上传权限是否打开,以及默认账号是否已经更换。把这些基础环节确认好,这座私人图书馆才不只是能访问,也能继续往里添书、整理和使用。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/qq_51601665/article/details/166785369




