MoreRSS

site iconAemon Cao修改

木有介绍
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Aemon Cao的 RSS 预览

榨干这台NAS第006话-关于备份

2025-05-30 20:55:35

这是一系列关于 NAS 的文章,系列的名称你们也看到了:「榨干这台 NAS」。我将尽可能详细的介绍 NAS 相关的知识,帮助你最大限度的发挥你的手中 NAS 的威力!

又拖了一年,实在惭愧。今天来讲讲备份,这两天对于把 NAS 上的重要文件都做了备份,就顺便来写一下记录记录。

备份的重要性

备份的重要性不言而喻,但是又只有当数据丢失时才会体会到它的重要。以下内容仅限于 NAS 上的文件备份,不包括手机和其他内容。大家可以定时先备份内容到 NAS 上。

备份是为了安全,安全分为两种,数据安全和隐私安全。

数据安全是指备份内容会不会丢失,损毁;而隐私安全是指你的备份数据会不会被窃取,被公开。对于数据内容的不同,两者的重要性也不一样。

常用的备份方式以及优缺点

内部硬盘备份

一般较为简单的方式就是拷贝一份到别的盘或文件夹上。这就是内部硬盘(Internal HDD)备份方式。这种方式优点是:

  1. 备份快捷方便,只要定时复制一份就好;

  2. 成本较低,在现有硬盘空间富裕的情况下,无需多余的费用;

当然,其缺点也是显而易见的:

  1. 同盘备份容易受损或感染,例如前几年开始流行的勒索病毒,它可以感染整台设备的上的文件,无一例外的你的备份也将无法幸免;

  2. 空间是有限的,在需要备份的文件过大时,对应所需的硬盘空间也会变大。

可移动存储媒介备份

这种方式兼顾了内部硬盘备份的方便,又保证了一定程度的安全,一般来说这也叫冷备份。方式是将需要备份的数据拷贝一份到 U 盘,移动硬盘,机械硬盘或光盘等存储介质上。并在备份完成后断电保存。其优点有:

  1. 单次备份较为快捷,在进行一次性的备份时较为方便;

  2. 支持异地备份,由于可移动的性质,这种方式符合 「3-2-1 原则」 中的 1,即一份拷贝保存在异地,这样当发生例如火灾等险情时,可以保证异地备份的安全。

这种方式的缺点有:

  1. 对于频繁增加的数据来说,例如日常生活照片,要做到及时备份会有些困难;

  2. 需要购买额外的存储设备;

  3. 可移动存储媒介的不稳定性,例如 U 盘本身不适合做为长时间的冷备份,而机械硬盘对于存放条件要求又有些高。

这里介绍一下常用介质的使用场景:

类型 特点和建议使用场景
外部硬盘 大容量但体积大;易受物理损坏和退磁影响。
固态存储(SSD、USB) 无机械部件,抗震耐用;价格高但寿命延长;常见于临时携带数据。
光盘(CD/DVD/Blu-ray) 容量小,便宜但寿命有限;适用于长期离线存档。
磁带 超大容量且成本低;多用于企业长期备份。
软盘/ZIP盘 已淘汰,因容量太低且不再生产。

云备份

其实大家在生活中已经有过或多或少的备份行为,例如你把旅游的照片发了朋友圈,这是一种备份;你打开了百度云的照片自动备份功能;你购买并开启了各大手机厂商自带的云服务(iCloud)……这些都是备份。

备份本质上是把重要的数据的副本保存在其他地方,上述例子中的其他地方都是指第三方厂家的服务器。

这就是我们要说的第三种备份,我通称为云备份。云备份的优点有:

  1. 异地备份,服务器厂商位于各个不同城市的服务器机房,在采用多个厂商产品的备份下,完全可以保证异地备份这一项的安全性;

  2. 方便,无需购买多余存储设备,现在的云盘厂商,动不动 TB 起步的容量,完全够普通人的备份需求。

缺点也是有的:

  1. 依赖于网络,在第一次全量备份时,备份时间的瓶颈在上传带宽上,以目前家用的 50Mbps 上传带宽为例,如果需要备份 100GB 的数据,大概需要四个半小时。更不要说当找回数据时如果没开会员那十几 KB 的下载速度了;

  2. 隐私安全没有保障,毕竟存储在第三方的服务器下,还是会存在泄露的可能,例如阿里云盘曾经有过能看到其他人照片的恶性 bug;

  3. 存在厂商锁定风险,比如一些较为私密的照片非常有可能被某些云盘厂商封禁。

  4. 价格,这是毋庸置疑的,毕竟厂家也不是做慈善的,既然提供了服务,就必然需要收取一定的费用,例如会员费用,或者是 OSS 存储费用和流量费用。

我的备份之路

接下来说说我这些年来的备份方法。

手写

记得小时候充值 QB 的时候,需要去书报亭购买 QB 卡,而 30 元面值的 QB 卡背后会带有密保卡。

密保卡.webp

当有过一次丢失的经历后,我意识到这玩意需要个备份,这时候,我就用纸笔将其写在本子上,这就成了我的第一个备份。

QQ 网络硬盘

但是不久之后,我遇到了问题,当我前往黑网吧时,我发现我没有将家中的密保卡带上,导致那天的我无法进入被密保卡保护的游戏。回家后,我立马将实体的卡片转录到了 Excel 上。

Excel密保卡.png

并将其存在了当时的 QQ 网络硬盘(腾讯微云的前身)上,这就是我的第一个云备份。

永硕 E 盘

时代的记忆,当时的各类软件和工具,一般大家都是放在这里进行分享。由于我的最初账号已经丢失,实在是无法回忆起来当时存了什么东西。

千脑

只有百度百科还记录着零星的信息:https://baike.baidu.com/item/%E5%8D%83%E8%84%91

各类网盘

后来,网盘产品如雨后春笋般出现,手机中的照片一般都是由各大网盘的默认推荐打开的自动备份功能所备份,各位可以去看看历史较为悠久的几家网盘,说不定还能在其中找到一些你觉得早已遗失的珍贵记忆。

NAS

在拥有了 NAS 之后,我的大部分文件都是会拷贝到 NAS 上一份作为一个备份。但是久而久之,在看过了网上各种硬盘损坏案例后,我开始对我这一张二手企业矿盘产生了怀疑:万一哪天坏了呢?

在刚有这念头的几天里,我显得十分焦虑,总觉得下一秒硬盘就会歇菜。尤其是想到那上万张照片可能会丢失,NAS 备份刻不容缓!

第一版备份方案

我需要备份的文件大致分为两部分,一是数量较多但是对隐私要求不高的照片视频文件;二是数量较少但是对隐私安全较为看重的数据,例如:Vaultwarden 密码数据、Teslamate 行程数据等等。

前者量大,我使用 Rclone 花了快一周时间才将其全部上传到阿里云盘。但是还是上传失败了好一部分,并且比较难确定是哪些遗失了。

后者量较少,但是对于安全保密性较高,我写了一个「导出-压缩-加密-上传-通知」的脚本,在 NAS 中以定时任务的形式每天进行全量备份。并且保存了近一年的历史备份。这对安全性要求较高的场景来说,不失为一个较为简单的方法,我将脚本分享在这里,大家改改应该就能直接用:

需要注意的是上传部分使用了 AList 挂载了云盘,并使用 rclone 通过提供了 WebDAV 服务(照片部分的网盘上传也是通过这一途径)。

同上上述的脚本进行的备份,由于进行了压缩加密,可以在上传到第三方网盘的同时保证其隐私安全性,当然千万不要忘记压缩密码,不然数据虽在,但是可能永远都看不了了。

缺点也较为明显,只适用于较为小的文件备份,对于大文件的备份,由于需要加密压缩的原因,会导致最后压缩文件较大,不宜进行频繁备份。

这里再放上一个最近修改过的脚本,支持一次备份多个项目的文件:

第二版备份方案

以下就是我写这一篇文章的契机,在某一次冲浪时,接触到了一款叫 restic 的开源软件。在使用后我发现,它完美解决了第一版备份中遇到的问题。例如安全性保证,大量文件的增量备份,甚至它还能提供版本管理!称它为完美的备份软件也不为过。

当然事物都有其两面性,restic 是一款没有图形界面的工具,要想使用它得了解一些额外的知识。

当然事物都有其两面性,既然它这么好用,那说不定会有人为它开发图形界面呢?这就是今天的主角:Backrest

官网是这么介绍它的:

Backrest is a web-accessible backup solution built on top of restic.

Backrest 是一个构建于 Restic 之上的可通过网页访问的备份解决方案。

通过 Backrest 我们就可以用较为简单的方式来使用 restic 备份文件。

安装 Backrest

我们可以通过 Docker 来安装 Backrest。安装命令如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
docker run -d \
--name backrest \ # 容器名称
--net bridge \ # 使用默认的桥接网络模式
--pids-limit 2048 \ # 限制最大进程数为 2048
-p 9898:9898/tcp \ # 映射主机端口 9898 到容器端口 9898
-e TZ="Asia/Shanghai" \ # 设置时区
-e BACKREST_DATA="/data" \ # Backrest 数据目录环境变量
-e BACKREST_CONFIG="/config/config.json" \ # Backrest 配置文件路径
-e XDG_CACHE_HOME="/cache" \ # 缓存目录路径
-v /mnt/user/appdata/backrest:/config:rw \ # 映射配置文件目录
-v /mnt/user/appdata/backrest/cache:/cache:rw \ # 映射缓存目录
-v /mnt/user/appdata/backrest/data:/data:rw \ # 映射数据目录
-v /mnt/user/appdata/backrest/repos:/repos:rw \ # 映射备份仓库目录
-v /mnt/user:/backup:ro \ # 映射只读的备份源目录
-v /mnt/user/appdata/rclone:/root/.config/rclone:rw \ # 映射 rclone 配置目录
garethgeorge/backrest:latest # 使用的镜像名称

上述命令在使用时需要去除注释并按照自身情况修改映射的目录和端口。

需要注意的有:

  1. -v /mnt/user:/backup:ro 这部分是只读(ro),当需要恢复文件时,这部分可以临时修改为读写(rw),或者挂载另外一个恢复目录,由于大部分时间还是读为主,所以这里为了源数据安全考虑,还是写成只读会好一些;

  2. -v /mnt/user/appdata/rclone:/root/.config/rclone:rw 由于我的备份目的地是 rclone,所以这里需要传入 rclone 的备份文件,当在 Backrest 配置了目的地为 rclone 的仓库时,restic 就会从这里进行读取信息。

创建用户

这时我们访问宿主机的 9898 端口,就可以看到 Backrest 的图形界面了。

Backrest界面1.png

你需要输入一个实例ID,并创建一个用户。

创建仓库(repository)

在 restic 中,保存备份的地方就叫做 repository。和 git 中的 repository 一样,它是一个目录,包含一些由 restic 创建的一级目录和文件。里面存储着你的备份文件、元数据以及加密密钥。

点击页面左侧菜单的 Add Repo (下图中 1 部分)即可打开创建仓库的表单:

Backrest界面2.png

首先输入仓库名称(上图中 2 部分),这部分不支持中文,也不支持空格,你可以按照备份目的地和备份内容来进行取名,比如我的备份目的地是 123 网盘,备份内容是 NAS 的文件,所以我的仓库名叫做 123CloudNASBackup

然后是 Repository URI(上图中 3 部分),这是 restic 较为关键的部分,可以把他当作连接到备份目的地的地址,这一部分根据你实际的备份目的地的不同,格式也不同。下面是一些常用的备份目的地类型:

存储库类型 存储库 URL 示例 备注(字段含义)
本地文件系统 /srv/restic-repo 本地路径作为存储库
SFTP sftp:user@host:/srv/restic-repo user 是用户名,host 是远程主机,路径为远程目录
REST 服务器 rest:http://host:8000/
rest:https://user:pass@host:8000/
rest:https://user:pass@host:8000/my_backup_repo/
rest:http+unix:///tmp/rest.socket:/my_backup_repo/
支持 HTTP/HTTPS 或 Unix socket;可包含用户名密码、端口、路径等信息
Amazon S3 s3:s3.us-east-1.amazonaws.com/bucket_name s3.us-east-1.amazonaws.com 是区域端点,bucket_name 是存储桶名称
Rclone rclone:foo:bar foo 是 Rclone 配置中的远程名,bar 是远程路径

可以根据你的实际情况来选择不同的备份目的地,比如我是通过 AList 挂载了 123 网盘,然后又通过 rclone 提供了 WebDAV 服务,这样我的仓库地址就是:rclone:AList:/123Cloud/NASBackup

之后就是密码(上图中 4 部分),之前 restic 是不允许创建无密码的存储库的,但是自从 restic 0.17.0 版本开始,允许创建无密码的仓库。但是为了安全起见,我们还是设置一个密码比较好,可以点击 Generate 按钮创建一个较为安全的密码(并且需要将其保存下来,因为这个密码会在后期恢复时用到)。

接下来比较重要的是 Prune Policy(上图中 5 部分),也就是修剪策略,简单来说,由于 restic 存在快照,如果在备份文件频繁变动的情况下,存储库的将会越来越大。我们可以删除部分过时的快照,而当快照被删除时,存储库中的就会有相对于的数据不再被使用,修剪(prune)功能就是用来清除这部分数据以最大化利用空间的。

修剪时比较占用时间和带宽(特别是在远程存储库时显得尤为重要)的,因为他会将数据从远程下载并在本地重新打包后再上传。

所以这部分我推荐时按照系统默认的设置即可。

之后是 Check Policy(上图中 6 部分),检查策略也尤为重要,这能及时发现存储库中的 [bit rot]https://en.wikipedia.org/wiki/Bit_rot)(比特腐烂)和 silent corruption(静默损坏),同样默认设置即可。

上述两项配置可以根据你的源数据更新频率以及重要程度,适当的缩短一下执行频率。

然后是 Command Modifiers(上图中 7 部分),这一项可以修改备份时的 IO 优先级和 CPU 优先级,IO 优先级分为:

IO 优先级选项 描述
IO_BEST_EFFORT_LOW 以低于默认磁盘优先级运行(将优先考虑其他进程)
IO_BEST_EFFORT_HIGH 以高于默认磁盘优先级运行(磁盘 IO 队列顶部)
IO_IDLE 仅在磁盘带宽空闲时运行(例如,没有其他操作排队)

CPU 优先级分为:

CPU 优先级选项 描述
CPU_DEFAULT 优先级没有变化
CPU_HIGH 高于默认优先级(后台必须以 root 身份运行)
CPU_LOW 低于默认优先级

大家可以根据 NAS 其他服务的运行情况来设置。

最后就是 Hooks,可以在不同状态下运行各类自定义的命令,支持的状态有:

条件常量 描述
CONDITION_ANY_ERROR 执行任何任务时出错
CONDITION_SNAPSHOT_START 开始备份操作
CONDITION_SNAPSHOT_END 备份操作结束(成功或失败)
CONDITION_SNAPSHOT_SUCCESS 备份操作成功结束
CONDITION_SNAPSHOT_ERROR 备份失败结束
CONDITION_SNAPSHOT_WARNING 部分备份结束
CONDITION_PRUNE_START 修剪操作开始
CONDITION_PRUNE_SUCCESS 修剪成功结束
CONDITION_PRUNE_ERROR 修剪失败结束
CONDITION_CHECK_START 检查操作开始
CONDITION_CHECK_SUCCESS 检查成功结束
CONDITION_CHECK_ERROR 检查失败结束

我的设置是在 CONDITION_SNAPSHOT_SUCCESSCONDITION_SNAPSHOT_ERRORCONDITION_SNAPSHOT_WARNING 时发送一条 Bark 的通知。

然后点击 Submit 按钮,等待 restic 初始化存储库即可。

创建备份计划

现在有了存储库,我们就要开始制定存储计划了。点击左侧 Add Plan 按钮(下图中 1 部分),即可开始创建备份计划。

Backrest界面3.png

首先还是设置一个计划名称(上图中 2 部分),我是按照备份内容来进行命名的,例如用来备份照片的我取名叫:PhotoBackup,用来备份 NAS
的 Docker 容器数据的叫做:NASAppdataBackup,总之能让自己看懂就行。

然后是选择一个备份存储库(上图中 3 部分),下拉选择刚刚创建好的那个存储库即可。比较可惜的是这里无法多选,如果想要备份到两个不同的存储库,就需要重新再建一个新的计划。

之后是备份路径(上图中 4 部分),可以选择一个或多个路径,选择你需要备份的目录即可,注意,如果像我一样使用 Docker 容器进行部署的,则需要先将备份的路径提前映射进容器,不然将无法选到。

路径是可以多选的,并且再以后也是可以随时进行修改的。

然后是选择排除规则(上图中 5 部分),例如你有一个文件夹,其中有 100 个子文件夹,而你想备份其中的 99 个,这时,你无需再上面 Path 中一一添加 99 个需要备份的文件夹,而是只需现在 Path 中添加其父文件夹,并在 Excludes 中填写不需要备份的文件夹即可。并且排除规则支持忽略大小写(上图中 6 部分),以及正则规则,详情可以查看官方文档

Backup Schedule 代表备份频率(上图中 7 部分),可以选择禁用,这样系统就不会自动备份,需要你按需过来手动备份。也可以按照时间间隔备份,例如每小时备份一次,每 3 天备份一次,当然也可以使用 Cron 设置。我是设置在每天的凌晨 3 点来进行备份,这样不会特别影响家庭的网络。

最后就是 Hooks,这里的 Hooks 和上方存储库的 Hooks 一样,一般如果在存储库中配置过通知 Hooks,计划中就不需要再配置了。计划中的配置一般不以通知为主,而且某些特定的备份内容,例如一些程序的运行数据,这一般都需要先停止程序运行,然后再进行备份,在备份完成后再启动程序。

点击 Submit 按钮,计划就创建完成了。

开始备份

然后,只要选择你想要备份的计划,点击蓝色的 Backup Now 按钮(下图中 1 部分),就可以手动启动一次备份,第一次由于是全量备份,备份的时间会比较久。但是 restic 有一个好处是,它支持中断后的继续备份,所以不论是手动停止还是异常断电,之后 restic 都能从上次停下的地方继续,而无需从头来过。

Backrest界面4.png

在备份完成后,将会生成一条快照信息(上图中 2 部分),页面上会显示快照所备份文件的大小,备份时长。

Backrest界面5.png

当我们点击这个快照时就你看到更加详细的快照信息,例如这次快照相较于上次快照添加了多少文件(上图中 3 部分),修改了多少文件(上图中 4 部分)。以及此次备份的日志信息(上图中 2 部分)和 Hooks 调用信息(上图中 5 部分)。并且可以忘记(删除)此次快照(上图中 1 部分)。

恢复

很遗憾你需要用到这一部分,但是也很庆幸还好有做备份。

Backrest界面6.png

我们需要点击你想要恢复的那个快照(上图中 1 部分),然后点击 Snapshot Browser(上图中 2 部分),并在其中展开你需要恢复的目录(上图中 3 部分)。点击目录右侧的下载按钮(上图中 4 部分),选择 Restore to path(上图中 5 部分)。

Backrest界面7.png

然后在弹出的对话框中选择你需要恢复的路径,点击 Restore,等待其恢复完成即可。

总结

回顾自己的备份之路,从最早的手写笔记、QQ 网络硬盘,到后来的各种网盘服务,再到现在拥有了 NAS 和更系统化的备份方案,可以说每一步都是对数据安全意识的提升。也许早期的方式略显原始,但也正是这些尝试,促使我逐步建立起属于自己的数据管理体系。

在备份这件事上,没有「之后再说」这种选择。意外总是在你最没准备的时候发生,真正能救你的,只有那个已经默默跑了几个月甚至几年的备份计划。

无论你是普通用户、创作者,还是一个像我一样喜欢折腾的技术爱好者,都建议你尽早为自己的数据上点「保险」。哪怕只是一个简单的移动硬盘,也远比什么都不做来得强。随着需求增长,再逐步过渡到更强大、更自动化的方案,比如使用 NAS 和备份工具 Backrest 等。

数据无价,备份先行。希望我的经验能为你带来一点启发,也欢迎你分享你的备份故事。

参考

  1. https://restic.net/

  2. https://restic.readthedocs.io/en/stable/

  3. https://github.com/garethgeorge/backrest

  4. https://rclone.org/

榨干这台 NAS 第 005 话-外网访问之 Tailscale

2024-06-12 14:46:13

这是一系列关于 NAS 的文章,系列的名称你们也看到了:「榨干这台 NAS」。我将尽可能详细的介绍 NAS 相关的知识,帮助你最大限度的发挥你的手中 NAS 的威力!

许久不见,拖更了快两年,今天继续来填坑。

今天我们暂时先不捣鼓 PT、影视、下载那些问题了,我们来解决一个更加基础的问题:外网访问

家用 NAS 作为家庭存储的设备,绝大多数场景是在家中使用的,但是有时候我们需要在外面访问家中的 NAS,比如在外面需要访问家中的文件、下载文件到家中的 NAS 等等。那么,如何实现外网访问呢?

目前主流的方式有以下几种:

  1. 端口映射:在路由器上设置端口映射,将 NAS 的端口映射到外网,这样就可以通过外网 IP 访问到 NAS。但是这种方式有一个很大的问题,就是安全性,端口映射后,NAS 的端口就暴露在了外网,这样就会有安全隐患。笔者曾经在暴露了 NAS 的多个端口后,被黑客入侵,所幸没有造成太大的损失。这方式在用户没有太多安全意识以及没有太多技术能力的情况下,不建议使用。当然它也有一些优点,比如速度快、稳定等;

  2. DDNS:动态域名解析服务,这其实是第一种方式的一个补充,通过 DDNS 服务,我们可以通过一个域名访问到家中的 NAS,而不需要记住家中的 IP 地址。因为现如今家庭宽带即使分配了公网 IP 地址,也是动态的,所以我们需要 DDNS 服务来实现动态 IP 的映射。这种方式的优点是不需要记住 IP 地址,但是安全性和第一种方式一样;

  3. frp:frp 是一个高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等协议。frp 的原理是通过一个中转服务器,将外网的请求转发到家中的 NAS,这样就不需要在路由器上设置端口映射,也不需要 DDNS 服务。frp 的优点是不需要用户拥有公网 IP,它的缺点是其速度受限于用于部署 frp 中转服务器的带宽,而且 frp 服务需要一台服务器来搭建,这样就会增加一定的成本;

  4. VPN:VPN 是一种通过加密通道将外网请求转发到家中的 NAS 的方式,VPN 的优点是安全性高,速度快,稳定性好,但是 VPN 的缺点是需要在外网设备上安装 VPN 客户端,这样才能访问家中的 NAS,而且 VPN 服务需要一台服务器来搭建,这样就会增加一定的成本。VPN 的另一个缺点是,VPN 服务一般都是收费的,如果你自己搭建 VPN 服务,那么你需要一台服务器,这样就会增加一定的成本;

  5. Tailscale:Tailscale 是一个基于 WireGuard 的 VPN 服务,它的优点是简单易用,安全性高,速度快,稳定性好,由于使用 Tailscale 后,优先是进行直连,影响你传输速度的只有你的家庭宽带的带宽,而不是中转服务器的带宽。而且 Tailscale 服务是免费的,不需要自己搭建服务器,也不需要在外网设备上安装 VPN 客户端,只需要在家中的 NAS 上安装 Tailscale 客户端,然后在外网设备上安装 Tailscale 客户端,就可以访问家中的 NAS 了。Tailscale 的缺点是需要在访问端和被访问端都安装 Tailscale 客户端,但是这样也增加了安全性。

今天我们就来讲讲第 5 种方式:Tailscale

其实还有一种方式,就是NAS 厂商提供的远程访问服务,比如 Synology 的 QuickConnect、QNAP 的 myQNAPcloud 等等,这种方式的优点是简单易用,但是本质上也是一种中转服务,只是它是由 NAS 厂商提供的,而不是用户自己搭建的。并且只支持品牌的 NAS,不支持自建的 NAS。

还有人会提到说 ZeroTier,ZeroTier 是一个类似 Tailscale 的 VPN 服务,但是 ZeroTier 我在使用的时候经常会出现连接不上的情况,并没有 Tailscale 那么稳定,所以我没有选择 ZeroTier。当然也可能是笔者的网络环境问题,你可以尝试一下。

Tailscale 的注册

首先,我们需要注册一个 Tailscale 账号,打开 Tailscale 官网,点击「Get Started」注册一个账号。

https://login.tailscale.com/start 中,选择你拥有的第三方账号进行登录,比如 Google、GitHub、Apple 等等。

Tailscale 的安装

安装分为两部分,一部分在外网设备上安装 Tailscale 客户端,一部分在家中的 NAS 上安装 Tailscale 客户端。

首先我们先在外网设备上安装 Tailscale 客户端,打开 https://tailscale.com/download,点击「Download」下载对应的客户端,然后安装。安装方式就不详细介绍了,很简单。

安装完成后,打开 Tailscale 客户端,登录你刚刚注册的 Tailscale 账号即可。你可以将其设置为开机启动。

然后我们在家中的 NAS 上安装 Tailscale 客户端,这里以 unRAID 为例,打开 unRAID 的「Apps」,搜索「Tailscale」,点击「Install」安装 Tailscale 客户端。

unRAID-App-Tailscale.png

docker 配置使用默认配置即可,然后点击「Apply」。

Tailscale-docker-config.png

安装完成后,我们需要打开 unRAID 的「Docker」,找到刚刚安装的 Tailscale 客户端,点击「Logs」,找到「logon URL」,然后在电脑上打开浏览器,输入这个 URL,然后登录你的 Tailscale 账号,点击「Auth」授权。

如此一来,你的家中的 NAS 就和你的外网设备连接在了一起,你可以在外网设备上访问家中的 NAS 了。

你可以将其当作是 TailScale 为你的外网设备和家中的 NAS 搭建局域网,这样你的外网设备就可以访问家中的 NAS 了。相反的,NAS 也可以访问外网设备。

TailScale 的使用

Tailscale 的使用非常简单,你可以在 Tailscale 控制台 中看到你的设备和它的 IP 地址,你可以通过这个 IP 地址访问到你的设备。

Tailscale-console.png

例如,你可以在外网设备上通过 http://TailScale-IP:Port 访问到家中的 NAS 上的服务,比如你可以通过 http://TailScale-IP 直接访问到 unRAID 的 WebUI。其他服务也是一样,并且无需设置端口映射。

高阶使用 subnets

Tailscale 还有一个很强大的功能,就是 subnets,你可以在 Tailscale 控制台中设置 subnets,这样你就让你的外网设备访问到家中的局域网中的其他设备了。

比如你家中有一个打印机,你可以设置 subnets,让外网设备访问到这个打印机,这样你就可以在外网设备上通过这台打印机打印文件了。

具体设置方法可以参考 Tailscale 官方文档

总结

通过上述的设置,你应该已经可以从外网访问到家中的 NAS 了,而且速度快、安全性高、稳定性好。如果你使用 TailScale 的时候发现速度并不能达到预期,或者连接速度慢,那么再进阶一步,可以考虑自建 Headscale 服务,这样你就可以自己控制中转服务器的带宽了。对于笔者来说,Tailscale 已经能够满足我的需求了,所以我没有自建 Headscale 服务。

希望这篇文章对你有所帮助,如果有任何问题,欢迎在评论区留言,我会尽力解答。

参考

榨干这台 NAS 第 004 话-刮削

2022-11-21 11:18:17

这是一系列关于 NAS 的文章,系列的名称你们也看到了:「榨干这台 NAS」。我将尽可能详细的介绍 NAS 相关的知识,帮助你最大限度的发挥你的手中 NAS 的威力!

上一话中,讲解了硬链接功能,适合 PT 玩家们使用。那么之后就需要对下载下来的资源进行整理了。

我们在一般的视频网站中看电影或电视剧的时候,都会看到影视剧有海报,简介,分类,演职人员表等信息,那么这些信息应该怎么来呢?

电视墙海报墙效果.png

在我们自建的影音库中,所有的这些都需要通过「刮削」来获取。

对于一般的影视剧,通过一款叫做 TinyMediaManager 的软件即可一条龙完成刮削。

安装 TinyMediaManager

TinyMediaManager 支持 Windows、macOS、Linux 以及 Docker,对于我们基于 NAS 的使用场景来说,使用 Docker 是更为方便的。当然你也可以使用其他的版本,各个版本之间除了安装方式不同,使用方法都是一样的。

需要注意的是,TinyMediaManager 在4.0后改为了付费软件,如果没有付费将只支持刮削 50 部影视剧,所以接下来我们将使用 3.0 版本的 TinyMediaManager,放心,两个版本的刮削效果完全相同。

这里推荐使用 dzhuang/tinymediamanager:latest 镜像,能更好的支持中文。

在 unRAID 下,安装下图进行配置即可:

TinyMediaManager3-config.png

也可以使用命令启动:

1
2
3
4
5
6
7
8
docker run -d --name='TinyMediaManager3' \
-e 'TZ'="Asia/Shanghai" \
-e 'DISPLAY_WIDTH'='1920' \
-e 'DISPLAY_HEIGHT '='1080' \
-p '5800:5800/tcp' \
-v '/mnt/user/UNRAID/media':'/media':'rw' \
-v '/mnt/user/appdata/TinyMediaManager3':'/config':'rw' \
'dzhuang/tinymediamanager:latest'

运行命令后稍等片刻就安装完成了。

注意这里的 /media 映射的 /mnt/user/UNRAID/media 目录即为榨干这台 NAS 第 003 话-硬链接中硬链接所存放的地方。选择你的电影硬链接和电视剧硬链接的最深的共同父目录即可。

使用 TinyMediaManager

首先要注意的是:不要更新,不要更新,不要更新!

  1. 选择左侧的「电影」——「媒体库目录」,在媒体库目录中添加你的电影硬链接文件夹(注意,这里的文件夹可以一次添加多个);

  2. 选择左侧的「电影」——「刮削器」,在元数据刮削在选择 themoviedb.com

  3. 选择左侧的「电影」——「刮削器」——「刮削器选项」,在高级选项中设置首选语音为 大陆简体

  4. 关闭设置框,点击左上角的「更新源」,这样你的电影都会在列表中显示,目前是未刮削状态;

  5. 右键任意一部电影,点击「搜索并刮削所选电影」,一般来说如果命名规范,那么软件能直接识别出当前电影,在搜索结果中选中后,点击右下角的「确定」即可;

  6. 如果没有搜索结果,那么在上方的输入框中输入电影的 IMDbID 并点击搜索即可,IMDbID 可以在电影的豆瓣详情页中找到;

  7. 如果有多条搜索结果,那么大概率是存在同名电影,可以通过电影的上映年份,或者依次点击左侧搜索结果,并在右侧查看电影海报来判断;

  8. 点击「确定」后,观察右下角进度条,当进度条跑完后,选中刚刚刮削的电影,右键并选择「重命名或整理所选电影」,这样 TinyMediaManager 会为电影文件重新命名。

自此,一部电影就刮削完成了。

电视剧的刮削和电影大同小异,需要注意的是,电视剧由于有多季多集的情况存在,所以需要对每一集规范命名,实际测试下来以 S01E01 的命名方法就可以准确得被 TinyMediaManager 识别,S01E01 代表的就是第一季第一集。

所以在电视剧的刮削之前,还要为电视剧文件批量重新命名,在 Linux 下可以使用 rename 命令来完成,而在 Windows 下有许多批量重命名的软件可供使用。

需要注意的点

在刮削电视剧的时候,可能有时候季数和集数不太清楚,大家可以去 https://www.themoviedb.org/ 搜索需要刮削的电视剧。在详情页中点击「查看全部季」,这样就可以看到这部剧的季结构了。根据这些来对文件重新命名即可。

榨干这台 NAS 第 003 话-硬链接

2022-08-24 11:56:26

这是一系列关于 NAS 的文章,系列的名称你们也看到了:「榨干这台 NAS」。我将尽可能详细的介绍 NAS 相关的知识,帮助你最大限度的发挥你的手中 NAS 的威力!

上一话中已经介绍了下载工具,想必很多人在接触 NAS 的时候也或多或少会接触到 PT 吧,今天我就来介绍一个 PT 利器:硬链接。

起因

什么是 PT 呢,大家可以自己 Google,或者之后我再来讲。在 PT 下载中,不是说你下载完就好了,而是秉承着我为人人,人人为我的精神,在下载完成后最好一直保持做种,这样在别人下载这个资源的时候,也可以有较快的速度。

但是做种的时候,有一个问题,就是下载好的文件,不能改名也不能修改目录结构。这样一来,对后期的刮削操作来说是完全不能接受的。所以我们就要用到「硬链接」。

那么什么是硬链接呢?与硬链接相对应的,还有一种软链接,软链接其实就相当于 Windows 中的快捷方式,只是一个指向源文件的文件。在我们删除源文件后,快捷方式将无法使用。而硬链接就不一样了,你同样可以像创建软链接一样创建多个硬链接。但是当你删除源文件后,硬链接还是可以正常使用,和普通文件没有区别。只有当你删除所有的源文件和硬链接后,这个文件才算是真正的被删除。并且多个硬链接和源文件只会占用一个文件的空间。

举例来说:

  1. 你下载了最新的电影 不能说的秘密2.mp4,它存放在:Downloads/qBittorrentDownloads/media/movie/不能说的秘密/不能说的秘密2.mp4

  2. 你就可以创建一个硬链接,在另一个文件夹下面:media/movie/不能说的秘密2(2034)/不能说的秘密2(2034).mp4

  3. 这时候,你可以将 Downloads/qBittorrentDownloads/media/movie/不能说的秘密/不能说的秘密2.mp4 删除,media/movie/不能说的秘密2(2034)/不能说的秘密2(2034).mp4 仍然可以使用,反过来也是一样。但是不能将两个文件同时删除;

  4. 如果你创建的硬链接源文件发生了变化,你的所有硬链接同时也会将变化同步,例外的:文件名的变化将不会同步。

如何创建硬链接

简单的方法是使用 ln 命令,以上面的例子来说,只需要执行以下命令:

1
ln /Downloads/qBittorrentDownloads/media/movie/不能说的秘密/不能说的秘密2.mp4 /media/movie/不能说的秘密2(2034)/不能说的秘密2(2034).mp4

就可以创建一个硬链接。

但是这样对于一个文件来说还好说,对于众多的电影来说,却是一项大工程。所以我们需要用到 hLink 这一硬链接工具。

安装 hLink

在 UNRAID 的应用市场中并没有 hLink,所以无法通过应用市场直接安装。

我们可以直接通过命令来进行安装:

1
2
3
4
5
docker run -d --name hlink \
-e HLINK_HOME=$YOUR_HLINK_HOME_DIR \
-p 9090:9090 \
-v $YOUR_NAS_VOLUME_PATH:$DOCKER_VOLUME_PATH \
likun7981/hlink:latest

在上方的命令中你需要将你要硬链接的源文件的目录和硬链接文件的目录的共同的父目录映射进容器。

在我的机器上,具体命令是这样的:

1
2
3
4
5
docker run -d --name hlink \
-e HLINK_HOME=/share/appdata/hlink \
-p 9090:9090 \
-v /mnt/user:/share \
likun7981/hlink:latest

运行命令后稍等片刻就安装完成了。

使用 hLink

前往浏览器访问「你设备的IP地址:9090」,例如:http://192.168.1.223:9090,即可进入操作页面。

  1. 首先点击「创建配置」

    创建配置.png

  2. 为配置输入一个名字,用于标记这个配置的作用,例如:Movie;

  3. 接下来就要对配置文件进行修改,可以先看一下默认的配置文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    // 重要说明路径地址都请填写 绝对路径!!!!
    export default {
    /**
    * 源路径与目标路径的映射关系
    * 例子:
    * pathsMapping: {
    * '/path/to/exampleSource': '/path/to/exampleDest',
    * '/path/to/exampleSource2': '/path/to/exampleDest2'
    * }
    */
    pathsMapping: {},
    /**
    * 需要包含的后缀,如果与exclude同时配置,则取两者的交集
    * include 留空表示包含所有文件
    *
    * 后缀不够用? 高阶用法: https://hlink.likun.me/other/v2.html#%E6%96%B0%E5%A2%9E%E5%8A%9F%E8%83%BD
    */
    include: [
    'mp4',
    'flv',
    'f4v',
    'webm',
    'm4v',
    'mov',
    'cpk',
    'dirac',
    '3gp',
    '3g2',
    'rm',
    'rmvb',
    'wmv',
    'avi',
    'asf',
    'mpg',
    'mpeg',
    'mpe',
    'vob',
    'mkv',
    'ram',
    'qt',
    'fli',
    'flc',
    'mod',
    'iso',
    ],
    /**
    * 需要排除的后缀,如果与include同时配置,则取两者的交集
    *
    * 后缀不够用? 高阶用法: https://hlink.likun.me/other/v2.html#%E6%96%B0%E5%A2%9E%E5%8A%9F%E8%83%BD
    */
    exclude: [],
    /**
    * @scope 该配置项 hlink 专用
    * 是否保持原有目录结构,为false时则只保存一级目录结构
    * 可选值: true/false
    * 例子:
    * - 源地址目录为:/a
    * - 目标地址目录为: /d
    * - 链接的文件地址为 /a/b/c/z/y/mv.mkv;
    * 如果设置为true 生成的硬链地址为: /d/b/c/z/y/mv.mkv
    * 如果设置为false 生成的硬链地址为:/d/y/mv.mkv
    */
    keepDirStruct: true,
    /**
    * @scope 该配置项 hlink 专用
    * 是否打开缓存,为true表示打开
    * 可选值: true/false
    * 打开后,每次硬链后会把对应文件存入缓存,就算下次删除硬链,也不会进行硬链
    */
    openCache: false,
    /**
    * @scope 该配置项 hlink 专用
    * 是否为独立文件创建同名文件夹,为true表示创建
    * 可选值: true/false
    */
    mkdirIfSingle: true,
    /**
    * @scope 该配置项为 hlink prune 命令专用
    * 是否删除文件及所在目录,为false只会删除文件
    * 可选值: true/false
    */
    deleteDir: false,
    }

    可以到看到大部分配置都已经有的了,我们只要修改部分就行。例如最重要的 pathsMapping 属性。这是时候需要注意,此时填写的路径不是当前宿主机中的路径,而是容器中的路径,你需要根据启动容器时候的目录映射参数来修改相对应的路径。

    例如我的启动参数中映射是:-v /mnt/user:/share,即在宿主机的路径 /mnt/user 等于容器中的 /share,所以我原本电影(源文件)的下载路径:/mnt/user/UNRAID/downloads/qBittorrentDownloads/Media/Movie,这时候就要改为:/share/UNRAID/downloads/qBittorrentDownloads/Media/Movie,原本硬链接的存放位置:/mnt/user/UNRAID/media/Movie,就要更改为:/share/UNRAID/media/Movie

    所以最后我的 pathsMapping 属性就是:

    1
    2
    3
    pathsMapping: {
    '/share/UNRAID/downloads/qBittorrentDownloads/Media/Movie': '/share/UNRAID/media/Movie'
    },
  4. 然后点击「确定」;

  5. 之后点击「创建任务」

    创建任务.png

  6. 输入任务名称,任务类型选择 硬链(hlink),然后选择你刚刚创建的配置文件,最后点击「确定」;

  7. 最后在任务列表点击你刚刚点击的任务,就可以开始进行创建硬链接了。

需要注意的点

  1. 我在 榨干这台 NAS 第 002 话-下载工具 文章中有提到 qBittorrent 一些使其更好使用的配置(「工具」-「选项」-「下载」勾选「为不完整的文件添加扩展名 .!qB」),为的就是在创建硬链接的时候不将未下载完成的电影包括进去;

  2. 可以为任务设置定时任务,这样就不需要在每次有新电影时再进入 Web 页面进行手动操作了,一般来说一个小时执行一次任务即可;

  3. 我在 榨干这台 NAS 第 000 话-目录结构 中提到电影,电视剧不同类型的影音文件最好可以分文件夹保存,这时候在创建硬链接的时候就需要根据不同的分类创建不同的配置才可以,例如我就根据不同的媒体类型创建了不同的配置:

    hLink.png

  4. 当文件夹中有文件你不想进行硬链接时,可以在 exclude 中添加规则。

参考

https://github.com/likun7981/hlink

榨干这台 NAS 第 002 话-下载工具

2022-08-09 22:03:32

这是一系列关于 NAS 的文章,系列的名称你们也看到了:「榨干这台 NAS」。我将尽可能详细的介绍 NAS 相关的知识,帮助你最大限度的发挥你的手中 NAS 的威力!

刚打完篮球回到家,洗完了澡,喝了点小酒,看到有朋友在前两篇文章中催更,那就趁着酒意再写一篇。

之前我们介绍了目录结构和文件浏览工具,那么,文件从哪儿来呢?最常用的办法就是下载。仔细想想,我们在 PC 上是怎么下载文件的?可以通过浏览器直接下载,也可以通过各种下载软件进行下载。那么在 NAS 上应该使用什么工具呢?接下来我将介绍一下在 NAS 上常用的下载工具。

PS:喝醉了,如果写错了什么还请见谅。

qBittorrent

说起 BT 下载,国内的大家应该第一时间会想到迅雷吧,但是迅雷并不是一个好的 BT 下载软件。一般使用的就是 qBittorrent 这款软件。

搜索

还是老样子,前往「应用『Apps』」页面搜索「qBittorrent」,选择下图所示的应用:

qBittorrent.png

注意不要选错。

点击「安装『Install』」。

配置

qBittorrentConfig.png

可以看到这个容器需要配置为三个端口,一个路径和一个环境变量。

  1. 将宿主机的 8080 端口映射到容器的 8080 端口,此端口为该容器的 WebUI 端口,之后可以通过此端口来访问 WebUI 界面(注意,请确定宿主机的 8222 端口无其他程序占用,不然将无法启动容器,如果被占用,可以自行更换端口);

  2. 将宿主机的 6881 端口映射到容器的 6881 端口,此端口为 TCP 连接的端口,6881 是用于传入连接的默认端口;

  3. 将宿主机的 6881 端口映射到容器的 6881 端口,此端口为 UDP 连接的端口,6881 是用于传入连接的默认端口;

  4. 将宿主机的 /mnt/user/UNRAID/downloads/qBittorrentDownloads 路径映射至容器的 /downloads 路径,此路径为 qBittorrent 存放下载文件的路径;

  5. 设置 WEBUI_PORT 环境变量,值为 8080,这个环境变量的作用为设置容器内 WebUI 的端口,不用去改变它就行,如果这里改变了,那么在第一个端口映射配置时,也要把容器内端口改为改变后的值,否则启动容器后将无法访问 WebUI 页面。

上方都是除了下载路径外都是默认配置,我们需要在默认配置的基础上进行修改:

  1. 添加两个新的端口映射,端口值可以大一些,我使用的是:41638,一个为 TCP 端口,一个为 UDP 端口,完成后可以移除上方两个默认的 6881 端口映射,这么修改的原因是有些 PT 站点屏蔽了默认的 6881 端口;

  2. 点开下方的「显示更多设置」,修改 Appdata 路径为 /mnt/user/appdata/qBittorrent,这是 qBittorrent 所以配置信息所存放的路径;

  3. 还是在「显示更多设置」中,修改 PUID 环境变量的值为 0,修改 PGID 环境变量的值为 0,这样就可以以 root 用户来启动这个容器了;

  4. 添加 UMASK 环境变量,值为 000

qBittorrentConfig2.png

确认无误后,点击「应用」,即可启动容器。

使用

打开浏览器,访问 http://192.168.1.223:8080(注意,如果你在上述配置中修改过端口,请访问相应的端口,而 IP 地址则是你的 NAS 的 IP 地址),即可前往 qBittorrent 的操作页面。

默认的用户名为:admin,默认为密码为:adminadmin

修改密码

登录后的第一件事,请前往「工具」-「选项」-「Web UI」-「验证」修改你的密码。

一些使其更好使用的配置
  1. 「工具」-「选项」-「Web UI」-「语言」修改语言为简体中文;

  2. 「工具」-「选项」-「连接」-「监听端口」将其设置为之前启动容器时所配置传入连接端口,即刚刚设置的 41638强烈建议选择随机端口,而不是和我的一样,这么做的原因是,首先一部分 PT 站会禁用默认的6881 ~ 6999 端口。所以尽量不要选择这些范围内的端口;其次某些运营商会对 BT 流量进行封禁,如果很多人使用相同的端口的话,则会增大被运营商发现 的概率;

  3. 「工具」-「选项」-「下载」勾选「为不完整的文件添加扩展名 .!qB」,这样做可以方便之后设置硬链接;

  4. 「工具」-「选项」-「高级」-「libtorrent 相关」将「校验时内存使用扩增量」修改大一些,我设置成了 512,这样可以提高校验速度,提升之后辅种效率;

  5. 「工具」-「选项」-「BitTorrent」勾选「自动添加以下 tracker 到新的 torrent」,并在下方输入框中填入https://cdn.jsdelivr.net/gh/ngosang/trackerslist@master/trackers_all.txt中的内容,此处设置的作用的是为了获得更多的供种者,此操作能有效提高下载速度,建议每隔一段时间就更新一下 tracker 列表,更多 tracker 列表可以查看 https://github.com/ngosang/trackerslisthttps://github.com/XIU2/TrackersListCollection

  6. 「工具」-「选项」-「BitTorrent」取消勾选「Torrent 排队」,这一步是为了多任务同时下载与上传,BT 的本质就是我为人人,人人为我,你的下载即是别人的上传,所以请最好不要限制你的上传,在不影响使用的情况下提供最多的上传;

  7. 更多详细配置可以查看 https://www.jianshu.com/p/ac70172767ed,此文讲得十分详细。

分类

qBittorrent 与其他下载工具相比的优势之一在于他有强大的分类和标签机制。在左侧的边栏可以看到分类和便签管理模块。

我们可以通过鼠标右键任意分类来添加新的分类:

qBittorrent新建分类.png

然后填入分类名称和保存路径,可以为不同的分类设置不同的路径,例如 Movie 分类,保存路径 /downloads/Media/Movie、TV series 分类,保存路径 /downloads/Media/TV series,大家可以按照我在第000话中的 Media 目录配置来建立相关的分类。这会为之后的硬链接提供很大的方便。

最后在新建任务时候,就能选择已经设定的分类了。当然对于已有的任务对一个或多个任务右键即可在「分类」栏中选择相应的分类。

标签

其实有分类就已经完全足够了,标签和分类区别是:

  1. 标签无法设置保存路径;

  2. 一个任务可以拥有多个标签,但是只能拥有一个分类。

大家可以根据实际需求来使用。例如有些任务的名称名字比较奇怪,不好第一时间辨别,就可以使用标签来标记一下。又或者可以按照电影或电视剧的国家,上映年份来设置标签。

Linux 下的安装

以下操作均建立在系统已经安装 Docker 的基础之上。

  1. 拉取 Docker 镜像

    1
    docker pull linuxserver/qbittorrent:latest
  2. 启动容器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    docker run -d \
    --name='qBittorrent' \
    --net='bridge' \
    -e TZ="Asia/Shanghai" \
    -e 'WEBUI_PORT'='8080' \
    -e 'PUID'='0' \
    -e 'PGID'='0' \
    -e 'UMASK'='000' \
    -p '8080:8080/tcp' \
    -p '41638:41638/tcp' \
    -p '41638:41638/udp' \
    -v '/mnt/user/UNRAID/downloads/qBittorrentDownloads':'/downloads':'rw' \
    -v '/mnt/user/appdata/qbittorrent':'/config':'rw' \
    'linuxserver/qbittorrent:latest'

Aria2

除了专门用于 BT 下载的软件之外,还要推荐的是 Aria2 这个工具。它被认为从该软件的下载效率和可用性来看是 Linux 下最好用的下载管理器之一。Aria2 不仅支持 BitTorrent,还能够从各种来源多路检索所请求的文件。包括 HTTP,HTTPS,FTP 和 BitTorrent 协议。

搜索

前往「应用『Apps』」页面搜索「aria2」,选择下图所示的应用:

Aria2.png

点击「安装『Install』」。

配置

Aria2Config.png

Aria2 的配置看起来比较多,但是大多数使用默认配置即可,我讲一下重点的几个配置:

  1. RPC_SECRET 环境变量,这个值就是之后对 Aria2 进行管理的密码,设置一个不那么简单的密码即可;

  2. 将宿主机的 /mnt/user/UNRAID/downloads/aria2Download 路径映射至容器的 /downloads 路径,此路径为 Aria2 存放下载文件的路径;

  3. 将宿主机的 /mnt/user/appdata/aria2-pro 路径映射至容器的 /config 路径,此路径为 Aria2 存放下载文件的路径;

  4. RPC_PORT 是对 Aria2 进行管理的端口,默认即可;

  5. 余下几个端口使用默认配置即可,这里的 Listen Port 的作用和上方 qBittorrent 的传入连接的端口是相同的。但是在有 qBittorrent 的情况一般就不用 Aria2 来进行 BT 下载了,所以这边也就没有必要改动了,使用默认就可以;

确认无误后,点击「应用」,即可启动容器。

附上启动命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker run -d \
--name='Aria2-Pro' \
--net='bridge' \
-e TZ="Asia/Shanghai" \
-e 'RPC_SECRET'='这里填写你的密码' \
-e 'IPV6_MODE'='true' \
-e 'RPC_PORT'='6800' \
-e 'LISTEN_PORT'='6888' \
-p '6800:6800/tcp' \
-p '6888:6888/tcp' \
-p '6888:6888/udp' \
-v '/mnt/user/UNRAID/downloads/aria2Download':'/downloads':'rw' \
-v '/mnt/user/appdata/aria2-pro':'/config':'rw' \
'p3terx/aria2-pro'

使用

qBittorrent 不同,Aria2 容器本身没有提供 WebUI。我们需要通过 AriaNg 这一工具来对 Aria2 进行管理。

  1. 打开浏览器,访问 http://ariang.mayswind.net/latest

  2. 点击左侧边栏的「AriaNg设置」;

  3. 选择第二个标签页「RPC(ariang.mayswind.net)」;

  4. 输入 Aria2 RPC 别名,用于区分多个 RPC,例如「家中 NAS」、「公司服务器」;

  5. 输入 Aria2 RPC 地址,将默认的 ,修改为你的 NAS 的 IP 地址即可,端口号则为默认的 6800,如果你在配置容器时修改过 RPC_PORT,那么这里需要改为修改后的端口号;

  6. Aria2 RPC 协议选择 「Http」;

  7. Aria2 RPC Http 请求方法选择「POST」;

  8. Aria2 RPC 密钥则为容器配置时填写的 RPC_SECRET 的值;

  9. 确认无误后,重新刷新本页面即可。

如果配置的没有问题,那么在左侧边栏的 Aria2 状态处则会显示绿色的已连接,则代表已经成功连接到你的 Aria2 服务。那么你就可以此页面添加下载任务并下载了。

AriaNg.png

参考

  1. https://github.com/qbittorrent/qBittorrent

  2. https://github.com/XIU2/TrackersListCollection

  3. https://github.com/ngosang/trackerslist

  4. https://www.jianshu.com/p/ac70172767ed

  5. https://zh.wikipedia.org/wiki/Aria2

  6. https://github.com/aria2/aria2

榨干这台 NAS 第 001 话-文件浏览器(File Browser)

2022-08-08 16:08:44

这是一系列关于 NAS 的文章,系列的名称你们也看到了:「榨干这台 NAS」。我将尽可能详细的介绍 NAS 相关的知识,帮助你最大限度的发挥你的手中 NAS 的威力!

在上一话中我们介绍了目录结构,那么应该如何编辑这些目录和文件呢?最最原始的方式就是使用命令来执行这些操作。但是这对于一部分不熟悉 Linux 系统的人来说,会显得有些困难。所以,这一话,我将介绍一个软件,可以用于 NAS 的文件浏览。如果你是群晖或威联通用户,那么其系统自带的软件就应该能满足大部分需求了,所以可以跳过这一话。

PS:接下来的操作将在 unRAID(6.10.2) 系统上进行。

PSS: 当然对于非 unRAID 系统的用户,我也会演示一下在 Linux 系统下应该如何进行安装。

unRAID 下的安装和使用

搜索

前往「应用『Apps』」页面搜索「FileBrowser」,选择下图所示的应用:

FileBrowser.png

点击「安装『Install』」,即图中「Actions」按钮所在位置(因为我已经安装过这个软件,所以不会显示「Install」按钮了)。

配置

FileBrowserConfig.png

然后依照上图所示填写。

主要是配置了两个路径和一个端口:

  1. 将宿主机的 / 路径映射至容器的 /srv 路径,此路径为你需要进行文件管理的路径;

  2. 将宿主机的 /mnt/user/appdata/filebrowser/ 路径映射至容器的 /db/ 路径,此路径为此容器的配置数据库路径,你之后所设置的用户名密码等个性配置信息都将存储在这里;

  3. 将宿主机的 8222 端口映射到容器的 80 端口,此端口为该容器的 WebUI 端口,之后可以通过此端口来访问 WebUI 界面(注意,请确定宿主机的 8222 端口无其他程序占用,不然将无法启动容器,如果被占用,可以自行更换端口)。

点击应用,即可启动容器。如果你的配置无误,那么在等待片刻后,容器将会自动启动,接下来就可以使用了。

附上 unRAID 下的启动命令:

1
/usr/local/emhttp/plugins/dynamix.docker.manager/scripts/docker run -d --name='FileBrowser' --net='bridge' -e TZ="Asia/Shanghai" -e HOST_OS="Unraid" -e HOST_HOSTNAME="Tower" -e HOST_CONTAINERNAME="FileBrowser" -l net.unraid.docker.managed=dockerman -l net.unraid.docker.webui='http://[IP]:[PORT:8222]/files/' -l net.unraid.docker.icon='https://github.com/maschhoff/docker/raw/master/filebrowser/35781395.png' -p '8222:80/tcp' -v '/':'/srv':'rw' -v '/mnt/user/appdata/filebrowser/':'/db/':'rw' 'filebrowser/filebrowser' -d /db/database.db

使用

打开浏览器,访问 http://192.168.1.223:8222(注意,如果你在上述配置中修改过端口,请访问相应的端口,而 IP 地址则是你的 NAS 的 IP 地址),即可前往 File Browser 的操作页面。

默认的用户名为:admin,默认为密码为:admin

修改密码

登录后的第一件事,请前往「设置」-「个人设置」页面修改你的密码。

一些使其更好使用的配置
  1. 在「设置」-「个人设置」中将语言修改为中文;

  2. 在「设置」-「个人设置」中取消勾选「不显示隐藏文件」,这样你就能看到隐藏的文件和文件夹了;

  3. 在「设置」-「个人设置」中取消勾选「使用单击来打开文件和目录」,这样可以更加符合 Windows 资源管理器的操作逻辑,同时也可以使用 ctrlshift 来进行多选操作了;

  4. 由于在安装容器的时候设置了管理目录为宿主机的 / 路径,所以每次访问 WebUI 默认路径都是此路径,要想更换默认路径的话,软件并没有相应的设置,但是我们可以曲线救国,首先去到我们想默认显示的路径下。例如:/mnt/user/appdata/,然后我们只要将当前页面(http://192.168.1.223:8222/files/mnt/user/appdata/)添加到浏览器的书签,这样以后就可以通过这个书签来访问此路径了。同样的,我们可以为不同的目录设置不同的书签,从而达到快捷访问的目的。

Linux 下的安装

以下操作均建立在系统已经安装 Docker 的基础之上。

  1. 拉取 Docker 镜像

    1
    docker pull filebrowser/filebrowser:latest
  2. 启动容器

    1
    2
    3
    4
    5
    6
    docker run \
    -v '/':'/srv' \
    -v '/mnt/user/appdata/filebrowser/':'/db/' \
    -p '8222:80/tcp' \
    filebrowser/filebrowser:latest \
    -d /db/database.db

参考