Ting Reader 是一个轻量级的自托管有声书平台,专为有声书爱好者打造。它支持自动刮削元数据、多端播放进度同步、极致的视觉体验以及多架构 Docker 部署。后端现已完全重写为 Rust,带来更强的性能和更低的资源占用。
🌐 官方网站:https://www.tingreader.cn
📱 客户端:https://github.com/dqsq2e2/ting-reader-flutter
访问官网查看最新文档、下载客户端及在线演示。
📱 移动端与响应式界面 (点击展开)
| 用户登录 |
|---|
![]() |
| 首页 | 书架 | 搜索 | 收藏 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| 播放界面 | 章节列表 | 智能跳过 |
|---|---|---|
![]() |
![]() |
![]() |
| 详情概览 | 章节管理 | 元数据编辑 |
|---|---|---|
![]() |
![]() |
![]() |
| 存储库管理 | 刮削配置 | 任务日志 | 插件管理 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| 用户管理 | 创建账号 | 账号设置 | 播放偏好 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
🖥️ 桌面端界面 (点击展开)
| 首页 |
|---|
![]() |
| 书架 |
|---|
![]() |
| 搜索 |
|---|
![]() |
| 收藏 |
|---|
![]() |
| 书籍详情(含章节列表与播放小窗) |
|---|
![]() |
| 编辑书籍元数据 |
|---|
![]() |
| 章节管理 |
|---|
![]() |
| 存储库管理 |
|---|
![]() |
| 编辑存储库 |
|---|
![]() |
| 系统日志 |
|---|
![]() |
| 插件管理 |
|---|
![]() |
| 用户管理 |
|---|
![]() |
| 创建用户 |
|---|
![]() |
| 系统设置 - 账号与外观 |
|---|
![]() |
| 系统设置 - 播放偏好 |
|---|
![]() |
- ⚡ Rust 核心:后端采用 Rust 编写,资源占用低,响应速度快。
- 📚 自动刮削:集成强大的元数据刮削,自动获取书名、作者、演播者、简介及标签。
- 🔌 插件系统:支持 JS、WASM 和 Native 插件,轻松扩展刮削源和格式支持。
- 🎨 自适应主题:根据书籍封面自动提取主色调并实时调整书籍详情页背景与按钮颜色,视觉体验极致沉浸。
- ☁️ 多源支持:支持本地目录挂载及 WebDAV(如 Alist、PikPak)远程存储,并支持
.strm流媒体文件。 - 🎵 格式兼容:支持多种音频格式,包括 MP3, M4A, M4B, WAV, FLAC, OGG, OPUS, AAC, WMA 等。
- 🎧 沉浸播放:支持跳过片头/片尾,支持播放速度调节及进度记忆,支持服务端转码播放。
- 🏷️ 智能管理:支持标签筛选、系列管理,支持本地媒体库自动检测,交互体验极佳。
- 🧩 外挂组件:支持将播放器以 Widget 形式嵌入博客、Notion 或个人网站,支持吸底、悬浮等多种布局及自定义 CSS。
- 🌓 深色模式:完美的深色模式适配,夜间听书更护眼。
- 🐳 Docker 部署:支持 amd64 和 arm64 多架构构建,一键启动。
- 🔐 权限管理:完善的登录系统与管理员后台,支持多用户数据隔离。
正式版 Release 会同时提供前端静态包、Linux amd64/arm64 后端包和交互式部署脚本。脚本会自动识别系统架构,并引导选择交互语言、GitHub 镜像加速、版本、监听地址(Host)、端口、数据目录、默认存储库及额外本地存储库路径。启用镜像后,前后端下载地址会自动添加 https://gh-proxy.org/ 前缀。
curl -fL https://github.com/dqsq2e2/ting-reader/releases/latest/download/deploy.sh -o deploy.sh
chmod +x deploy.sh
./deploy.sh部署时可选择系统级 systemd、用户级 systemd 或仅生成文件后手动运行。当前本地发布包支持 Linux amd64 与 arm64。部署完成后可运行 ting-reader-library 添加并授权本地存储库,运行 ting-reader-update 更新前后端并保留配置、数据库、插件和媒体文件,运行 ting-reader-uninstall 安全卸载前后端。
如果本地更新命令缺失,可以运行:
curl -fsSL https://www.tingreader.cn/update.sh | bash如果本地卸载命令缺失,可以运行:
curl -fsSL https://www.tingreader.cn/uninstall.sh | bash创建 docker-compose.yml 文件:
services:
ting-reader:
image: dqsq2e2/ting-reader:latest
container_name: ting-reader
ports:
- "0.0.0.0:3000:3000"
# 如需 IPv6 访问,请先确认 Docker 主机已启用 IPv6,再取消下一行注释:
# - "[::]:3000:3000"
volumes:
- ./data:/app/data # 数据库和配置
- ./storage:/app/storage # 默认有声书文件目录
- ./plugins:/app/plugins # 插件目录
- ./temp:/app/temp # 临时缓存目录
# 可选:把多个宿主机目录挂到 /app/storage 下的不同子目录。
# 后台存储库管理会在 /app/storage 中看到这些子目录。
# 只扫描/播放用 :ro;需要写入 NFO/metadata 时改用 :rw。
# - /mnt/disk1/audiobooks:/app/storage/audiobooks:ro
# - /mnt/disk2/story:/app/storage/story:ro
restart: unless-stopped
environment:
- RUST_LOG=info
- TING_SERVER__HOST=0.0.0.0
- TING_SERVER__PORT=3000
# 可选:未配置时服务端会自动生成并持久化 JWT 密钥。
# 固定密钥仅在迁移实例或多副本共享登录状态时需要。
# - TING_SECURITY__JWT_SECRET=change_me_in_prodIPv6 访问需要 Docker 守护进程和宿主机网络同时启用 IPv6。直接运行二进制时,也可以将
TING_SERVER__HOST设为::监听 IPv4/IPv6 双栈。
Docker 中最简单的多目录方式是继续把目录挂到 /app/storage 的子目录下;Ting Reader 不要求所有文件实际来自同一个宿主机目录。裸机、fnOS 或其他部署方式也可以通过 storage.local_library_roots 或 fnOS 授权目录把应用已获准访问的本地目录加入存储库选择器。
启动容器:
docker-compose up -d如果您使用的是飞牛 fnOS 系统,可以通过官方应用中心的“手动导入”功能快速一键部署:
- 下载安装包:前往 GitHub Releases 下载最新版本的
ting-reader-[版本号].fpk文件。 - 手动安装:
- 进入飞牛 fnOS 的 应用中心。
- 点击右上角的 手动安装 按钮。
- 选择并上传下载好的
.fpk文件。
- 完成向导:按照图形化引导界面配置访问端口以及有声书存储路径,点击“完成”后应用将自动创建容器并添加桌面启动图标。
访问 http://localhost:3000 (或您自定义的端口) 即可开始使用。
⚠️ 注意:首次登录请使用管理员账号:admin,密码:admin123。登录后请务必及时在设置页面修改密码以保证安全。
- Node.js 20+
- Rust 1.75+
- SQLite3
ting-reader/
├── backend/ # Rust 后端源代码
├── frontend/ # React 前端源代码
├── plugins/ # 官方插件源码
└── .github/ # GitHub 工作流与 FPK 配置
-
克隆仓库:
git clone https://github.com/dqsq2e2/ting-reader.git cd ting-reader -
启动后端:
cd backend # 确保 config.toml 配置正确 cargo run
-
启动前端:
cd ../frontend npm install npm run dev
如果您在安装或使用过程中遇到任何问题,或者有功能建议,欢迎加入我们的社群:
- QQ 交流群:1082770534
点击链接即可快速加入群聊,获得最新动态、技术支持及使用技巧分享。
关于项目的详细版本变更记录,请参考 CHANGELOG.md。
本项目采用 GNU Affero General Public License v3.0 协议(SPDX:AGPL-3.0-only)。
欢迎提交 Issue 或 Pull Request!请参考 CONTRIBUTING.md 了解更多细节。


































