1
0
1Panel-Appstore/apps/audiobookshelf/README.md

265 lines
10 KiB
Markdown
Raw Normal View History

2025-07-03 11:40:55 +08:00
![Audiobookshelf Banner](https://github.com/advplyr/audiobookshelf/raw/master/images/banner.svg)
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
[文档](https://audiobookshelf.org/docs) · [用户指南](https://audiobookshelf.org/guides) · [支持](https://audiobookshelf.org/support)
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
# 关于
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
Audiobookshelf 是一个自托管的有声书和播客服务器。
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
### 功能
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
* 完全 **开源** ,包括 [Android & iOS 应用](https://github.com/advplyr/audiobookshelf-app) *(内测中)*
* 实时流式传输所有音频格式
* 搜索并添加播客以自动下载集数
* 支持多用户,并可自定义权限
* 按用户保存进度并在设备间同步
* 自动检测库更新,无需重新扫描
* 批量上传书籍和播客,支持拖放文件夹
* 备份元数据,并提供每日自动备份
* 渐进式网络应用PWA
* 支持通过网页和安卓应用使用 Chromecast
* 从多个来源获取元数据和封面艺术
* 章节编辑和章节查找(使用 Audnexus API
* 将你的音频文件合并为一个 m4b 文件
* 将元数据和封面图片嵌入到你的音频文件中(使用 Tone
* 基本的电子书支持和电子阅读器
* Epub, pdf, cbr, cbz
* 将电子书发送到设备例如Kindle
* 打开播客和有声书的 RSS 订阅源
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
您在寻找某个功能吗? [提出来](https://github.com/advplyr/audiobookshelf/issues/new/choose)
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
加入我们,在 [Discord](https://discord.gg/pJsjuNCKRq) 或 [Matrix](https://matrix.to/#/#audiobookshelf:matrix.org)
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
### Android 应用(测试版)
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
在 [Google Play 商店](https://play.google.com/store/apps/details?id=com.audiobookshelf.app)试用
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
### iOS App测试版
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
通过 Test Flight 获取:[https://testflight.apple.com/join/wiic7QIW](https://testflight.apple.com/join/wiic7QIW) - [加入讨论](https://testflight.apple.com/join/wiic7QIW)
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
### 自建工具与客户端
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
查看 [API 文档](API 文档)
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
![Library Screenshot](https://github.com/advplyr/audiobookshelf/raw/master/images/DemoLibrary.png)
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
# 整理有声书
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
#### 目录结构和文件夹名称对 Audiobookshelf 非常重要!
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
请参阅[文档](https://audiobookshelf.org/docs#book-directory-structure)了解支持的目录结构、文件夹命名约定以及音频文件元数据的使用方法。
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
# 安装
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
请参阅[安装文档](https://www.audiobookshelf.org/docs)
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
# 反向代理设置
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
#### 重要Audiobookshelf 需要建立 WebSocket 连接。
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
#### 注意:子文件夹路径(例如 /audiobooks尚未支持。详见 [issue](https://github.com/advplyr/audiobookshelf/issues/385)
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
### NGINX 反向代理管理器
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
启用 WebSockets 支持
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
![NGINX Web socket](https://user-images.githubusercontent.com/67830747/153679106-b2a7f5b9-0702-48c6-9740-b26b401986e9.png)
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
### NGINX 反向代理
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
在你的 Nginx 服务器的站点配置文件中添加以下内容,更改 <> 中的相关部分,并插入你的证书路径,然后保存文件。
2023-11-09 19:15:01 +08:00
```bash
server
{
listen 443 ssl;
server_name <sub>.<domain>.<tld>;
access_log /var/log/nginx/audiobookshelf.access.log;
error_log /var/log/nginx/audiobookshelf.error.log;
ssl_certificate /path/to/certificate;
ssl_certificate_key /path/to/key;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_pass http://<URL_to_forward_to>;
proxy_redirect http:// https://;
}
}
```
2025-07-03 11:40:55 +08:00
### Apache 反向代理
在你的 Apache 服务器的站点配置文件中添加以下内容,更改 <> 中的相关部分,并插入你的证书路径,然后保存文件。
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
要使此功能正常工作,你必须使用 `a2enmod` 启用以下模块中的至少一个:
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
* `ssl`
* `proxy`
* `proxy_http`
* `proxy_balancer`
* `proxy_wstunnel`
* `rewrite`
2023-11-09 19:15:01 +08:00
```bash
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName <sub>.<domain>.<tld>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyPreserveHost On
ProxyPass / http://localhost:<audiobookshelf_port>/
RewriteEngine on
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/?(.*) "ws://localhost:<audiobookshelf_port>/$1" [P,L]
# unless you're doing something special this should be generated by a
# tool like certbot by let's encrypt
SSLCertificateFile /path/to/cert/file
SSLCertificateKeyFile /path/to/key/file
</VirtualHost>
</IfModule>
```
2025-07-03 11:40:55 +08:00
某些由 Let's Encrypt 签名的 SSL 证书(如 Let's Encrypt 证书)需要进行 ACME 验证。为了允许 Let's Encrypt 写入并确认 ACME 挑战,请编辑您的 VirtualHost 定义,以防止代理查询 `/.well-known` 的流量,而是直接提供这些内容:
2023-11-09 19:15:01 +08:00
```bash
<VirtualHost *:443>
# ...
# create the directory structure /.well-known/acme-challenges
# within DocumentRoot and give the HTTP user recursive write
# access to it.
DocumentRoot /path/to/local/directory
ProxyPreserveHost On
ProxyPass /.well-known !
ProxyPass / http://localhost:<audiobookshelf_port>/
# ...
</VirtualHost>
```
2025-07-03 11:40:55 +08:00
### SWAG 反向代理
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
[请参阅 LinuxServer.io 配置示例](https://github.com/linuxserver/reverse-proxy-confs/blob/master/audiobookshelf.subdomain.conf.sample)
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
### Synology 反向代理
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
1. 打开控制面板 > 应用程序门户
2. 切换到反向代理选项卡
3. 选择您想要启用 Websockets 的代理规则,然后点击编辑
4. 切换到“自定义标头”选项卡
5. 点击创建 > WebSocket
6. 点击保存
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
[来自 @silentArtifact](https://github.com/advplyr/audiobookshelf/issues/241#issuecomment-1036732329)
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
### [Traefik 反向代理](https://doc.traefik.io/traefik/)
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
与 CORS 相关的中间件会导致在登录时应用程序报告未知错误。为了避免这种情况,请不要为该站点的路由器应用以下标头:
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
* accessControlAllowMethods
* accessControlAllowOriginList
* accessControlMaxAge
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
来自 @Dondochaka@BeastleeUK
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
### 示例 Caddyfile - [Caddy 反向代理](https://caddyserver.com/docs/caddyfile/directives/reverse_proxy)
2023-11-09 19:15:01 +08:00
```
subdomain.domain.com {
encode gzip zstd
reverse_proxy <LOCAL_IP>:<PORT>
}
```
2025-07-03 11:40:55 +08:00
# 从源代码运行
# 贡献
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
该应用使用 [NodeJs](https://nodejs.org/) 构建。
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
### Dev Container 设置
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
开始开发这个项目最简单的方法是使用开发容器。在 VSCode 中使用开发容器的介绍可以在这里找到 [这里](https://code.visualstudio.com/docs/devcontainers/containers) 。
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
所需软件:
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
* [Docker Desktop](https://www.docker.com/products/docker-desktop/)
* [VSCode](https://code.visualstudio.com/download)
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
*请注意,除了使用 Docker 作为容器软件,还可以使用其他容器软件;除了使用 VSCode 作为 IDE还可以使用其他 IDE。然而这种设置更为复杂这里不予涵盖。*
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
在 Windows 上使用安装所需的软件
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
注意:这需要一个带有 winget 的 PowerShell 提示符。你应该能够复制并粘贴代码块进行安装。如果你使用的是提升的 PowerShell 提示符,安装过程中不会弹出 UAC 提示。
2023-11-09 19:15:01 +08:00
```PowerShell
winget install -e --id Docker.DockerDesktop; `
winget install -e --id Microsoft.VisualStudioCode
```
2025-07-03 11:40:55 +08:00
在 MacOS 上使用安装所需的软件
2023-11-09 19:15:01 +08:00
```sh
brew install --cask docker visual-studio-code
```
2025-07-03 11:40:55 +08:00
使用 snap 在 Linux 上安装所需的软件
2023-11-09 19:15:01 +08:00
```sh
2025-07-03 11:40:55 +08:00
sudo snap install docker;
2023-11-09 19:15:01 +08:00
sudo snap install code --classic
```
2025-07-03 11:40:55 +08:00
安装这些包后,您现在可以安装 VSCode 的 [Remote Development](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) 扩展。安装完此扩展后,打开命令面板(`ctrl+shift+p` 或 `cmd+shift+p`),然后选择命令 `>Dev Containers: Rebuild and Reopen in Container` 。这将导致开发环境容器被构建并启动。
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
现在您可以开始开发了!
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
### 手动设置环境
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
如果你不想使用开发容器,仍然可以开发这个项目。首先,你需要安装 [NodeJs](https://nodejs.org/)(版本 16和 [FFmpeg](https://ffmpeg.org/)。
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
接下来,你需要在项目的根目录中创建一个 `dev.js` 文件。这个文件包含配置信息和与你的开发环境相关的路径。你可以在 `.devcontainer/dev.js` 中找到这个文件的一个示例。
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
你现在可以构建客户端了:
2023-11-09 19:15:01 +08:00
```sh
npm ci
cd client
npm ci
npm run generate
cd ..
```
2025-07-03 11:40:55 +08:00
### 开发命令
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
设置完开发环境后(无论是使用开发容器还是自定义环境),以下命令可以帮助你运行服务器和客户端。
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
要运行服务器,可以使用命令 ``npm run dev``。这将使用你在客户端目录中运行 ``npm run generate`` 时构建的客户端,或者在启动开发容器时构建的客户端。如果你对服务器进行了修改,需要重启服务器。如果你对客户端进行了修改,需要运行命令 ``(cd client; npm run generate)``,然后重启服务器。默认情况下,客户端运行在 ``localhost:3333``,但端口可以在 ``dev.js`` 中进行配置。
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
你也可以构建一个支持实时重载的客户端版本。要实现这一点,先启动服务器,然后运行命令 ``(cd client; npm run dev)``。这将在 ``localhost:3000`` 上运行一个客户端实例,并且当你对客户端进行修改时会自动更新。
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
如果你使用的是 VSCode这个项目包含几个预定义的目标来加快这个过程。首先如果你构建项目`ctrl+shift+b` 或 `cmd+shift+b`),它会自动生成客户端。接下来,有调试命令可以运行服务器和客户端。你可以通过调试面板查看这些目标(使用 `ctrl+shift+d``cmd+shift+d` 打开调试面板):
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
* `Debug server`—运行服务器。
* `Debug client (nuxt)`—运行客户端并启用实时重载。
* `Debug server and client (nuxt)` —运行上述两个调试目标。
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
# 如何支持
2023-11-09 19:15:01 +08:00
2025-07-03 11:40:55 +08:00
[查看不完整的“支持方式”页面](https://www.audiobookshelf.org/support)