Plugin列表

Community Applications

主界面 - APPS

使用Unraid必备,应该不会有人不安装这个

Community Applications

Dynamix Cache Directories

SETTINGS - User Utilities - Folder Caching

使用Cache盘缓存文件系统结构到内存中,减少用户每次访问目录都要调用硬盘阵列读写以及不必要的访问导致硬盘解除休眠启动的情况。

Dynamix Cache Directories

Dynamix File Integrity

SETTINGS - User Utilities - File Integrity

实时为硬盘阵列生成文件hash信息。用于防止硬盘静态数据错误,也就是数据长时间不用的情况下由于各种原因已经损坏而管理员或用户无法发现的问题。

Dynamix File Integrity

第一行设置Header menu的话,GUI会在主界面 - INTEGRITY;Tools menu则在TOOLS里

Dynamix SSD TRIM

SETTINGS - User Preferences - Scheduler

创建cronjob执行SSD Trim,一般是为Cache盘使用

Dynamix SSD TRIM

Dynamix System Information

TOOLS - System Information - System profiler

显示主机以及系统所有信息

Dynamix System Information

Dynamix System Statistics

主界面 - STATS

显示系统CPU、硬盘I/O、网络带宽状态

Dynamix System Statistics-1

Dynamix System Statistics

Dynamix WireGuard

SETTINGS - Network Services - VPN Manager

VPN隧道功能,家庭宽带有公网IP情况下可以通过DDNS+域名解析设置实现外网接入Unraid,不想暴露内网设备到公网时比较方便,特别是想通过SMB访问共享的时候。

Dynamix WireGuard

Nvidia Driver

SETTINGS - User Utilities - Nvidia Driver

Docker容器使用Nvidia显卡必备,可以搭配GPU Statistics实现显卡资源监控

成功识别调用显卡后,nVidia Info会显示对应的驱动版本、GPU PCI-E ID (01:00.0) 、系统内GPU ID (GPU-xxx-xxx-xxx-xxx-xxx),右侧可以选择驱动版本下载更新

一样的国内网络问题,驱动包下载比较困难,建议配置代理后点击左下方手工DOWNLOAD并重启生效Nvidia Driver

GPU Statistics

DASHBOARD - GPU

SETTINGS - User Utilities - GPU Statistics

显示GPU实时信息,温度、内存占用、显存频率、编解码负载、风扇情况等。

GPU Statistics

Recycle Bin

SETTINGS - User Utilities - Recycle Bin

给SMB共享提供回收站功能,支持过期文件定期清理。在SMB访问过程中如果有文件被删除,会在对应的Shares根目录下生成".Recycle.Bin"并根据设置规则存放。配置Recycle Bin parameters可以为删除文件重命名,我只放了%P,也就是只保留完整路径。

删除/mnt/user/Zakikun/test1.txt的时候,文件相当于被移动到/mnt/user/Zakikun/.Recycle.Bin/mnt/user/Zakikun/test1.txt,默认7天后自动清理删除。

Recycle Bin

Unassigned Devices & Unassigned Devices Plus

MAIN - Unassigned Devices

这两个插件通常一起安装,前者可以挂载非硬盘阵列的硬盘以及远程连接挂载SMB、NFS网络磁盘,后者增加NTFS、HFS+、exFAT、apfs等文件系统挂载支持,从其他设备上拆硬盘下来接入Unraid转移数据的时候非常有用。

Unassigned Devices & Unassigned Devices Plus

unBALANCE

SETTINGS - User Utilities - unBALANCE

硬盘阵列文件调整,具体功能没仔细用过 (所以没有截图)

Scatter模式:从一个硬盘里转移文件到其他硬盘里

Gather模式:把某个Share目录的所有数据转移到同一个硬盘内

官方举例使用场景:

  1. 清空某一个硬盘,方便更改该硬盘文件系统
  2. 转移一部电视剧集的所有文件到某一个硬盘里
  3. 从一个硬盘内,移动特定的文件夹到另一个硬盘
  4. 从一个硬盘内,拆分你的电影、电视剧集、游戏文件夹到其他硬盘
User Scripts

SETTINGS - User Utilities - User Scripts

自定义脚本运行,支持Cron。想定期重复执行一些半自动化或者自动化的脚本时非常有用,基本必装。

  1. 定期启动acme.sh容器,通过DNS验证方式更新通配域名SSL证书
  2. 定期重新加载nginx,让更新后的证书生效
  3. 定期执行Seafile-gc命令清理Seafile网盘容器内不需要的文件数据块

User Scripts

CA Config Editor

TOOLS - Unraid OS - Config File Editor

提供修改系统配置文件的Web界面。一般Flash盘 (启动U盘)是不推荐通过SMB共享挂载出去,但平时想修改配置文件的时候通过管理界面的Terminal再用nano修改也不方便,这时候就可以用这个工具。

CA Config Editor

Fix Common Problems

SETTINGS - User Utilities - Fix Common Problems

这个可装可不装,属于官方推荐的Unraid错误设置检查工具。比如会提示用户插件、Docker检查更新功能未启用,appdata文件夹没有设置Cache-only (数据只存放在Cache盘里)等等

Fix Common Problems

Unraid自身Web管理界面访问外部网络困难

由于国内的网络特殊性以及Unraid基本采用外网托管资源的缘故,没有代理的情况下会出现访问困难的问题。Unraid在启动时会根据启动U盘里的/boot/config/go文件启动emhttp (也就是后台Web管理界面),而emhttp是支持http_proxy和https_proxy参数输入的,所以可以指定代理地址从而让整个后台Web管理的http访问走代理。

原文件内容为:

#!/bin/bash
# Start the Management Utility
/usr/local/sbin/emhttp &

改为:

#!/bin/bash
# Start the Management Utility
# 我的Unraid主机跑了虚拟旁路由并开启透明代理,内网地址以及代理端口为192.168.9.2:7893
http_proxy=http://192.168.9.2:7893 https_proxy=http://192.168.9.2:7893 /usr/local/sbin/emhttp &

!!需要重新启动Unraid主机才能生效

社区插件 (Community Applications) 访问困难

Unraid自身Web管理界面访问外部网络困难,官方论坛解释可以单独为CA配置代理。实际使用中Web配置代理后,CA也就不需要进行代理设置。

新建/config/plugins/community.applications/proxy.cfg

port=7893
tunnel=1
proxy=http://192.168.9.2

!!需要重新启动Unraid主机才能生效

Docker 镜像设置

还是国内网络缘故,通过设置registry-mirrors可以加速docker pull,新建并修改/etc/docker/daemon.json

{ 
        "registry-mirrors": ["https://registry.docker-cn.com"] 
    }

Unraid启动时会清空Docker镜像地址设置,新建修改并不方便,通过/boot/config/go编辑就可以实现开机生成写入

mkdir -p /etc/docker 
tee /etc/docker/daemon.json <<-'EOF' 
    { 
        "registry-mirrors": ["https://registry.docker-cn.com"]
    } 
EOF

需要注意的是,通过go文件自动创建写入会跟Nvidia Driver的开机启动冲突,原因和解决方案在下一个坑会提到。

Nvidia Driver与Docker功能启动参数的注意事项

因为Nvidia Driver本身会下载一个打包好的Package (里面包含驱动以及各类配置文件),在Unraid系统启动引导时会自动解压并加载嵌入到系统里 (执行优先级高于/boot/config/go),会直接覆盖掉/etc/docker/daemon.json (内容如下)

{
    "runtimes": {
        "nvidia": {
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}

所以需要额外修改/boot/config/go让二者兼容

#!/bin/bash
# Start the Management Utility
# 添加下面这一行,查找第一个"{",并在其后另起一行插入内容
sed -i '0,/{/a\    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],' /etc/docker/daemon.json
http_proxy=http://192.168.9.2:7893 https_proxy=http://192.168.9.2:7893 /usr/local/sbin/emhttp &

最终daemon.json会变成这样

{
    "registry-mirrors": ["https://registry.docker-cn.com"],
    "runtimes": {
        "nvidia": {
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}
Docker容器可以通过参数输入实现代理访问外部网络

和Unraid自身的emhttp一样,docker容器一般可以设置http代理

Docker容器入参代理

Unraid的Web管理界面通过Nginx反向代理后信息刷新问题

Unraid Web管理界面刷新

在Nginx反代Unraid的Web管理页面的时候,发现CPU占用率等信息不会实时更新显示,这个解决起来比较简单,在反向代理里设置2个Header就行

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
Docker容器运行Left4Dead2游戏服务端

gameservers@ich777

官方社区的@ich777维护了一大批SteamCMD相关的游戏服务端部署镜像,我自己也定制了自己的求生之路2插件调参服务端。这里面有一个大坑,游戏服务端存放路径必须是单一物理硬盘,不然会因为Unraid自动将新文件均衡分散写入不同物理硬盘的特性导致运行失败。

解决方法:指定存放到同一个物理硬盘里,并保证对应Share的Use cache pool为No或者Only,Included disk设置为对应的物理硬盘 。

Unraid中Array Devices连接到不同的路径 (/mnt/disk1 disk2 disk3等),比如我的L4D2服务器就是指定容器存放在第二个物理硬盘 (/mnt/disk2)

游戏服务端-容器设置

游戏服务端-Share设置

最后修改:2022 年 10 月 24 日
个人分享,随意打赏