828华为云征文|部署有声读物和播客的自托管媒体服务器 Audiobookshelf

828华为云征文|部署有声读物和播客的自托管媒体服务器 Audiobookshelf

  • 一、Flexus云服务器X实例介绍
    • [1.1 云服务器介绍](#1.1 云服务器介绍)
    • [1.2 性能模式](#1.2 性能模式)
    • [1.3 对比普通 ECS](#1.3 对比普通 ECS)
  • 二、Flexus云服务器X实例配置
    • [2.1 重置密码](#2.1 重置密码)
    • [2.2 服务器连接](#2.2 服务器连接)
    • [2.3 安全组配置](#2.3 安全组配置)
  • [三、部署 Audiobookshelf](#三、部署 Audiobookshelf)
    • [3.1 Audiobookshelf 介绍](#3.1 Audiobookshelf 介绍)
    • [3.2 Docker 环境搭建](#3.2 Docker 环境搭建)
    • [3.3 Audiobookshelf 部署](#3.3 Audiobookshelf 部署)
    • [3.4 Audiobookshelf 使用](#3.4 Audiobookshelf 使用)
  • 四、总结

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

1.1 云服务器介绍

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

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

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


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

1.2 性能模式

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

关闭性能模式后的规格信息 开启性能模式后的规格信息
CPU/内存配比:支持灵活自定义vCPU和内存配比,您可基于业务资源需要选择合适规格,节省资源开销。 CPU/内存配比:支持灵活自定义vCPU和内存配比,您可基于业务资源需要选择合适规格,节省资源开销。
vCPU/内存范围:vCPU最大范围为1~16,内存最大范围为1GiB~128GiB。 vCPU/内存范围:vCPU最大范围为2~32,内存最大范围为2GiB~256GiB。
处理器:第三代英特尔® 至强® 可扩展处理器。基频/睿频:2.8GHz/3.5GHz。 基频/睿频:2.45GHz/3.5GHz。

1.3 对比普通 ECS

项目 Flexus应用服务器L实例 Flexus云服务器X实例 ECS
适用对象 适用于业务负载要求相对较低,且期望即开即用、超快部署的中小企业和开发者。 适用于中负载业务,且期望资源灵活选配的中小企业和开发者。 适用于网站应用、企业电商、图形渲染、数据分析、高性能计算等高负载、全业务应用场景。
实例特点 内置丰富的解决方案与镜像,零门槛快速搭建业务环境,轻松启动和管理业务 灵活自定义规格、性能稳定强劲、按需灵活计费。 支持灵活地选择所需的内存、CPU、带宽等配置,帮助您打造可靠、安全、灵活、高效的应用环境。

二、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.456

    b) 输入用户名: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 绝对值得一试。通过将资源保存在个人掌控的数据中心,它给用户提供了高效、自由的管理体验。对于爱好音频的群体而言,这款工具可谓妙不可言。

3.2 Docker 环境搭建

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

服务器类别 系统镜像 内网IP地址 Docker版本 操作系统版本
Flexus云服务器X实例 Ubuntu 192.168.0.168 27.2.0 Ubuntu 22.04.4 LTS

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

bash 复制代码
# 安装必要工具包
$ 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安装是否成功

bash 复制代码
root@flexusx-c6b3:~# docker -v
Docker version 27.2.0, build 3ab4256```

检查docker服务状态

bash 复制代码
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 ago
TriggeredBy: * 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版本

bash 复制代码
root@flexusx-c6b3:~# docker compose version
Docker Compose version v2.29.2

3.3 Audiobookshelf 部署

  • 创建 docker-compose.yml
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

bash 复制代码
root@flexusx-c6b3:~/audiobookshelf# docker-compose up -d
Creating network "audiobookshelf_default" with the default driver
Pulling audiobookshelf (ghcr.io/advplyr/audiobookshelf:latest)...
latest: Pulling from advplyr/audiobookshelf
c6a83fedfae6: Already exists
731f5f878c76: Pull complete
17ea4cb95273: Pull complete
2ba186860f73: Pull complete
0a5d570ef925: Pull complete
4f1a26563f27: Pull complete
ec4818e64975: Pull complete
efcb1b567354: Pull complete
e035c9387e67: Pull complete
a10dd0ba7a0a: Pull complete
Digest: sha256:e8b14ccc2ebc34784494d35296c66a869559b3eac936a11f6a2f667ddc01fce3
Status: Downloaded newer image for ghcr.io/advplyr/audiobookshelf:latest
Creating audiobookshelf_audiobookshelf_1 ... 
Creating audiobookshelf_audiobookshelf_1 ... done
  • 检查容器状态

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

bash 复制代码
root@flexusx-c6b3:~/audiobookshelf# docker ps
CONTAINER ID   IMAGE                                   COMMAND                  CREATED          STATUS          PORTS                                       NAMES
7b6c1d1452a1   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 - 简体中文

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

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

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

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

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

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

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

上传文件功能

我的统计数据

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

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

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

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

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

bash 复制代码
root@flexusx-c6b3:~/audiobookshelf# tree -L 1
.
|-- audiobooks
|-- config
|-- docker-compose.yml
|-- metadata
`-- podcasts

4 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实例专为高性能计算场景设计,无论你是进行大规模数据分析、图形渲染还是其他需要强大算力支持的任务,都能感受到它的强大之处。快来体验华为云带来的无限可能吧!立即体验

相关推荐
意疏9 小时前
【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行
linux·docker
墨鸦_Cormorant9 小时前
使用docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像
redis·nginx·docker
Code_Artist9 小时前
Docker镜像加速解决方案:配置HTTP代理,让Docker学会科学上网!
docker·云原生·容器
wanmei00211 小时前
Dockerfile复制目录进入镜像里
docker
inter_peng11 小时前
[Docker-显示所有容器IP] 显示docker-compose.yml中所有容器IP的方法
tcp/ip·docker·eureka
Linux运维日记11 小时前
k8s1.31版本最新版本集群使用容器镜像仓库Harbor
linux·docker·云原生·容器·kubernetes
一名路过的小码农13 小时前
ceph 18.2.4二次开发,docker镜像制作
ceph·docker·容器
xiangshangdemayi15 小时前
Windows环境GeoServer打包Docker极速入门
windows·docker·容器·geoserver·打包·数据挂载
程序员JerrySUN16 小时前
熟悉的 Docker,陌生的 Podman
linux·docker·容器·系统架构·podman
gobeyye17 小时前
Docker 用法详解
运维·docker·容器