简要说明

猫老大比较喜欢听有声书,但又苦于找不到一个免费好用的有声书平台,所以决定自己搭建一个私有有声书平台。

需求是多端同步,能记录听的位置,之前是使用的安卓端Smart AudioBook Player,功能很多,文件只能存在手机上,正好有个迷你主机,就想把文件都存到主机上,同时实现内外网访问。

内容

文件目录结构
audiobookshelf 文件夹
├── docker-compose.yaml 文件
├── audiobooks 文件夹
├── podcasts 文件夹
├── metadata 文件夹
└── config 文件夹

部分系统如群晖,需要手动创建audiobookspodcastsmetadataconfig文件夹,其他的系统如飞牛 ubuntu则会在构建过程中自动生成。

docker-compose.yaml
直接使用 GitHub 上的docker-compose.yml,可以不作修改,下面的只是把注释删掉了

1
2
3
4
5
6
7
8
9
10
11
services:
audiobookshelf:
image: ghcr.io/advplyr/audiobookshelf:latest
ports:
- 13378:80
volumes:
- ./audiobooks:/audiobooks
- ./podcasts:/podcasts
- ./metadata:/metadata
- ./config:/config
restart: unless-stopped

docker-compose.yaml 文件中的ports:下面左侧的数字13378是对外端口(设备访问用的端口),可以改成自己想要的端口,右侧的数字是容器内部端口,不需要改动。

接下来可以使用

1
docker-compose up -d

启动audiobookshelf容器,然后访问http://localhost:13378即可访问

http://localhost:13378是在本机访问,如果是在局域网内访问,需要使用http://<主机IP>:13378

我是飞牛系统,点开Docker-Compose按下面添加一个新的即可

公网访问

IPv6(推荐)

将机器的 IPv6 地址解析到域名,并确保防火墙已开放对应端口,即可通过 http://ip:端口 访问;或通过 Lucky 反向代理实现 https://xxx.ip 访问。

IPv4

本地没有共网 IPv4 就需要整一个有共网的服务器,配置低点的就行,利用 frp 实现内网穿透,将内网端口映射到公网,这样就可以使用http://ip:端口访问。
示例 frp 配置如下:

1
2
3
4
5
6
[[proxies]]
name = "audiobook"
type = "tcp"
localIP = "127.0.0.1"
localPort = 13378
remotePort = 6000

可以在公网服务器上反代,实现https://xxx.ip访问
反代 http://127.0.0.1:6000 即可

使用说明

浏览器打开http://<主机IP>:13378,可以看到如下界面

创建管理员账号,第一个空是登录名,第二个是密码,第三个重复密码,其他不要改动,点击Submit即可

接下来输入账号密码登录

按下图改成中文

点击媒体库,添加媒体库,填写媒体库名称,点击浏览文件夹,选择 audiobooks,其他的可以不改,点击创建

接下来在 nas 上把有声书文件放到 audiobooks 文件夹,然后刷新页面,就可以看到有声书了