NAS相关知识
NAS是什么?
NAS(Network Attached Storage:网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为“网络存储器”。它是一种专用数据存储服务器。它以数据为中心,将存储设备与服务器彻底分离,集中管理数据,从而释放带宽、提高性能、降低总拥有成本、保护投资。其成本远远低于使用服务器存储,而效率却远远高于后者。国际著名的NAS企业有Netapp、EMC、OUO等。
NAS(Network Attached Storage,网络附加存储)是一种专为数据存储设计的独立设备,你可以把它想象成一个“私有云硬盘”,但完全由你自己控制。
简单理解:
- 像U盘一样插在路由器上:NAS通过网线连接路由器,所有联网设备(手机、电脑、电视等)都能随时访问它存储的文件。
- 24小时在线的“家庭图书馆”:即使你的电脑关机,NAS依然运行,随时可以读写数据。
核心功能:
- 集中存储
把分散在手机、电脑、移动硬盘里的文件(照片、视频、文档)统一存到NAS,避免数据丢失或混乱。 - 多设备共享
家人或同事可以通过网络同时访问同一份文件,比如一起看家庭相册或协作办公。 - 自动备份
设置规则后,NAS会自动备份手机照片、电脑文件,甚至监控摄像头录像。 - 私有云同步
外出时通过互联网访问家里的NAS,像用百度网盘一样取文件,但空间更大(TB级)、速度更快(无上传限速)。 - 媒体中心
搭建个人影音库(电影、音乐、电子书),通过电视或手机直接在线播放,无需依赖爱奇艺、网易云等平台。
RADI
RAID(磁盘阵列)就像给NAS硬盘加了「安全保险箱」,用不同的组合方式让数据更安全、读写更快。用生活中的例子帮你理解:
1. RAID 0:飙车模式(速度优先)
原理:把2块硬盘绑在一起,文件被切成两半同时存进去(比如A存“前半段”,B存“后半段”)。
好处:读写速度翻倍(像双人搬砖效率翻倍)。
缺点:任何一块硬盘坏了,所有数据都没了(飙车不系安全带,翻车就惨)。
适合谁:玩大型游戏/剪辑视频需要高速读写,但不怕丢数据的人。
2. RAID 1:双保险模式(安全优先)
原理:2块硬盘互为“镜像”,数据完全复制一份(A存什么,B也存一模一样的一份)。
好处:一块硬盘坏了,另一块还能救命(像双U盘存同样文件)。
缺点:只能用到单块硬盘的容量(2块2TB硬盘只能当1块用)。
适合谁:家庭存照片/视频,宁可浪费空间也不能丢数据的人。
3. RAID 5:均衡模式(安全+容量)
原理:至少3块硬盘,数据和“密码”(校验码)分散存放在所有硬盘上。
好处:
- 任意一块硬盘坏了能恢复数据(像拼图缺一块也能靠密码补全);
- 容量利用率更高(3块2TB硬盘能用4TB,损失1块做备份)。
缺点:需要至少3块硬盘,重建数据时速度较慢。
适合谁:小公司存客户资料、团队协作文件,兼顾安全和成本。
4. RAID 10:豪华组合(高速+安全)
原理:先用2块硬盘做RAID 1备份,再用另外2块做RAID 0提速。
好处:
- 任意一块硬盘坏都能恢复;
- 读写速度接近RAID 0的两倍。
缺点:至少4块硬盘,成本最高(4块2TB硬盘只能用2块的容量)。
适合谁:企业存数据库、银行交易记录等关键数据。
RAID的「隐藏技能」
- 热备盘:预留一块空硬盘当“备用胎”,某块硬盘坏了会自动顶上去。
- 重建数据:换新硬盘后,RAID能自动把数据“复活”,但重建期间NAS性能会下降。
- 控制器:NAS主板上的特殊芯片负责管理RAID,像“指挥官”协调所有硬盘工作。
如何选择RAID模式?
全屏复制
需求 | 推荐RAID模式 | 需要硬盘数 | 实际可用容量 |
最大化速度 | RAID 0 | 2块 | 总容量100% |
数据绝对安全 | RAID 1 | 2块 | 50% |
安全+性价比 | RAID 5 | 3块及以上 | 损失1块容量 |
企业级安全+高速 | RAID 10 | 4块及以上 | 50% |
举个真实场景例子:
- 家庭用NAS存照片和电影:选RAID 1(2块硬盘互为备份);
- 视频剪辑工作室:选RAID 5(3块硬盘,既能防丢数据又能存更多素材);
- 公司财务数据库:选RAID 10(4块硬盘,速度够快还能防两块硬盘同时坏)。
一句话总结
RAID就像给硬盘上保险:
- 要速度 → RAID 0(冒险型);
- 要安全 → RAID 1/5/10(保守型);
- 钱多任性 → RAID 10(土豪型)。
总结
带网络组件的存储器,没有操作页面的电脑。
全屏复制
场景 | 普通移动硬盘 | 云盘(百度网盘) | NAS |
存1000张照片 | 插电脑才能传,易丢失 | 免费版太小,上传慢 | 自动备份,全家随时看 |
团队改方案 | 文件反复发邮件,乱码 | 链接分享麻烦,限速 | 共享文件夹实时协作 |
看4K电影 | 接电视播放卡顿 | 需VIP否则缓冲10分钟 | 局域网传输秒开不卡 |
硬盘坏了 | 数据全丢 | 账号被盗或服务器崩塌 | 多硬盘备份自动修复 |
开发套件调研对象
- nastool:nastool +qBittorrent套件组合方式,全网爬取,自动下载;
- 影牛牛(广州)影音科技有限公司:硬盘版播放机+下载apk
nastool
资料来源:https://zhuanlan.zhihu.com/p/688170308
Nastool是什么?
简单来说就是一个媒体库资源归集整理的工具,可以通过内置搜索引擎,来自动订阅下载影视资源,配合媒体服务器实现观影自动化
安装使用nastool等套件
环境搭建:
系统:Linux(教程演示)
部署docker参考:【保姆级教程】Docker安装教程
部署dockercompose:(可选)
#获取 Docker Compose 的可执行文件
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#添加执行权限
sudo chmod +x /usr/local/bin/docker-compose
#查看版本号
docker-compose --version
第一步:建议先安装媒体服务器
本次用到的是plex服务器
安装教程参考:【保姆级教程】Plex媒体服务器安装详细步骤
第二步:安装qb下载器
使用以下命令从 Docker Hub 上拉取 qBittorrent 镜像:
docker pull linuxserver/qbittorrent #默认最新的镜像
docker pull linuxserver/qbittorrent:14.3.9 #可以指定拉取镜像版本,建议使用14.3.9版本
使用以下命令创建并运行 qBittorrent 容器:
docker run -d \
--name qbittorrent \
-p 8080:8080 \ #默认控制台端口
-e PUID=1000 \ #宿主机用户和组的 ID
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-v /path/to/config:/config \ #替换为你希望存储 qBittorrent 配置文件的本地路径
-v /path/to/downloads:/downloads \ #替换为你希望存储下载文件的本地路径
-v /home/TV/Movies:/downloads_m \ #添加媒体下载路径(配合nastool自动下载分类)
--restart unless-stopped \
linuxserver/qbittorrent
现在可以通过浏览器访问 http://localhost:8080 进入 qBittorrent 的 Web 控制台
默认用户名:admin;密码:adminadmin
进入管理界面,默认语言英语
可以在选项的webui界面,用户界面语言选择:简体中文
拉到窗口最下面,保存即可生效
为配合nastool实现自动下载
需要在选项的下载配置界面,把默认Torrent管理模式“手动”改成“自动”
第三步:安装nastool
目前官方镜像已停更,但不影响使用;
重点:仅限PT用户,需要认证后使用
docker pull nastool/nas-tools:latest #拉取官方镜像
非PT用户建议使用二开版本
docker pull hsuyelin/nas-tools:latest #拉取二开版本镜像
使用以下命令创建并运行 nastool容器:
docker run -d \
--name nas-tools \
--hostname nas-tools \
-p 3000:3000 \ #默认控制台端口
-v /path/to/config:/config \ #替换为你希望存储 nastool配置文件的本地路径
-v /home/TV:/TV \ # 媒体目录,多个目录需要分别映射进来
-e PUID=1000 \ #宿主机用户和组的 ID
-e PGID=1000 \
-e UMASK=000 \ # 掩码权限,默认000,可以考虑设置为022
-e NASTOOL_AUTO_UPDATE=false \ # 如需在启动容器时自动升级程程序请设置为true
-e NASTOOL_CN_UPDATE=false \ # 如果开启了容器启动自动升级程序,并且网络不太友好时,可以设置为true,会使用国内源进行软件更新
hsuyelin/nas-tools
现在可以通过浏览器访问 http://localhost:3000 进入nastool的 Web 控制台
默认用户名:admin;密码:password
进入管理界面后,会跳出个窗口
提示:“请先配置TMDB API Key,并修改登录密码!”
TMDB是什么?
TMDB是一个在线电影数据库和社区平台,提供了有关电影、电视节目、演员、编剧、导演等相关信息的广泛数据库;(国外版豆瓣)
nastool的搜索引擎以及刮削数据主要依赖于TMDB的数据
如何获取TMDB API Key
登录TMDB官网:The Movie Database (TMDB)
用邮箱注册账号并登录
找到个人资料,单击“用户设置”,进入“API”界面
单击“click here”,进入API申请界面
此时会询问需要注册哪种类型的API
单击“Developer”,选择个人开发
确认条款,拉到最下面,点击“接受”
需要填写API的相关信息
个人信息可以如实填写,确认后提交
提交后,基本是马上就会收到回复,并得到API密钥
复制API密钥,保存到nastool即可
同步修改登录密码,重新录入密码,点击保存即可
优先配置下载器
设置——下载器——新增下载器
根据安装的下载器选择对应类型,教程此处选择“qb”
输入对应下载器的访问地址端口和登录信息
建议按图配置区分下载目录,方便后续的管理和刮削
配置完成后,单击左下角的“测试”
配置成功后,会显示测试成功,说明已经成功连接到下载器
确认新增后,刚刚添加的下载器就会出现在页面
点击下载器右上角的“★”,设置为默认下载器
然后点击右上角“下载设置”,进入配置
系统会有个默认的预设配置,会自动加载默认下载器
预设配置无法修改,如有其他需求可以新增下载设置,自定义配置
接着需要配置索引器
单击“内建索引器”,进入配置
索引器:私有&公开
私有:添加站点后,即可在这里显示并选择
公开:自动显示支持的站点
这里单击:“全选”即可
接着配置过滤规则
默认自带“日常观影”&“洗版收藏”&“不过滤”模板,可以直接使用
也可以根据自己需求,新增规则
注意:plex不支持原盘播放,jellyfin&emby支持
接着我们进入订阅管理,配置默认的订阅设置(订阅时可自动带出)
以电影配置为例:
质量&分辨率:默认全部,如有特殊需求可以指定参数,会根据过滤规则下载
过滤规则:默认站点规则,不适用公开;选择其他配置,这里选择“日常观影”
下载设置:默认站点规则,不适用公开;选择其他配置,这里选择“预设”
搜索站点:“全选”
最后就是订阅影视
两种方式:主动搜索&探索榜单推荐
主动搜索:
顶端搜索框输入影视名称,回车搜索即可
鼠标移至搜索结果,单击右下角的“❤”,即可加入订阅
防误触,会有个确认订阅
确认后即可订阅成功,此时的订阅设置是默认设置
可以单击“编辑订阅”,对当前影视重新自定义订阅配置
回到电源订阅页面,可以看到刚刚添加的影视处于搜索状态
探索榜单推荐
展开“探索”,内置6种类型的推荐榜单
可以即时获取当下热门、流行影视资讯,按需求订阅即可
订阅完成后,等待搜索引擎检索资源
如果没有检索到,会定期检索直至下载到资源后关闭订阅
检索到资源:会下发任务到下载器,根据影视类型,下载到对应的目录
第四步:返回plex服务器确认资源加载
下载完成后,回到plex服务器,就可以看到电影已经添加成功
如果没有,可以尝试手动扫描一下
第五步:下载媒体播放器观影
多平台客户端下载参考:【家庭服务器】私有影音服务器怎么玩?
dockercompose配置(参考)
创建配置文件存放目录
sudo mkdir dockercompose
在新创建的文件下,新建配件文件
cd /dockercompose
sudo touch docker-compose.yml
编辑配置文件
sudo nano docker-compose.yml
粘贴下列命令参数(参考)
---
version: "3"
services:
nas-tools:
image: hsuyelin/nas-tools:latest #源版已停更:nastool/nas-tools:latest
ports:
- 3000:3000 #默认的webui控制端口
volumes:
- ./nastools:/config #冒号左边请修改为你想保存配置的路径
- /media/qb:/qb #媒体目录,多个目录需要分别映射进来,需要满足配置文件说明中的要求
environment:
- PUID=1000 #想切换为哪个用户来运行程序,该用户的uid
- PGID=1000 #想切换为哪个用户来运行程序,该用户的gid
- UMASK=022 掩码权限,默认000,可以考虑设置为022
- NASTOOL_AUTO_UPDATE=false #如需在启动容器时自动升级程程序请设置为true
- NASTOOL_CN_UPDATE=false #如果开启了容器启动自动升级程序,并且网络不太友好时,可以设置为true,会使用国内源进行软件更新
- REPO_URL=https://ghproxy.com/https://github.com/NAStool/nas-tools.git #当你访问github网络很差时,可以考虑解释本行注释
restart: always
network_mode: bridge
hostname: nas-tools
container_name: nas-tools
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:14.3.9 #此处推荐下载14.3.9版本
container_name: qbittorrent
restart: unless-stopped
network_mode: host
environment:
- PUID=1000 #注意替换
- PGID=1000 #注意替换
- TZ=Asia/Shanghai
- WEBUI_PORT=8081 #QB webui的端口,你可以换成其他端口
volumes:
- ./qbittorrent2:/config #自定义配置数据路径
- /media/qb:/downloads #自定义下载文件夹
plex:
container_name: plex
image: plexinc/pms-docker
restart: unless-stopped
network_mode: host
environment:
- TZ=<timezone>
- PLEX_CLAIM=<claimToken>
volumes:
- ./plex:/config #自定义配置数据路径
- ./plex/temp:/transcode #自定义临时文件路径
- /media/qb:/qb #自定义媒体库路径
保存退出后,运行dockercompose
sudo docker-compose up -d
开发套件方案
一、项目开发步骤与技术细节
1. 系统架构设计
模块划分
全屏复制
模块 | 子模块 | 技术选型 | 功能说明 |
NAS端 | 下载引擎 |
/ | 处理种子/Magnet/直链下载 |
媒体管理 |
/ 自定义脚本 | 文件整理、元数据生成、海报墙 | |
任务调度 |
/ | 定时扫描新片、触发下载 | |
后端 | API服务 |
(Python) | 提供RESTful接口供App调用 |
数据库 |
/ | 存储用户、任务、订阅数据 | |
前端 | H5界面 |
| 响应式网页管理电影库 |
手机App |
| 跨平台App控制下载任务 | |
安全 | 用户认证 |
| 绑定资源网站账号,验证购买记录 |
内容加密 |
| 本地加密存储,解密播放 |
2. 核心开发任务分解
2.1 自动化下载模块
步骤1:网站内容抓取
-
- 技术:
Selenium
模拟浏览器登录资源网站,解析4K电影页面。 - 代码示例:
- 技术:
python
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.jiyinge.com")
driver.find_element(By.ID, "username").send_keys("user")
driver.find_element(By.ID, "password").send_keys("pass")
# 解析新片列表
new_movies = driver.find_elements(By.CSS_SELECTOR, ".movie-card")
-
- 注意事项:设置随机延迟避免反爬虫,遵守资源网站Robots协议。
步骤2:下载任务触发
-
- 技术:调用
qBittorrent API
添加下载任务。 - 代码示例:
- 技术:调用
python
import qbittorrentapi
qbt = qbittorrentapi.Client(host='localhost', username='admin', password='admin')
qbt.torrents_add(urls="magnet:?xt=urn:btih:...")
步骤3:文件整理与元数据生成
-
- 技术:使用
TheMovieDB API
生成 NFO 文件。 - 代码示例:
- 技术:使用
python
def generate_nfo(movie_name):
data = fetch_tmdb_data(movie_name)
with open(f"{movie_name}.nfo", "w") as f:
f.write(f"<title>{data['title']}</title>\n<year>{data['year']}</year>")
2.2 后端API开发
- FastAPI 接口示例:
python
from fastapi import FastAPI, Depends, HTTPException
from pydantic import BaseModel
from typing import List
app = FastAPI()
class DownloadTask(BaseModel):
url: str
type: str # seed/magnet/direct
@app.post("/download")
def start_download(task: DownloadTask, token: str = Depends(verify_jwt)):
if task.type == "magnet":
qbt.torrents_add(urls=task.url)
return {"status": "success"}
2.3 手机App开发
- React Native 通知推送:
javascript
// 使用 Firebase 实现下载完成推送
messaging().onMessage(async remoteMessage => {
Alert.alert('下载完成', remoteMessage.notification.body);
});
2.4 H5前端开发
- Vue.js 页面结构:
vue
<template>
<div>
<input v-model="searchQuery" placeholder="搜索电影..." />
<div v-for="movie in movies" :key="movie.id">
{{ movie.title }} - {{ movie.year }}
<button @click="downloadMovie(movie)">下载</button>
</div>
</div>
</template>
3. Docker部署方案
docker-compose.yml
yaml
version: '3.8'
services:
qbit:
image: linuxserver/qbittorrent
ports: ["8081:8081"]
volumes: ["./downloads:/downloads"]
jellyfin:
image: jellyfin/jellyfin
ports: ["8096:8096"]
volumes: ["./movies:/media"]
backend:
build: ./backend
ports: ["8000:8000"]
depends_on: ["qbit", "jellyfin"]
frontend:
build: ./frontend
ports: ["80:80"]
depends_on: ["backend"]
二、可运行Demo指南
1. Demo功能
- 自动抓取资源网站新片并下载。
- 手机App/H5实时查看下载进度。
- 下班前添加电影,回家后自动完成下载并整理到Jellyfin。
2. 快速启动
- 克隆项目:
bash
git clone https://github.com/yourname/nas-cinema.git
cd nas-cinema
- 启动服务:
bash
docker-compose up -d
- 访问:
-
- H5界面:
http://nas-ip:80
- qBittorrent控制台:
http://nas-ip:8081
- Jellyfin媒体库:
http://nas-ip:8096
- H5界面:
三、用户使用白皮书
1. 安装指南
步骤1:NAS环境准备
- 确保NAS支持Docker(如群晖DSM 7.0+)。
- 安装Docker Compose:
bash
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
步骤2:部署套件
- 上传项目文件到NAS,执行:
bash
docker-compose up -d
2. 配置资源网站账号
- 登录H5界面(
http://nas-ip:80
),绑定资源网站账号。 - 验证购买记录以确保合规下载。
3. 使用场景操作指南
场景1:自动下载新片
- 在App中订阅类型(如科幻/动作)。
- 系统定时扫描资源网站新片,自动下载并整理到Jellyfin。
场景2:远程管理下载队列
- 在办公室打开手机App,添加《XXX 4K》下载任务。
- NAS自动触发下载,实时查看进度条。
场景3:回家即享电影
- 下班前在App中添加电影,设置优先级。
- 到家后,电影已整理完成,通过Jellyfin播放。
资料:
【高阶教程】Nastool打造全自动追剧影音服务器https://zhuanlan.zhihu.com/p/688170308
nas通俗理解:小白入门NAS—快速搭建私有云教程系列(一)[通俗易懂]-腾讯云开发者社区-腾讯云
NAS 部署内网利器,文档/聊天/办公工具轻松搞定:https://zhuanlan.zhihu.com/p/1918712768493762350
手把手教你在群晖NAS上玩转Docker应用安装:https://zhuanlan.zhihu.com/p/1923859114255184526
如何远程访问家里的NAS?简单快速实现将本地内网IP端口让公网互联网异地连接如何远程访问家里的NAS?简单快速实现将本地内网IP端口让公网互联网异地连接_nas怎么远程访问-优快云博客
没有公网ip如何实现外网远程访问nas?怎样在外面访问家里内网nas?