跳转至

Unraid 文件管理简易指南

预计阅读时长 : 17 分钟

文件管理,永远是 NAS 最基础、最重要的功能。

管理的终极目标,就是管理者能对自己的文件进行方便、全面和自动化的管理。这需要结合公有云和私有云的优势,并搭配使用多种工具来实现。

整体框架

flowchart TB
    cloud[公有云网络存储] --> onedrive[Onedrive]
    cloud --> icloud[iCloud]
    cloud --> xunlei[迅雷网盘]
    cloud --> baidu[百度网盘]

    onedrive --> onedrive_sync[双向同步] --> onedrive_docker[Onedrive Docker]
    icloud --> icloud_sync[单向同步] --> icloudpd[iCloudpd]
    xunlei --> xunlei_sync[单向同步] --> xunlei_docker[迅雷 Docker]
    baidu --> baidu_sync[单向同步] --> baiduvnc[百度网盘 VNC]

    nas[Unraid NAS 存储] --> filebrowser[File Browser Enhanced]
    filebrowser --> photo[PhotoPrism]
    filebrowser --> emby[Emby Server]
    filebrowser --> calibre[CalibreWeb]

    photo --> photo_sync[照片]
    emby --> emby_sync[影音]
    calibre --> calibre_sync[书籍]

    nas --> internalservice[内部服务]
    internalservice --> onedrive_index[Onedrive-\nvercel-index]
    internalservice --> webdav[WebDav]
    webdav --> frp[Frp]
    frp --> frp_sync[内网穿透]

资源管理器

Filebrowser 属于 Unraid 的必装工具,有了个这个基于浏览器的资源管理器之后,文件管理的效率提升了不止一个量级。

目前,这个工具有官方版本 ⧉荒野无灯修改版 ⧉两个版本。虽然后者更新频率和版本号比前者要落后一些,但是就基础功能而言依然更好用,因此还是推荐按照这个教程进行安装后者使用 → Unraid 下安装荒野无灯的 Filebrowser ⧉

当然,更加简单的方法还是使用 Docker-Compose,安装和管理起来便捷程度高了不止一点点。

version: "3"
services:
  firebrowser:
    image: 80x86/filebrowser:2.10.3-amd64
    container_name: firebrowser
    network_mode: bridge
    environment:
      - PUID=1000
      - PGID=100
      - UMASK_SET=000
      - WEB_PORT=8082
      - TZ=Asia/Shanghai
    volumes:
      - /mnt/user/appdata/filebrowser:/config
      - /mnt/user/Download:/myfiles/Download
      - /mnt/user/Backup:/myfiles/Backup
      - /mnt/user/Share:/myfiles/Share
      - /mnt/user/Video:/myfiles/Video
      - /mnt/disks/MEDIA:/myfiles/Media
    ports:
      - 8082:8082
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
    restart: unless-stopped

对于我这样的强迫症患者,自然是不会满足于使用原生效果的。因此,在他人自定义暗黑模式主题样式 ⧉的基础上,又微调了文件夹和图标文件的大小和颜色,整体上看起来更加的美观。

自定义样式
/** 页面元素屏蔽关键词 */

#listing .item[aria-label="$RECYCLE.BIN"] {
    display: none;
}

#listing .item[aria-label="System Volume Information"] {
    display: none;
}

#listing .item[aria-label=".DS_Store"] {
    display: none;
}

/** 加载动画 */
.spinner > div {
  background-color: #F2F2F2;
}

/** 普通文字、字体图标颜色 */
a, .action, #listing h2, #search .boxes h3, .card h3, .collapsible > label *, .dashboard p label, .message, #search.active i, #search.active input, table th, #search input, #search result, .input, #listing.list .item.header, .ace-chrome .ace_gutter, .share__box__download, legend, #breadcrumbs {
  color: #D2D2D2 !important;
}

/** 调整输入框字体颜色,适配暗黑模式 **/
.items .item-text {
  color: black;
}

/** 主体、弹窗颜色 */
#loading, #login, #search.active #input, body, header, .card, #search .boxes, .ace-chrome .ace_gutter-active-line {
  background-color: #3B3B3B;
  color: #F2F2F2;
}

/** 搜索页面、列表标题样式 */
#search #input, #search #result, .input, #listing.list .item.header, .ace-chrome .ace_gutter, .share__box__download {
  background-color: #303030;
  color: #EEEEEE;
}

/** 列表项目、文本编辑、命令行、文件分享样式 */
#listing .item, .ace-chrome, .shell, .share__box {
  background-color: #333333;
  color: #F0F0F0;
}

/* 调整文件夹图标颜色和大小 */
#listing .item[data-dir=true] div svg {
    color: #ffc84b !important;
}

#listing[class=mosaic] .item[data-dir=true] div svg {
    font-size: 4em !important;
}

/** 调整文件图标大小 **/
#listing .item[class~="has-tooltip"] div svg {
    font-size: 3em !important;
}

/** 微调图标与文字间距 **/
#listing.list .item div:first-of-type {
  width: auto !important;
}

#listing.list .name {
  padding-left: 1em !important;
}

#listing.mosaic .item .svg-inline--fa {
    margin-left: 0.5em;
}

/** 微调导航栏样式 **/
nav .action {
  font-size: 1.2em !important;
  padding: 0.6em !important;
}

/** 微调 2FA 文字说明位置 **/
.otp-qrcode p[data-v-5edcb32e] {
    margin-left: auto;
}

文件同步

Onedrive

目前在中国大陆,能够兼顾安全和隐私,速度又还过得去的网盘也只剩下 Onedrive 了,家庭共享账号的 1T 的空间也是绰绰有余了。

通过 Onedrive Docker ⧉,可以实现 Onedrive 的文件双向同步。之后就可以把全量 Onedrive 的文件放在 NAS 进行管理,然后在 PC/Mac 上只用根据需要同步需要的文件即可大大节省了空间。

version: "3.7"
services:
  onedrive:
    image: driveone/onedrive:latest
    container_name: onedrive
    volumes:
      - /mnt/user/appdata/onedrive:/onedrive/conf
      - /mnt/user/Backup/Likai/Onedrive:/onedrive/data
    environment:
      - ONEDRIVE_UID=1000
      - ONEDRIVE_GID=100
    stdin_open: true
    tty: true

与此同时,Onedrive-vercel-index 的管理也变得更加简单了,可以更容易的控制对外分享的文件的管理。

除了可以使用 Onedrive Docker 外,另外一个工具 Rclone ⧉ 提供了更多网盘的支持。考虑到暂时没有进一步的需求,就先留存相应的资料等有必要的时候再折腾了。

iCloudpd

作为尊贵的 2T iCloud 用户,拍起图片和视频来可谓是随心所欲,不过带来的另一个问题就是筛选图片和视频实在是个让人头疼的工作。

使用 iCloudpd ,可以自动把 iCloud 的图片全部下载到本地,并且还能将 HEIC 格式的图片转化为 JPG,以及配合 Handbrake 自动把 MOV 格式的视频转化为 MP4,这样处理之后就方便了许多。

boredazfcuk/icloudpd ⧉ 是目前最完善的 icloudpd 的 Docker 版本,从 Unraid 的应用商店里面可以直接安装配置脚本。为了得到最佳的使用体验,可以参照以下 Docker-Compose 配置详细的参数:

version: "3.8"
services:
  icloudpd:
    image: boredazfcuk/icloudpd
    container_name: icloudpd
    network_mode: bridge
    hostname: Unraid
    environment:
      - apple_id=xiaobuyao@gmail.com
      - authentication_type=2FA
      - icloud_china=True
      - auth_china=True
      - user_id=1000
      - group=users
      - group_id=100
      - force_gid=True
      - download_path=/home/xxxx/iCloud
      - synchronisation_interval=86400
      - directory_permissions=750
      - file_permissions=640
      - folder_structure={:%Y/%m}
      - skip_check=True
      - convert_heic_to_jpeg=True
      - jpeg_quality=100
      - auto_delete=True
      - TZ=Asia/Shanghai
    volumes:
      - /mnt/user/appdata/icloudpd:/config # 配置文件路径
      - /mnt/user/Backup/Likai/Photo/iCloud:/home/xxxx/iCloud # 下载文件路径
    restart: unless-stopped

根据 Apple 最新安全性规范,icloudpd 强制要求使用 2FA 以及 App-Specific Passwords 进行账号授权。因此,在容器安装完成之后,还需要在 Unraid 的终端中执行以下命令进行初始化:

docker exec -it icloudpd sync-icloud.sh --Initialise

最后,作为防呆设计,还需要在文件存储目录中手动创建一个 .mounted 文件,这样下载就能正式开始了。

文件下载

Thunder

NAS 的核心功能之一就是进行下载,作为尊贵的 VIP 用户自然不能错过 NAS 版迅雷。cnk3x/xunlei ⧉ 是 NAS 上专用的迅雷远程下载应用,来自于官方的迅雷群晖套件,实测效果非常不错而且也非常稳定。

version: "3"
services:
  xunlei:
    image: cnk3x/xunlei:latest
    container_name: xunlei
    privileged: true
    network_mode: host
    hostname: Unraid
    environment:
      - XL_WEB_PORT=7800
      - TZ=Asia/Shanghai
    volumes:
      - /mnt/user/appdata/xunlei:/xunlei/data # 配置文件路径
      - /mnt/user/Download:/xunlei/downloads # 下载文件路径
    restart: unless-stopped

需要注意的是,Thunder 不能使用 MacVlan 网络,建议使用 host ,以便提升下载速度。

安装之后,可以使用邀请码 迅雷牛通 启用内测功能。绑定账号后,还可以在线升级到迅雷官方最新版本。

BaiduNetdisk

作为 Google 铁粉,坚持认为百度就是个大毒瘤,不过有些时候也只能被迫用它,比如百度网盘就是墙内分享无法绕过的的平台。

version: "3"
services:
  baidunetdisk:
    image: johngong/baidunetdisk:latest
    container_name: baidunetdisk
    network_mode: bridge
    environment:
      - USER_ID=1000
      - GROUP_ID=100
      - DISPLAY_WIDTH=1080
      - DISPLAY_HEIGHT=1280
      - TZ=Asia/Shanghai
    volumes:
      - /mnt/user/appdata/baidunetdisk:/config # 配置文件路径
      - /mnt/user/Download:/config/baidunetdiskdownload # 下载文件路径
    ports:
      - 6800:5800 # WebUI 端口
      - 6900:5900 # VNC 端口
    restart: always

johngong/baidunetdisk ⧉ 是目前最完善的基于 VNC 的百度网盘工具,反正就凑合着用吧。

媒体管理

Emby

如果说 Filebrowser 是通用型文件的管理利器,那么 Emby 就是影音类文件管理的瑞士军刀。

version: "3"
services:
  emby:
    image: emby/embyserver:latest
    container_name: embyserver
    network_mode: host # Enable DLNA and Wake-on-Lan
    environment:
      - UID=1000
      - GID=100
      - GIDLIST=100,18
      - TZ=Asia/Shanghai
    volumes:
      - /mnt/user/appdata/EmbyServer:/config # 配置文件路径
      - /mnt/disks/MEDIA:/mnt # 媒体文件路径
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
    restart: always

作为尊贵的 VIP 用户,自然是使用官方版的 Emby Docker 镜像 ⧉。安装上也没有什么难度,直接挂载单独的那块 Media 硬盘就好了。

PhotoPrism

通过 icloudPd 下载了手机上拍摄的照片之后,我们还需要一个进一步的管理工具来对图片进行后续的管理。 PhotoPrism ⧉ 是一个基于深度学习的图片管理工具,在自动分类和添加 Tag 上能省不少事。

具体的工具使用框架搭建和使用流程可以参考以下文章:

flowchart TB
    config[配置 icloudpd 下载 iCloud 图片]
    mount[挂载 iCloud 下载图片目录到 WebDAV 服务]
    sync[使用 PhotoPrism 的同步\n功能增量导入新图片]
    manage[PhotoPrism 中统一管理]

    config --> mount
    mount --> sync
    sync --> manage

    %% 页脚信息在 Mermaid 中通常不被支持,但您可以在图下方以注释的形式保留这些信息。
    %% footer
    %% <#lightyellow,#black>|= 日期 |= 变更 |
    %% | 20220920 | 初始化 |
    %% | 20220920 | 修正 Onedrive 方案 |
    %% ==== <:art:>  by @Libukai
    %% end footer

CalibreWeb

文件分享

Onedrive-vercel-index

生产力工具还是要看 Microsoft,买了 Office 365 家庭版之后,每个人能分到 1T 的共享空间,正好用来做一个速度还不错的线上文件分享工具。

作为 Oneindex 的接班人,onedrive-vercel-index ⧉ 不仅在 UI 设计上更加现代化,支持更多的个性化配置,更重要的是不需要自建服务器,以最简单的方案实现了 Onedrive 文件的共享。

这个项目的 帮助文档 ⧉ 也是我见过的最详尽的,一步一步照着做肯定能够搞定。唯一需要注意的点是 Upstash 自动添加的 REDIS_URL 变量的格式有问题,漏掉了了一个 :,需要修正这一点否则有可能导致 504 错误。具体的说明可以参见 FAQ ⧉

WebDAV

Unraid 自带的文件分享协议是 NFS 和 SMB,虽然用于普通的文件共享是绰绰有余了,但这两年来使用 WebDAV 协议做在线配置同步的应用也逐渐多了起来,因此也挺有必要再增加一个 WebDAV 的协议支持。

go_webdav ⧉ 的安装文档非常详细,功能很强大,界面也相当不错,用于日常的同步需求完全足够了。

格式处理

对于 MOV 格式的视频文件,在浏览器上播放始终是个大难题。这种情况下,使用 Handbrake ⧉ 自动进行转化,然后再查看对应的 MP4 文件是个不错的选择。

Unraid 中可以参照以下的配置,确定导出目录、显卡支持和 CJK 文本支持即可完成全自动化的处理流程。

version: "3"
services:
  handbrake:
    image: jlesage/handbrake:latest
    container_name: handbrake
    network_mode: bridge
    environment:
      - UID=1000
      - GID=100
      - ENABLE_CJK_FONT=1 # 添加中文支持
      - DISPLAY_WIDTH=1280
      - DISPLAY_HEIGHT=1240
      - TZ=Asia/Shanghai
    volumes:
      - /mnt/user/appdata/HandBrake:/config:rw # 配置文件路径
      - /mnt/user/Download:/storage:ro # 媒体文件路径
      - /mnt/user/Video/Watch:/watch:rw # 监控文件路径
      - /mnt/user/Video/Output:/output:rw # 输出文件路径
    ports:
      - 5800:5800 # WebUI 端口
      - 5900:5900 # VNC 端口
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128 # 配置转码用显卡
    restart: unless-stopped