部署与维护 · Navigation

部署与常见问题

包含 PostgreSQL / SQLite docker-compose 步骤、FeiNiu NAS 说明,以及升级重置与常见错误排查。

返回首页

主要功能

  • 高音质播放:支持 DTS/DSD/APE/WMA 等高码率,自动转码边播边转。
  • 媒体库管理:音乐、视频、有声书统一目录,自动封面缩略图生成。
  • 多端访问:提供前端 Web 与移动端下载入口,适配个人与私有部署。
  • 插件扩展:支持自定义插件目录与元数据服务,灵活拓展能力。
  • 支持格式:MP3/AAC/M4A/ALAC/OGG/Vorbis/Opus/FLAC/WAV/AIFF/APE/WMA/DSD DSF/DFF/DST/DTS

演示内容

最近更新

  • 0.2.6:请使用新版docker compose 兼容旧版数据
  • 播放问题:有声书在箭头音乐不能播放。
  • 核心:升级核心解码
  • 修复:修复无损音乐有时不能播放。
  • 修复:修复部分格式乱码。
  • 更新:更新部分UI界面。
  • 更新:更新刮削逻辑,必须输入key,启用服务,手动点补齐。
  • 更新:更新创建歌单文件逻辑。
  • 新增:目录选取绑定类别。
  • 新增:新增排序方式。
  • 新增:新增分页方式开关。
  • 新增:新增多数据库部署(需自行部署对应类型数据库)。

PostgreSQL 版部署


services:
  postgres:
    image: postgres:16-alpine
    container_name: daoliyu-postgres
    restart: unless-stopped
    environment:
      # 管理员账号(维护使用)
      POSTGRES_DB: "daoliyu"
      POSTGRES_USER: "daoliyu"
      POSTGRES_PASSWORD: "daoliyupassword"
      # 可选应用账号(低权限)。不使用可忽略,系统仍可用管理员账号连接。
      POSTGRES_APP_DB: "daoliyu"
      POSTGRES_APP_USER: "daoliyu_app"
      POSTGRES_APP_PASSWORD: "ChangeMe_UseStrongPassword"
      POSTGRES_PORT: "5433"
      PGDATA: "/var/lib/postgresql/data/pgdata"
    command:
      - "postgres"
      - "-c"
      - "port=5433"
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U \"$${POSTGRES_USER}\" -d \"$${POSTGRES_DB}\" -p \"$${POSTGRES_PORT}\""]
      interval: 10s
      timeout: 5s
      retries: 10
      start_period: 30s
    # 如需外部连接请再打开
    ports:
      - "5433:5433"
    volumes:
      - ./docker-data/postgres:/var/lib/postgresql/data
      - ./docker-data/postgres/initdb:/docker-entrypoint-initdb.d:ro

  backend:
    image: "${APP_IMAGE:-msmkls/daoliyu-music:latest}"
    container_name: daoliyu-music-pg
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      NODE_ENV: production
      DB_PROVIDER: "pg"
      # 默认走管理员账号,保证即使未创建 POSTGRES_APP_* 也可直接启动。
      # 如需改走低权限账号,可覆盖 POSTGRES_DATABASE_URL。
      POSTGRES_DATABASE_URL: "postgresql://daoliyu:daoliyupassword@postgres:5433/daoliyu?schema=public&connection_limit=25&pool_timeout=10"
      BOOTSTRAP_DB_RUNTIME_ENV: "/app/backend-data/runtime-db.pg.env"
      BOOTSTRAP_DB_STRICT_PROVIDER_MATCH: "true"
      LOG_LEVEL: "${LOG_LEVEL:-info}"
      DEBUG: "${DEBUG:-true}"
    ports:
      - "5173:4000"
    volumes:
      - ./backend-storage:/app/storage
      - ./backend-data:/app/backend-data
      - ./media:/data/media
      - ./audiobooks:/data/audiobooks
      - ./music-videos:/data/music-videos
      - ./playlists:/data/playlists
      - ./plugins:/plugins
    networks:
      default:
        aliases:
          - backend
    healthcheck:
      test: ["CMD", "wget", "-qO-", "http://localhost:4000/health"]
      interval: 30s
      timeout: 5s
      retries: 5

  • 确保 5433 端口未被占用;如冲突可在 compose 中修改对外映射。
  • 首启后等待后端健康检查通过,再访问前端(默认 5173)。

SQLite 轻量版部署


services:
  backend:
    image: "${APP_IMAGE:-msmkls/daoliyu-music:latest}"
    container_name: daoliyu-music
    restart: unless-stopped
    environment:
      NODE_ENV: production
      # 单 compose 通用模式:
      # - 首次启动默认 SQLite
      DB_PROVIDER: "auto"
      BOOTSTRAP_DB_STRICT_PROVIDER_MATCH: "true"
      LOG_LEVEL: "${LOG_LEVEL:-info}"
      DEBUG: "${DEBUG:-true}"
    ports:
      - "5173:4000"
    volumes:
      - ./backend-storage:/app/storage # 元信息
      - ./backend-data:/app/backend-data # 数据
      - ./media:/data/media # 音乐库
      - ./audiobooks:/data/audiobooks # 有声书
      - ./music-videos:/data/music-videos # 音乐视频
      - ./playlists:/data/playlists # 歌单
      - ./plugins:/plugins # 备用
    networks:
      default:
        aliases:
          - backend
    healthcheck:
      test: ["CMD", "wget", "-qO-", "http://localhost:4000/health"]
      interval: 30s
      timeout: 5s
      retries: 5

  • 轻量模式,无需独立数据库服务。
  • 若看到 PRISMA_SCHEMA 警告,可忽略;已在 compose 默认指向 sqlite schema。

SQLite ARM 版部署


services:
  backend:
    image: "${APP_IMAGE:-msmkls/daoliyu-music:latest}"
    platform: "linux/arm64"
    container_name: daoliyu-music-arm
    restart: unless-stopped
    depends_on: {}
    environment:
      NODE_ENV: production
      DB_PROVIDER: "sqlite"
      PRISMA_SCHEMA: "${PRISMA_SCHEMA-prisma/schema.sqlite.prisma}"
      BOOTSTRAP_DB_RUNTIME_ENV: "/app/backend-data/runtime-db.sqlite.env"
      BOOTSTRAP_DB_STRICT_PROVIDER_MATCH: "true"
      LOG_LEVEL: "${LOG_LEVEL:-info}"
      DEBUG: "${DEBUG:-true}"
    ports:
      - "5173:4000"
    volumes:
      - ./backend-storage:/app/storage
      - ./backend-data:/app/backend-data
      - ./media:/data/media
      - ./audiobooks:/data/audiobooks
      - ./music-videos:/data/music-videos
      - ./playlists:/data/playlists
      - ./plugins:/plugins
    networks:
      default:
        aliases:
          - backend
    healthcheck:
      test: ["CMD", "wget", "-qO-", "http://localhost:4000/health"]
      interval: 30s
      timeout: 5s
      retries: 5

  • 已指定 platform: linux/arm64,适配树莓派、arm64 NAS 等设备;若镜像多架构可直接使用。
  • 保持卷与端口与 x86 配置一致,可与上方轻量版互换使用。

在飞牛 NAS 部署

飞牛 FPK 安装

在应用商店搜索 “道理鱼音乐” 按照向导安装即可。对应的数据目录在「文件管理 - 应用文件 - daoliyu-msuic」下,将音乐文件放入即可。 若需卸载重装,卸载后直接删除该目录全部内容,再重新安装即可。 若通过网盘下载 FPK 安装包,根据飞牛官方设定不允许覆盖商店版本,需先卸载官方应用再手动安装,数据不会丢失(只要不删除「文件管理 - 应用文件 - daoliyu-msuic」)。

『来自123云盘用户的分享』道理鱼音乐应用版
链接:https://www.123865.com/s/8sh9-0aXsh?pwd=azjo
提取码:azjo

升级 / 重置指引

  • FPK 升级方式 1:商店版本按商店提示更新即可。
  • FPK 升级方式 2:直接下载最新 FPK 手动安装即可。
  • Docker compose:默认仅需修改前后端镜像版本号(如 0.1.9 → 0.2.0)并重新拉起,无需额外改动。

常见问题排查

目录映射
  - ./backend-storage:/app/storage
  - ./backend-data:/app/backend-data
  - ./media:/data/media                  # 音乐目录
  - ./media1:/data/media1                # 自定义音乐目录(映射到 /data/ 下,记得对应类型)
  - ./audiobooks:/data/audiobooks        # 有声书
  - ./audiobooks1:/data/audiobooks1      # 自定义有声书(映射到 /data/ 下,记得对应类型)
  - ./music-videos:/data/music-videos    # 音乐视频
  - ./playlists:/data/playlists          # 歌单目录
  - ./plugins:/plugins