部署 Audiobookshelf 需要先准备 Docker 环境,再通过 Docker Compose 定义服务、挂载数据目录和映射端口,最后启动容器并完成初始化配置。具体步骤如下。

1. 准备工作

确保服务器或电脑上已经安装 Docker 和 Docker Compose。

创建一个用于存放 Docker Compose 文件和数据的目录,例如 audiobookshelf。目录结构可参考:

    mkdir audiobookshelf
    cd audiobookshelf

2. 创建 Docker Compose 文件

在 audiobookshelf 目录中创建 docker-compose.yml,定义 Audiobookshelf 服务及其依赖项。一个基本的 docker-compose.yml 文件如下所示:

version: "3.8"
services:
  audiobookshelf:
    image: advplyr/audiobookshelf:latest  # 使用最新的 Audiobookshelf 镜像
    container_name: audiobookshelf
    volumes:
      - ./config:/config  # 持久化配置文件
      - ./library:/library # 持久化音频文件
      - ./metadata:/metadata # 持久化元数据
    ports:
      - "80:80"  # 将容器的 80 端口映射到主机的 80 端口(可以修改)
      - "13378:13378" # 用于转换音频的端口
    environment:
      - AUDIOBOOKSHELFD_UID=1000 # (可选) 指定用户 ID,解决权限问题 (通常为你的用户ID)
      - AUDIOBOOKSHELFD_GID=1000 # (可选) 指定组 ID,解决权限问题 (通常为你的组ID)
    restart: unless-stopped # 容器意外停止时自动重启
    networks:
      - audiobookshelf-network

networks:
  audiobookshelf-network:
    driver: bridge

配置解释

  • version: "3.8":指定 Docker Compose 文件的版本。
  • services:定义服务。
  • audiobookshelf:定义 Audiobookshelf 服务。
  • image: advplyr/audiobookshelf:latest:指定使用的 Docker 镜像。advplyr/audiobookshelf 是官方镜像,:latest 表示使用最新版本。建议使用特定版本,避免自动更新导致的问题。
  • container_name: audiobookshelf:给容器指定名称。
  • volumes:将主机上的目录挂载到容器中,实现数据的持久化。
    • ./config:/config:将主机上 audiobookshelf/config 目录挂载到容器的 /config 目录,用于存储 Audiobookshelf 的配置文件。
    • ./library:/library:将主机上 audiobookshelf/library 目录挂载到容器的 /library 目录,用于存储音频文件。
    • ./metadata:/metadata:将主机上 audiobookshelf/metadata 目录挂载到容器的 /metadata 目录,用于存储元数据。
  • ports:将容器的端口映射到主机的端口,以便从主机访问 Audiobookshelf。
    • "80:80":将容器的 80 端口映射到主机的 80 端口。这意味着你可以通过 http://你的服务器IP 访问 Audiobookshelf。如果 80 端口被占用,可以将其修改为其他未使用的端口,例如 8080:80。
    • "13378:13378":用于转换音频的端口。
  • environment:设置环境变量。
    • AUDIOBOOKSHELFD_UID=1000 和 AUDIOBOOKSHELFD_GID=1000:可选。如果遇到权限问题,可以设置这两个环境变量,将其设置为运行 Docker 的用户的 UID 和 GID。可以使用 id 命令查看你的 UID 和 GID。
  • restart: unless-stopped:配置容器的重启策略。unless-stopped 表示除非手动停止容器,否则容器意外停止时会自动重启。
  • 服务中的 networks:将容器连接到名为 audiobookshelf-network 的网络。
  • 顶层的 networks:定义网络。其中 audiobookshelf-network 定义了一个桥接网络,供 Audiobookshelf 容器使用。

3. 启动 Audiobookshelf

在 audiobookshelf 目录下,执行以下命令启动 Audiobookshelf:

docker-compose up -d

-d 参数表示在后台运行容器。

4. 访问与初始化配置

等待一段时间,让容器启动完成。然后在浏览器中输入 http://你的服务器IP(如果你在本地运行,则使用 http://localhost)访问 Audiobookshelf。如果你修改了端口映射,请使用相应的端口号,例如 http://你的服务器IP:8080。

第一次访问 Audiobookshelf 时,需要创建一个管理员用户,并配置媒体库的路径。将 /library 指向你存储音频文件的目录。

5. 注意事项

  • 权限问题:如果遇到权限问题,请确保 Docker 容器中的用户具有访问音频文件目录的权限。可以尝试设置 AUDIOBOOKSHELFD_UID 和 AUDIOBOOKSHELFD_GID 环境变量。
  • 端口冲突:如果 80 端口被占用,请修改 docker-compose.yml 文件中的端口映射。
  • 镜像版本:建议使用特定版本的 Audiobookshelf 镜像,避免自动更新导致的问题。例如:image: advplyr/audiobookshelf:2.2.0。
  • 数据备份:定期备份 config、library 和 metadata 目录,以防止数据丢失。
  • 高级配置:Audiobookshelf 提供了许多高级配置选项,例如反向代理、SSL 等,可以参考官方文档进行配置。
— 感谢阅读 —

一起交流

分享你的思考,让讨论更进一步。