docs: Audiobookshelf v11.0 — 完整部署记录 + 决策经验固化

- TIMELINE: v11.0 有声书服务上线 + 音频归档体系
- CHANGELOG: v1.3.0 Audiobookshelf 部署 + 踩坑记录
- DECISION_LOG: O-2026-06-20 x3 (归档分层/章节排序/部门拆分)
- README: 新增 ebook-library + Audiobookshelf 条目
- 服务清单: 新增 podcast.xybkwd.top + 音频归档
This commit is contained in:
fxy
2026-06-20 15:09:01 +08:00
parent cc4692bb64
commit 4171581c81
4 changed files with 114 additions and 1 deletions

View File

@ -125,13 +125,15 @@
| Caddy反代 | 各域名 | 80/443 | ✅ 运行中 |
| Gitea | gitea.xybkwd.top | 3000 | ✅ 运行中 |
| Memos | memo.xybkwd.top | 5230 | ✅ 运行中 |
| Beast Dashboard | dashboard.xybkwd.top | 9000 | ✅ dry-run 运行中 |
| Dashboard | dashboard.xybkwd.top | 9000 | ✅ dry-run 运行中 |
| AI Chat | chat.xybkwd.top | 8900 | ✅ 运行中 |
| Todo Server | nav.xybkwd.top/api | 9001 | ✅ 运行中 |
| 每日要闻 | brief.xybkwd.top | 静态 | ✅ 运行中 |
| 栖云导航 | nav.xybkwd.top | 静态 | ✅ 运行中 |
| **Audiobookshelf** | **podcast.xybkwd.top** | **13378** | **✅ 运行中** |
| 灵感收集器 | — | cron | ✅ 每日 22:00 运行 |
| 系统备份 | — | cron | ✅ 每日 04:00 运行 |
| 音频归档 | D://服务器备份//有声书// | — | ✅ 手动同步 |
---
@ -186,3 +188,56 @@
**安全铁律**
- 严禁取消 basicauth任何调试通过 localhost 不改 Caddyfile
---
### 2026-06-20 — Audiobookshelf 有声书服务上线 + 音频归档体系
**v11.0 — 有声书 & 播客服务**
**部署内容**
- Docker 部署 `ghcr.io/advplyr/audiobookshelf:latest`,端口 13378
- Caddy 反代到 `podcast.xybkwd.top`
- docker-compose 管理:`/home/ubuntu/audiobookshelf/docker-compose.yml`
- 数据目录:`config/` `metadata/` `audiobooks/` `podcasts/`
- 手机端通过希声 App 同步收听
**核心工作流**
```
B站/YouTube → yt-dlp 下载(带 upload_date) → 转 MP3
→ 按源端发布时间排序 → 加 01-N 前缀(完整保留标题)
→ 放入 audiobooks/节目名/
→ Audiobookshelf watcher 自动检测 → 希声自动同步
```
**技术突破 — 章节排序三层同步铁律**
Audiobookshelf 章节排序依赖三层数据,只改文件名不生效:
| 层 | 位置 | 关键字段 | 规则 |
|:---|:---|:---|:---|
| ① 文件系统 | 文件名 | `01-标题.mp3` | 数字前缀确保字母序 |
| ② books 表 | `chapters` JSON | `start`(秒) | 必须连续递增 |
| ③ books 表 | `audioFiles` JSON | `index` | 必须顺序 1→2→3→... |
**滚动淘汰 + 本地归档体系**
- 每节目服务器只保留最新 3 集(节省磁盘)
- 淘汰的旧集 → `archive_pending/` 暂存 → `sync_archive.sh` SCP 到本地
- 本地归档:`D:/服务器备份/有声书/<节目名>/`D 盘 392G 可用)
- 服务器脚本:`/home/ubuntu/audiobookshelf/scripts/archive_old_audio.sh`
- 本地脚本:`D:/服务器备份/有声书/sync_archive.sh`
**踩坑记录**
1. 数据库误删 — 必须问用户再动手(血的教训)
2. 章节排序 — 不是靠文件名字母序,是靠 chapters[].start 时间戳
3. SCP 中文路径 — 含空格的目录需临时路径中转
4. 容器无需频繁重启 — watcher 自动检测文件变化
5. B站无纯音频流 — 用 `-f worstvideo+worstaudio/worst` 最小化下载量
**当前有声书内容**
| 节目 | 集数 | 来源 |
|:---|:---|:---|
| 渤海小吏·八王之乱 | 5集 | B站 |
| 纵横四海 | 3集 | B站 |
| 翟东升 | 3集 | YouTube |
| Elon Musk | 99集 | 本地导入 |
**意义**:从碎片化的通勤时间利用,升级为一套完整的"内容获取 → 整理归档 → 移动收听"流水线。个人知识输入的又一条通道。