跳转至

Unraid 系统简单折腾指南

预计阅读时长 : 17 分钟

系统简介

Unraid 是一个建立在 Linux 基础上的类 NAS 系统,其优势在于操作简单、界面美观。除了重点强化的储存共享功能外,对于 Docker 和虚拟机的支持也非常完备。

在 Unraid OS 作为软件层的基础上,用户可以根据自己的需要任意搭配硬件,进而实现对数据、媒体和应用的终极控制。

关于 Unraid 的介绍和教程,这两年来在网上也涌现出了不少的优质内容。小白可以考虑从以下几篇文章入手开始从零搭建,配合这篇文章加以深度配置。

系统安装

Unraid 的启动盘使用 USB Flash 闪存盘,可以通过官方提供的创建工具 ⧉制作。

更换 U 盘会导致秘钥丢失

注意!一个 USB Flash 闪存盘对应一个注册秘钥,因此不要随意更换以免无法进行正版注册。

系统备份

折腾百般好,崩溃全没了,搞机不备份,亲人两行泪,💣。

为了确保安全,建议常规性地对引导设备进行备份,万一出现了引导系统错误,还可以通过创建工具进行系统恢复。

由于 Docker 的数据都持久化储存在数据盘上,因此只要引导盘中的设置能够完全恢复,Docker 等配置和数据也能完整保留,也不再有后顾之忧。

当然,作为双重保险,还可以使用 CA Backup / Restore Appdata 插件对整个系统进行备份。配合 Onedrive Docker 的同步功能,在网络网盘上再做一次异地备份,这样的安全系数就更高了。

文件共享

Unraid 的核心功能就是用来做储存管理和文件共享,通过 数据盘 + 校验盘 + 缓存盘 的三层机制,可以在数据的安全保障和访问速度上做到两者兼备。

针对有可能出现的系统损坏或者更换硬件的问题,需要记录好各种磁盘设备的对应的标识,然后在切换的时候严格按照对应关系进行系统重建。

核心的共享功能,可以在 共享 菜单中对存储池中新建文件夹,并设置 NFS 和 SMB 共享来实现。如果有配置 WebDAV 共享协议的需求,可以通过 go_webdav ⧉ 这个 Docker 服务进行添加。

配合 Filebrowser, Unraid 的文件管理功能可谓是如虎添翼,只需要使用浏览器就能使用便捷操作。具体的 Filebroswer 的创建和配置见 [[Unraid-文件管理简易指南]],强烈推荐有家庭内网共享需求的朋友采用。

如果有单独挂载数据盘的需求,比如说为 Emby 单独挂载一块影音文件用的硬盘,那么可以使用 Unassigned Devices 插件实现 AUTOMOUNT 自动挂载,然后开启 共享 即可使用 SMB 协议进行管理。而如果希望将这块硬盘直通给 Window 虚拟机使用,则选择 PASSED THROUGH 即可。

SSH 配置

Unraid 的 SSH 配置基础知识,可以参考本站《SSH 秘钥对使用简要说明》。

需要注意的是,SSH 公钥的配置要在 UnRaid 的用户配置界面进行。

Docker 配置

Unraid 对于 Docker 的支持非常优异,事实上大部分的功能都是通过 Docker 方式实现的。作为目前最流行的微服务提供方案, Docker 非常值得初学者好好看看,能够很大程度上减少服务器管理的成本。

在 [[Docker-简单使用指南]] 中总结和整理了 Docker 的相应资料,本文中的内容主要是针对 Unraid 的具体操作进行一下梳理。

Docker Run

虽然 Unraid 中创建 Docker 的配置页面看起来有点让人头大,但在掌握了基本指令对应关系的前提下,操作和管理还是很方便的。

我们先看看最简单的 Docker 命令行语句的说明:

docker run -d \--name musicplayer \-p 264:264 \-v /opt/musicplayer:/var/www/html/cache \oldiy/music-player-docker
  • docker run : 直接创建并运行一个容器
  • -d : 后台运行
  • --name : 容器的名称
  • -p : 宿主和容器之间的端口映射关系
  • -v : 宿主和容器之间的文件路径挂载关系
  • oldiy/music-player-docker : 镜像仓库的地址

接下去看一个更加复杂的 Docker 命令行语句的说明,会涉及一些更加高级的设置选项。

docker run -d \--name=gbittorrent \-e PUID=1000 \-e PGID=1000 \-e TZ=Europe/London \-e WEBUI PORT=8080 \-p 8080:8080 \-p 6881:6881 \-p 6881:6881/udp \-v /path/to/appdata/config:/config \-v /path/to/downloads:/downloads \--restart unless-stopped \lscr.io/linuxserver/qbittorrent:latest

其中,-e 对应的参数需要通过添加 变量 来完成,例如以下是用户账号和权限设定:

  • PUID : 用户账号 ID
  • PGID : 用户分组 ID

这两个参数一般和后面的 -v 参数配合使用,可以保证用户账号对于相应的文件路径有读写的权限(Unraid 上可以默认不填写,会直接使用创建 Docker 时对应账号的权限)。

权限问题

如果设置了权限之后还是发现有部分路径无法操作,可以在 Unraid 的文件管理器中,对相应的路径进行一下所有者和权限的单独设定。

以下是 Unraid 上普通用户@likai 的账号信息:

还有部分参数属于额外的参数,可以统一放到 额外参数 位置。

  • --restart unless-stopped : 重启模式,一旦停止则自动重启
  • --mount source=/src/webapp,target=/usr/share/nginx/html : Volume 挂载,其中文件夹必须提前创建

此外,还有部分的 Docker 由于会涉及直接调用宿主机的资源,需要打开 特权 模式。

  • --privileged : 特权模式,Docker 能以 root 权限操作宿主机

最终的配置页面项的说明如下:

在执行 Docker 的过程中,也有可能遇到各种各样的异常状况,这种情况下可以点开 Docker 的日志,看看报错的信息是什么,可以用来寻找问题解决之道。

认证流程

对于部分的 Docker 服务,比如说 Onedrive 需要在创建的时候走完整个的认证流程,如果通过这个图形界面创建会报错自动关闭或重启。

对于这样的情况,可以先直接用命令行的方式以 docker run 命令完成创建,通过 -v 参数先将相关的配置持久化。然后再删除创建的容器,并用图形化的界面以同样的参数再创建一遍即可,之后就能在图形化界面里面进行管理了。

Docker Compose

随着 Docker 本身的复杂程度越来越高,尤其是涉及到多个 Docker 容器之间的相互依赖,传统的 Dockre Run 命令逐渐的不再能满足需求。在新的需求下,Docker-Compose 应运而生了,使用这种方案只需要通过配置好的 脚本,即可快速完成安装和配置。

推荐使用

考虑到操作的便捷性和后续管理的方便性,强烈建议在 Unraid 上统一使用 Docker Compose 来进行 Docker 的管理。

由于 Unraid 并没有原生的 Docker Compose 功能,因此需要先从应用商店中安装 Dock Compose Manager。

安装完毕之后,在 Docker 管理页面的最下就会增加新的 Compose 功能。

点击 ADD NEW STACK 按钮,可以黏贴 Compose File 的具体内容。

脚本位置

Unraid 中 Docker-Compose 存储目录是 /boot/config/plugins/compose.manager/projects

点击 SAVE CHANGES 之后,继续设置个性化 Docker 的图标和 Web UI 地址。

具体到 Compose File 的内容,特别需要注意的是 volumesnetworks 的部分。建议涉及到数据库的部分,与主 Server 放在同一个 Docker 数据目录下,以保证数据的统一性。

version: "3"
services:
   haka_server:
    container_name: hakatime
    image: mujx/hakatime:v1.7.1
    ports:
      - "8080:8080"
    environment:
      # 使用数据库 Hostname 连接相应的服务
      HAKA_DB_HOST: haka_db
      HAKA_DB_PORT: 5432
      HAKA_DB_NAME: test
      HAKA_DB_PASS: test
      HAKA_DB_USER: test
      # 设定环境变量,建议明确 TZ 的时区
      TZ: "Asia/Shanghai"
    # 单独设定独立 Docker 组件的目录挂载
    volumes:
      - /mnt/user/appdata/hakatime/app:/config
    # 设定 Server 的网络配置,可以具体指定 IP 地址
    networks:
      compose:
        ipv4_address: 192.168.100.68
  # 数据库服务的 hostname
  haka_db:
    container_name: haka_db
    image: postgres:12-alpine
    # 自动创建持久化存储 Volumes
    volumes:
      - deploy_db_data:/var/lib/postgresql/data
    # 设定 haka_db 的网络配置,和 haka_db 在同一个网络中即可联通
    networks:
      compose:
        ipv4_address: 192.168.100.69

# Project 内部的网络设定,以下采用 MacVlan 模式
networks:
  compose:
    name: br0
    external: true

# 对应上方的 volumes 挂载自动创建对应 Volumes
volumes:
  deploy_db_data:

关于在 Unraid 上使用 Dokcer Compose 的详细说明,可以参考以下的文章:

Docker Dozzle

Unraid 中的 Docker 管理页面,可以看到所有的 Docker 容器的运行状态,也可以看到单个容器的日志信息。

Dozzle ⧉ 这个 Docker 容器,可以在统一的页面中直接查看所有 Docker 容器的日志信息,非常方便。

Docker Folder

对于强迫症患者,Docker 装多了列表太长也会很焦虑……而应用商店中的 Docker Folder 这个插件,就非常好的缓解了这个痛苦。

利用这个插件,可以对 Docker 进行分组、设定图标,还可以根据需要自定义 Docker 相关的命令行指令,实在是强迫症患者的必备工具。

虚拟机

Windows

在有了 Docker 之后,对个人用户而言使用虚拟机的必要性就少了很多。不过在很多时候,有个 Windows 的机器还是能够应急解决很多问题的。

需要特别注意的是,虚拟机的 VNC 和 RDP 对应的 IP 地址并不是一样的,VNC 直接使用宿主机的地址即可,但 RDP 的 IP 地址需要通过 ipconfig 命令进行查看。