部署有声读物和播客的自托管媒体服务器 Audiobookshelf

电子说

1.3w人已加入

描述

一、Flexus 云服务器 X 实例介绍

1.1 云服务器介绍

云服务器为企业和个人带来了极大的便利性,不仅提高了效率,降低了成本,同时也增强了业务连续性和数据的安全性。用户可以根据自身业务发展的不同阶段选择合适的资源配置和服务类型,无论是小型初创企业还是大型跨国公司,都能够找到适合自己需求的解决方案。而且云服务商会定期更新他们的软件和服务,以提供最新的技术和功能。此外,还会有专业技术支持团队帮助解决遇到的问题。

华为云下一代云服务器 Flexus X 实例焕新上线,新产品具备柔性算力,六倍性能,旗舰体验,覆盖高科技、零售、金融、游戏等行业大多数通用工作负载场景,从而帮您快速上云!

Flexus X 实例通过和其他服务组合,具备计算、镜像安装、网络、存储、安全等能力,您可根据业务需要灵活配置各资源。

本次测评使用的规格是:4 核 12G-100G-3M 规格的 Flexus X 实例基础模式

1.2 性能模式

为了满足此类业务场景需要,Flexus 云服务器 X 实例推出了性能模式。开启性能模式后,Flexus 云服务器 X 实例采取底层物理绑核技术,提供极致稳定的 QoS 保障能力,您可以获得非常稳定的性能保障。

1.3 对比普通 ECS

二、Flexus 云服务器 X 实例配置

2.1 重置密码

购买完成后,会短信通过你的云服务器信息,重点是公网 IP 地址和用户名。首先我们需要打开你的服务器控制台,完成重置密码

勾选自动重启,点击确定即可。

2.2 服务器连接

• 方式一:使用控制台提供的 VNC 方式登录

• 方式二:使用 Putty、Xshell 等工具登录 Linux 弹性云服务器,a)下载安装登录工具,例如 Putty。b)输入弹性公网 IP。c)输入用户名:root、密码,单击“确定”。

• 方式三:使用 Linux/Mac OS 系统主机登录 Linux 弹性云服务器。a)执行连接命令。ssh 弹性公网 IP 例如:ssh 123.xxx.xxx.456b)输入用户名:root、密码,登录服务器。

我个人习惯使用 MobaXterm 这款软件,添加 SSH 连接,输出公网 IP、用户名和端口(默认 22),连接即可。

2.3 安全组配置

安全组是一个逻辑上的分组,为同一个 VPC 内的云服务器提供访问策略。用户可以在安全组中定义各种访问规则,当云服务器加入该安全组后,即受到这些访问规则的保护。

系统为每个网卡默认创建一个默认安全组,默认安全组的规则是对出方向上的数据报文全部放行,入方向访问受限。您可以使用默认安全组,也可以根据需要创建自定义的安全组。

主要需要填写优先级(默认填 1 即可)、协议端口信息(一般选择你项目需要暴露的端口即可),其他默认点击确定即可。安全组配置主要是暴露端口可以给外网访问。

如果还不清楚可以参考文档:安全组配置示例
 

三、部署 Audiobookshelf

3.1 Audiobookshelf 介绍

Audiobookshelf 项目由一群热衷于音频内容收集与管理的开发者发起,旨在为用户提供一个全面、灵活的音频管理平台。作为一个在 GitHub 上开源的项目,Audiobookshelf 不仅完全免费,还不断有社区的贡献者在丰富其功能。

这个平台能够支持多种音频格式,包括常见的 mp3、m4a、m4b 等,适合存储并管理书籍与播客。有别于音频流媒体服务,Audiobookshelf 不会受到网络波动或第三方服务器限制的影响,用户享有对音频文件的完全掌控。

自托管的安全性

通过自托管,用户可以确保个人音频库的安全性和隐私性。无需依赖于外部服务器,所有数据均存储于用户的硬件设施中,减少了数据泄露和隐私侵犯的风险。

功能齐全,管理便利

AudioBookshelf 提供了一套直观便捷的用户界面,能够轻松进行文件上传、分类、排序和收藏。其丰富的功能包罗万象,包括库管理、进度书签、倒带/快进控制以及播放速度调整,悉心服务于爱好者的每种使用习惯。

多客户端支持

由于采用了现代化的 Web 技术,Audiobookshelf 兼容性极佳,能够在多个设备上实现无缝访问。无论是电脑、平板还是智能手机,用户都能轻松地随时随地享受最佳的视听体验。

Audiobookshelf 是一个开源的,自托管的工具,相当于为您自己的数字音频库提供了一个私人“书架”。如果您曾因在线音乐、书籍服务的定制化缺陷和数据隐私问题感到困扰,那么 Audiobookshelf 绝对值得一试。通过将资源保存在个人掌控的数据中心,它给用户提供了高效、自由的管理体验。对于爱好音频的群体而言,这款工具可谓妙不可言。

• 官网:https://www.audiobookshelf.org/
 

• Github:https://github.com/advplyr/audiobookshelf
 

3.2 Docker 环境搭建

本次服务器环境是 ubuntu 系统镜像,需要自己安装 docker 环境

使用 apt-get 命令安装 docker 及其配置

#安装必要工具包 $ sudo apt-get install     apt-transport-https     ca-certificates     curl     gnupg-agent     software-properties-common#添加 Docker GPG 秘钥 $ sudo curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -#配置仓库源 $ sudo add-apt-repository       "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu       $(lsb_release -cs)       stable" #更新 apt 包索引 $ sudo apt-get update#安装 docker$ sudo apt-get install docker-ce docker-ce-cli containerd.io#添加 docker 镜像源 $ sudo vim /etc/docker/daemon.json{    "registry-mirrors": [        "https://ustc-edu-cn.mirror.aliyuncs.com/",        "https://docker.mirrors.ustc.edu.cn",        "https://docker.nju.edu.cn",        "https://ccr.ccs.tencentyun.com/",        "https://docker.m.daocloud.io/",        "https://dockerproxy.com",    ]}#重启 $ sudo systemctl daemon-reload$ sudo systemctl restart docker

 测试 docker 安装是否成功

root@flexusx-c6b3:~# docker -vDocker version 27.2.0, build 3ab4256```

检查 docker 服务状态

root@flexusx-c6b3:~# systemctl status docker* docker.service - Docker Application Container Engine     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)     Active: active (running) since Fri 2024-08-30 15:53:45 CST; 17h agoTriggeredBy: * docker.socket       Docs: https://docs.docker.com   Main PID: 24912 (dockerd)      Tasks: 13     Memory: 24.7M        CPU: 3.778s     CGroup: /system.slice/docker.service             `-24912 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

检查 docker compose 版本

root@flexusx-c6b3:~# docker compose versionDocker Compose version v2.29.2

3.3 Audiobookshelf 部署

• 创建 docker-compose.yml

version: "3.5"services:  audiobookshelf:    image: ghcr.io/advplyr/audiobookshelf:latest    ports:      - 13378:80    volumes:      - "./audiobooks:/audiobooks"      - "./podcasts:/podcasts"      - "./config:/config"      - "./metadata:/metadata"    environment:      - TZ=Asian/Shanghai

• volumes:映射容器内部文件路径到本地

• ports:配置访问端口

如果将上述代码片段保存在名为 docker-compose.yml 的文件中,则只需从同一文件夹中运行 docker compose up -d 即可自动拉取 Audiobookshelf 镜像,并创建并启动一个容器。up 表示启动服务,-d 表示在后台执行。docker-compose down 命令用于停止和清理由 docker-compose up 启动的服务。

• 配置安全组

在 Flexus 云服务器 X 实例的安全组管理页面,添加入方向规则,接下来我们启动服务需要监听 13378 端口,所以添加安全组为 TCP:13378 协议端口。

• 启动服务

进入项目目录,执行 docker compose up -d 启动命令,会自动拉取容器并运行

从 docker hub 拉取 Audiobookshelf 镜像,地址:https://hub.docker.com/r/advplyr/audiobookshelf
 

root@flexusx-c6b3:~/audiobookshelf# docker-compose up -dCreating network "audiobookshelf_default" with the default driverPulling audiobookshelf (ghcr.io/advplyr/audiobookshelf:latest)...latest: Pulling from advplyr/audiobookshelfc6a83fedfae6: Already exists731f5f878c76: Pull complete17ea4cb95273: Pull complete2ba186860f73: Pull complete0a5d570ef925: Pull complete4f1a26563f27: Pull completeec4818e64975: Pull completeefcb1b567354: Pull completee035c9387e67: Pull completea10dd0ba7a0a: Pull completeDigest: sha256:e8b14ccc2ebc34784494d35296c66a869559b3eac936a11f6a2f667ddc01fce3Status: Downloaded newer image for ghcr.io/advplyr/audiobookshelf:latestCreating audiobookshelf_audiobookshelf_1 ... Creating audiobookshelf_audiobookshelf_1 ... done

• 检查容器状态

检查 Audiobookshelf 容器状态,确保容器正常启动

root@flexusx-c6b3:~/audiobookshelf# docker psCONTAINER ID   IMAGE                                   COMMAND                  CREATED          STATUS          PORTS                                       NAMES7b6c1d1452a1   ghcr.io/advplyr/audiobookshelf:latest   "tini -- node index.…"   58 seconds ago   Up 47 seconds   0.0.0.0:13378->80/tcp, :::13378->80/tcp     audiobookshelf_audiobookshelf_1

• 访问地址

内网:http://localhost:13378 外网:http://公网 IP:13378

• 访问结果

若出现此页面,则部署 audiobookshelf server 成功。

3.4 Audiobookshelf 使用

初始化媒体库服务器设置,设置管理员帐号和路径设置,点击提交

输入刚刚设置的管理员 root 和密码完成登录

登录完成后进入首页

首先设置语言为简体中文,设置路径为:Setings - Default Server Language -简体中文

设置界面的左侧栏还有很多其他功能项,设置中可以开关一些功能按钮,还有媒体库、用户、日志、通知、项目元数据管理、媒体库统计数据等等

添加媒体库,可以添加我们开始配置的二个目录,audiobooks 和 podcasts

将下载好的书籍添加到目录中,注意:文件要以目录结构形式添加,直接将文件添加到目录中是无法识别的。

目录结构可以参考官方文档说明:https://www.audiobookshelf.org/docs/#book-directory-structure
 

书籍按文件夹指定。文件夹中的任何音频文件(或电子书文件)都将分组到该书籍中,但根文件夹除外,其中每个音频文件将被视为单独的书籍。

我这里直接使用音乐文件,直接放到 audiobooks 目录下,然后点击扫描目录

这样首页就会显示出你添加的内容了,上侧功能栏我们可以切换媒体库目录和查找,查看通知、统计数据、上传文件、设置和管理员账户管理

上传文件功能

我的统计数据

对于每个媒体库目录也有自己的统计数据,还会有自动系列分类、收藏列表、作者分类、演播者分类和统计数据

由于我上传音频文件没有详细信息,对于每个封面可以点击编辑,重新输入参数,包括封面图、作者、发布年份、标签功能

甚至还可以制作 M4B 有声读物,嵌入元数据

音频的播放界面如下,可以切换上下章节、暂停和播放、前进或后退进度、音量调节、睡眠定时、播放列表等功能,和音乐播放器类似

我们来查看下 Audiobookshelf 的映射文件路径下的结构

root@flexusx-c6b3:~/audiobookshelf# tree -L 1.|-- audiobooks|-- config|-- docker-compose.yml|-- metadata`-- podcasts4 directories, 1 file

• config 即为数据库(users/books/libraries/settings)

• metadata 即为缓存、流、封面、下载、备份和日志

• audiobooks 即为音频书籍

• podcasts 即为博客

Audiobookshelf 的入门级别使用就是这些了,对于日常使用的上传文件、扫描文件以及有声读物和播客的使用、播放基本都介绍了,还可以编辑有声读物和制作有声读物,软件还有一些其他的功能,如上传、下载、从 RSS 搜索下载、创建播放量列表等,有兴趣的同学可以自行研究。

四、总结

随着数字音频内容的日益普及,无论是想利用碎片时间学习的职场达人,还是享受听书乐趣的文学爱好者,大家对有声书和播客的需求正在迅速增长。然而,面对数量众多的音频文件,如何进行有效管理和便捷访问成为了用户面临的一大难题。而 Audiobookshelf 就是一款卓越的自托管有声书和播客服务平台,用于管理和播放你的有声读物。对于喜欢听相声和小说的同志是一款不可多得的好软件。此次使用的 Flexus X 实例配置还是很高的 4 核 12G-100G-3M 规格的基础模式,测试下来上传文件、扫描文件和播放音频都没有出现卡顿问题,扫描文件时候存在大量 IO,占用内存会增高些,但是丝毫体验不到压力。

华为云正在举行 828 B2B 企业节,华为云凭借其稳定的服务质量和全面的产品线,成为了众多企业和个人用户的首选。不论是新创企业还是个人开发者,都可以借此良机享受到高性能的计算资源和支持,比如 Flexus X 实例专为高性能计算场景设计,无论你是进行大规模数据分析、图形渲染还是其他需要强大算力支持的任务,都能感受到它的强大之处。快来体验华为云带来的无限可能吧!立即体验
 

 审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分