拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

飞牛 OS 部署 Calibre-Web:Docker 整理电子书库、上传 PDF 到固定公网访问

飞牛 OS 部署 Calibre-Web:Docker 整理电子书库、上传 PDF 到固定公网访问

飞牛 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 命令:

dockerrun-d--name=calibre-web-ePUID=1000-ePGID=1000-eTZ=Asia/Shanghai-p8083:8083-v/vol1/1000/docker/calibre/config:/config-v/vol1/1000/docker/books:/books--restartunless-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 安装方式执行:

sudocurlhttps://get.cpolar.sh|sh

安装后检查 cpolar 服务状态:

sudosystemctl 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,远程访问只是最后一环。真正值得留意的还是数据库是否有效、目录是否准确、上传权限是否打开,以及默认账号是否已经更换。把这些基础环节确认好,这座私人图书馆才不只是能访问,也能继续往里添书、整理和使用。

返回列表