banner
约 3,300 字
11 分钟

MDC-NG 部署教程:把媒体库交给 Rust 刮削工具

MDC-NG 部署教程:把媒体库交给 Rust 刮削工具

摘要

MDC-NG 是 Rust + Next.js 的媒体刮削工具,30+ 刮削源、5 种整理模式与 AI 海报裁剪。含 Docker Compose 部署、五种整理模式怎么选、首次配置清单与排错表。

MDC-NG 部署教程:把媒体库交给 Rust 刮削工具

媒体库最让人头疼的从来不是「下载」,而是整理。文件下完堆在硬盘里,名字乱七八糟、海报缺失、演员信息空白,播放器里翻半天找不到想看的。MDC-NG 干的正是这活儿:识别番号、多源抓元数据、下载并处理图片、整理文件、生成 NFO——一条流水线走完。

它的选择很特别:后端用 Rust,前端用 Next.js,数据库用 SQLite。 这个组合直接决定了它的性格——镜像小于 300MB、内存占用小于 300MB、版本更新包只有约 60MB。对一台常年开着的 NAS 或小主机来说,这组数字比任何功能列表都有说服力。

MDC-NG 设置页:左侧导航与「整理」标签下的目录、整理模式、过滤规则配置
MDC-NG 设置页:左侧导航与「整理」标签下的目录、整理模式、过滤规则配置

一、技术栈与资源占用

部分

选型

带来的好处

后端

Rust

原生性能、内存安全、无 GC 停顿,可长时间稳定运行

前端

Next.js

响应式界面,支持移动端

数据库

SQLite

嵌入式、零配置,不用额外跑一个数据库容器

资源表现(官方给出的数字):

  • 镜像体积 <300MB

  • 内存占用 <300MB

  • 版本更新约 60MB

「零配置数据库」这点值得单独说。 很多同类工具要你起一个 Postgres 或 MySQL,多一个容器、多一份备份负担、多一个会挂掉的东西。SQLite 把这个环节整个删掉了——数据就在 /config 卷里,备份就是备份那个目录。

二、核心能力一览

智能刮削:支持 30+ 刮削源,可配置优先级、带防反爬与自动重试。

五种整理模式:硬链接、复制、移动、软链接、原地整理。

目录监控:自动检测新文件并刮削,有「性能」和「兼容」两种模式。

演员管理:联动 Emby 自动刮削演员信息与图片,数据源覆盖维基百科、minnano-av、graphis、gfriends,支持后台自动刮削新入库演员与批量管理。

图片增强:AI 人脸识别裁剪海报、从日亚(Amazon Japan)搜索下载高清海报;支持 4K/8K 与影片类型水印标签,位置和样式可自定义。

智能翻译:集成 OpenAI / Google 等多引擎翻译,内置中文标题数据库。

手动整理:可视化文件管理,支持文件扫描、批量操作与任务管理。

任务与记录:任务持久化、批量重试/停止/删除、刮削详情页(画廊展示 + 元数据分析 + 实时日志推送)、多来源数据手动精选修正。

从界面上也能看出功能分区:左侧是主界面 / 手动任务 / 刮削记录 / 演员管理 / 文件管理 / 数据源 / 设置;设置页里横向排开 整理 / 监控 / 下载 / 命名 / 水印 / 网络 / 元数据 / NFO / 演员 / 系统 十个标签。装完之后先花五分钟把「设置」这排标签点一遍,你对它的能力边界就有概念了。

三、部署:Docker Compose

官方仓库只给了 compose 一种方式,这也够用了。新建 docker-compose.yml

YAML
---
version: "2.1"
services:
  mdc:
    image: mdcng/mdc:latest
    container_name: mdc
    environment:
      - PGID=1000  # 可选,设置组ID
      - PUID=1000  # 可选,设置用户ID
      - MDC_USERNAME=admin  # 用户名密码可选,配置后开启登录鉴权模块
      - MDC_PASSWORD=admin
    volumes:
      - /path/to/data:/config   # 配置目录,必须
      - /path/to/media:/media   # 媒体库,可映射多个
    ports:
      - 9208:9208
    restart: unless-stopped

启动:

bash
docker compose up -d
docker compose logs -f mdc

然后访问 http://你的机器IP:9208

镜像版本可以去 Docker Hub 页面查看;最新 release 是 v1.36.0(2026-03-28),更新动态看 Telegram 频道

三处容易配错的地方

/config 是必须映射的。 官方注释写得很直白:配置目录必须映射。这里面装着 SQLite 数据库、你所有的设置和任务记录。不映射 = 容器一重建,全部归零。

/media 可以映射多个。 有多个硬盘或目录就直接加多行,不用堆到一个路径下。

PUID / PGID 要和你宿主机上媒体文件的属主一致。 这是最容易出问题的一项——uid 不匹配,写进去的文件属于别人,硬链接也可能因为跨用户权限失败。先在宿主机上 id 看一眼自己的 uid/gid(多数 NAS 系统是 1000),填进去。

四、首次配置:目录怎么填

进入「设置 → 整理」,有三个字段决定它的工作方式:

字段

是否必填

说明

整理目录

必填

刮削整理结果的存放目录

元数据目录

可选

视频以外的文件整理到另外一个目录

文件大小过滤(MB)

有默认值(100)

小于此大小的文件将被忽略,同时影响目录监控和文件搜索

文件类型白名单

有默认值

默认 mp4 avi rmvb wmv mov mkv

「文件大小过滤」是最容易被忽略、又最影响体验的一项。 默认 100MB——如果你库里有较短的视频、或者只想整理某些小文件,它会被静默跳过,你会以为是工具没识别出来。排查「为什么这个文件没被处理」时,第一件事就是看这个值。

五、五种整理模式:到底该选哪个

这是新手最容易选错的一步,而这五种模式的差别其实可以用一句话概括——区别在于「源文件动没动」和「新版文件占不占额外空间」

模式

源文件

占用额外空间

适用场景

硬链接

不动

不占

本地存储,推荐

复制

不动

跨盘、网盘场景

移动

移走

不占额外(原位置没了)

确定要挪窝时

软链接

不动

几乎不占

播放器能顺着链接寻址到源文件时

原地整理

不动

不占

已经整理过的库,只在原目录生成元数据

几个关键细节,官方文档里写得很清楚:

硬链接「不占额外空间」,但有一个硬性前提——必须在同一文件系统内,不支持跨盘。 这也是它最常失败的原因:整理目录和媒体库不在同一个盘,硬链接就建不起来。想用硬链接,先把两个目录放在同一个文件系统下。

软链接只是生成一个链接文件,使用时需要播放器能根据链接地址寻址到源文件。 换句话说,能不能用得看你的播放器。

原地整理保持原样、不对源文件操作,只在原文件夹内生成整理结果,适合已经整理过的媒体库。 官方还特别标注了一句容易踩的:这种模式下「目标目录」配置不起作用。

用硬链接时,页面上还有两个开关值得注意:

  • 覆盖目标目录视频和字幕 —— 开启后,整理时会覆盖目标目录中已存在的视频和字幕文件

  • 覆盖目标目录图片 —— 开启后,整理时会覆盖目标目录中已存在的图片

这两个开关要慎重。 已经手动校正好海报的情况,被自动刮削覆盖掉会很心疼。建议第一次先都别开,跑一段时间确认刮削质量可靠之后再考虑。

六、目录监控:性能模式与兼容模式

配好目录之后,可以让它自己盯着:

  • 性能模式:实时监听文件变更,适合本地存储

  • 兼容模式:定时检查更新,适配网盘挂载

为什么要分两种?因为实时监听依赖文件系统事件(inotify 之类),而网盘挂载通常不提供这些事件——用性能模式挂在网盘上,你会发现它「看不见」新文件。网盘场景请务必用兼容模式。

另外支持配置覆盖、文件过滤、自动清理等增强项。

七、演员刮削

联动 Emby 服务端后,可以自动刮削演员信息和图片,数据源覆盖维基百科、minnano-av、graphis、gfriends。支持后台对新入库演员自动刮削,也能批量管理。

如果你已经在用 Emby 管媒体库,这项几乎不用额外配置就能吃到红利——Emby 那边有了条目,MDC-NG 这边就能把演员信息补齐。不用 Emby 的话,也不是不能用,只是少了这条联动链路。

八、图片处理:三项实用能力

AI 裁剪:用人脸识别定位并裁剪海报。自动裁剪最容易出现的问题就是「把人头裁掉」,靠人脸识别来定构图,比纯几何中心裁切靠谱得多。

日亚高清:从 Amazon 日本搜索下载高清海报。作为封面图源,清晰度通常比随手抓的那张好。

水印:支持 4K/8K 分辨率影片类型标签,样式和位置可自定义。

另外还有一个独立的海报裁剪工具,需要精细调整时用它单点处理,不必整批重跑。

九、智能翻译

集成 OpenAI / Google 等多引擎翻译,并内置中文标题数据库。

这里的设计取舍值得理解一下:内置中文标题库是为了「不用联网、不用花 API 额度也能出中文标题」,而多引擎翻译是给库里那些没收录的条目兜底。 所以日常大部分条目走本地库,只有长尾才可能触发翻译引擎。

十、登录鉴权:建议一定开

compose 里的 MDC_USERNAME / MDC_PASSWORD可选项——但这里的「可选」只是说技术上不填也能跑。

它决定的是:填了才开启登录鉴权模块。 而这个服务大概率跑在你的内网里、管着你的媒体库、还能读写你挂载进来的目录。如果这台机器上有别的服务可以被利用、或者你的内网里有人(合租、宿舍、公司网络),不设密码的后果不是「别人能看到你的片子」,而是「别人能通过它操作你的文件」。

所以:给这个服务设上账号密码,和给路由器设密码是同一类事,别省这一步。 而且不要用示例里的 admin / admin

十一、升级与备份

升级

bash
docker compose pull
docker compose up -d

由于镜像是 latest 标签,重启容器不会自动拉新镜像,必须手动 docker compose pull

备份:核心就是那个 /config 目录。

bash
tar -czf mdc-config-$(date +%F).tar.gz /path/to/data

因为它装着 SQLite 数据库和全部配置,备好这一个目录,重装就是「恢复配置 + 映射同一个媒体库」,几分钟回到原样。建议在批量整理之前手动备份一次——下面的排错清单里会看到为什么。

十二、排错清单

现象

原因与处理

容器起来了,但页面打不开

检查端口映射是否被占用;docker compose logs -f mdc 看启动报错

某个文件怎么都不处理

先看「文件大小过滤(MB)」(默认 100),再看文件扩展名是否在白名单里,最后看目录监控模式选对没有

硬链接模式报错/建不起来

整理目录与媒体库不在同一文件系统。硬链接不支持跨盘,把两者放到同一个盘

网盘挂载里的新文件识别不到

监控模式选了「性能模式」。网盘用兼容模式

写入的文件属主不对

PUID / PGID 与宿主机不一致。用 id 查出真实 uid/gid 后改配置

整理结果里「目标目录」没生效

用了原地整理模式——该模式下目标目录配置不起作用

海报被换成不想要的那张

检查是否开了「覆盖目标目录图片」;关掉后手动修正

改了配置后行为没变

确认已保存;升级时先 docker compose pullup -dlatest 重启不会拉新镜像

十三、写在最后

整理媒体库这件事有个反直觉的地方:它的终点不是「刮得很满」,而是「找得到、封面对、信息可信」。 刮削工具的能力越强,自动覆盖和自动改名的风险也越大——它一次批量操作就可能覆盖掉你手动校正过的几十张海报。

所以推荐的节奏是:先用硬链接 + 原地整理在小范围试跑一批,确认刮削质量稳定、命名符合你的习惯,再放开监控和自动清理;批量操作前先备份 /config让工具干重复的活,人只做校对——这才是省时间的方式,反过来就是花更多时间收拾。

如果你同时还在用 Emby 或 Jellyfin 管库,把演员刮削和图片处理接上,收益最直接;如果只是想在硬盘里把文件名理顺、把 NFO 生成好,那核心配置就是三个:整理目录、整理模式、文件大小过滤

END