前言
已经时隔很久没有写文章了,正好今天4T硬盘也到了,NAS组建也算完成一部分了,趁这个时间来完善一下搭建之路,当然,服务器还是老面孔了E5V3+32G
可以看我之前写的文章写给想要捡垃圾组装服务器的新(zi)手(ji) 闲置服务器当然是要利用起来啦,就像做人呢,最重要的是开心啦(好像并没有什么关系)
整体网络布局
整体都是比较简单的,(家用设备没那么多) 小米ax6000的路由器个人感觉已经很能打了。 小米的物联网设备配合app真的挺好用,开空调不用遥控器(缺点是没网的时候又找不到遥控器你就等着被蒸吧) 楼上还布置了一套电竞设备风 楼下客厅则是正常的电视+游戏机+游戏pc3
为什么要选择NAS?
这个问题一直在问自己,在目前网盘、在线资源盛行的时代 还需要自己去折腾一套NAS吗?我觉得可以列出下面的几个场景
- 我需要不同的设备直接分享同步文件 比如pc下好小说 同步到手机,手机的视频资源同步到电脑
当然这个场景可以用微信传输助手、网盘进行解决,不过要考虑一下网速的问题(上传速度500kb)尤其是拍好的视频资源想快速剪辑的情况下,这个绝对会折磨死你,并且外网的上次速度会影响其他的设备正常上网冲浪
- 拍好的视频、照片、文件持续化保存、并且能快速分享来到家里的朋友
持续化保存这个场景好解决,自己的电脑硬盘够大就好了,不过要做到快速分享不是一件容易的事情,我们考虑一下,没有NAS的情况,我应该先打开电脑,找到文件,然后上传百度云/微信助手,等做完后,朋友已经在happy了,而你还在打开电脑(doge保命)。那有NAS的情况,只需要让朋友的手机连接网络即可,真正做到随时非随地预览
- 持续化下载+厌倦了删减
《你永远也不知道为什么会少一段》,《为什么弹幕都在说评论区见?》 有挺多资源看到的并不是完整版本,并且有些新番还看不到,正常去搜罗这些资源会花费大量的时间,并且打开网站后会有一堆的广告+小圈圈转个不停(web host网速慢),于是乎,同样的时间 我为什么不搭建一套持续化下载工具存到我的NAS里呢?
- 利用好闲置设备
买了树莓派->发个朋友圈->ssh安装个linux->吃灰。 买了个服务器->变成游戏pc->AMD大法好->性能跟不上,升级要等新的一波洋垃圾。 如果你也有这样的闲置设备 不妨整一套NAS来玩玩。
- 游戏下载一次就好
我有3台pc,无NAS情况每台pc都需要下载一次游戏安装包,通过NAS我只需要在NAS下载好即可,每台电脑走内网复制即可(1000M 内网速率比外网快多了)
我该如何选择NAS载体设备
讲真,群晖等NAS厂商已经做到部署一套家庭NAS非常简单了,如果你不想折腾,其实入手现有厂商的是最好的选择。 如果你,喜欢折腾、喜欢捡垃圾(开局一人一主板,设备全靠捡)、花一点小钱折腾多一点用户,你不妨可以考虑自己整一套server+NAS+软路由等。 当然还需要你有点电脑基础知识,比如linux是什么、ssh是什么、虚拟机是什么、编译是什么。 废话不多说,下面开始整(本文是组建完后写的,可能有一些记录缺失,我尽量会放上我当时找到的教程原文,大家也可以去选择看原文解决问题)
服务器的组建
这步见我之前捡垃圾的文章即可写给想要捡垃圾组装服务器的新(zi)手(ji) 不过过了三年 我还想说几句
- 性能够吗?
性能党退散!用他打游戏肯定不够,不过过了这么久 我发现我的cpu就没100%持续很久过。平常都是10%-30%左右 2. 服务器能扩展吗? 这套主板的内存插槽我只插过两条16GB,pci插槽还可以装个显卡用来做转码,SATA9个口我只用了3个,网口4个我只用了1个,对我来说,扩展性和性能都还没达到这套服务器应有的价值 3. 扩展便宜吗? 当然便宜!我们图吧捡垃圾党可不是浪得虚名,内存坏了不心疼 ddr4+2133mhz+16g只需要200大洋、4T硬盘400大洋。cpu 200一个,主板用好一点即可 目前我还没遇到坏的设备,可能内存有一条有点问题 后期换掉就行。硬盘一定要组raid1,仓库盘可以basic(不组)
服务器系统选择
看了很多资料 大多推荐的是KVM,而我推荐的是window server,为什么?
- 远程桌面随时链接
- GUI界面好维护
至于其他的在我看来差不多,用windows server主要还是方便,hyper-v也支持显卡直通/虚拟化
安装
msdn.itellyou.cn/ 下载好镜像文件(windows server 2019 或者 2019+) 再准备一个u盘(16g即可) 最详细简单U盘装系统--小白必看 刻录好pe,接着再直接复制下载好的文件进u盘 开机F12选择U盘启动 进入PE系统后先格式化硬盘+分区(硬盘模式用GPT模式支持>2T硬盘) 选择镜像安装,选择好下载好的镜像文件。 等待安装后会自动重启电脑,这个时候可以拔出U盘就行。 按照windows指引安装好,不用登录微软账号,密码设置复杂一点,字母+数字+符号>16位
分区tips
我用的是raid1,后面加了basic 4t,所以是有两块磁盘的 raid1 建议分区为C盘(200G)做系统盘,剩下的分配到D盘做资料盘, basic 全部分配到E盘做仓库盘
设置远程桌面
- 【Windows Server 2019】远程控制的配置与管理
- 在 Windows Server 2016 中开始使用远程桌面服务
- Windows Server 2019远程桌面服务配置和授权激活 >2用户远程链接可看
这一步时间有点久远了,如果没把握就随时准备好一台显示器吧. 如果没有两个人同时访问的话 我建议直接选择第一个开启远程桌面访问即可,>2用户设置起来太折腾了
接着改好你的远程端口访问号 更改计算机上的远程桌面的侦听端口
看完这堆资料后 如果还有不懂 可以求助谷歌/百度及朋友 还有各大网友
开启hyper-v
在 Windows 10 上安装 Hyper-V 直接看官方的windows 10开启即可,windows server2019后操作跟win10差不多,哦对,你的主板要开启虚拟化 要不然是没办法启用hyper-v的
NAS系统选择
【NAS】开源 NAS 操作系统不完全汇总 我安装过freeNAS,安装也成功了,但是那一套复杂的ACL权限控制系统让我头晕 以及看了官网的一堆文档后 还是没办法指定用户访问 于是我选择了更加轻量小巧一点的OpenMediaVault,安装简单、管理简单、维护简单,强烈建议
下载
www.openmediavault.org/ 来到download页面,我用的是5.6版本,6没试过,这里我也先建议搭建用5.x版本 稳定一点 选择下载 Old Stable,下载好后是个iso文件,复制到服务器的某个硬盘里 因为我们用的是hyper-v 所以不需要看网上那么多的安装教程
hyper-v安装OMV
Hyper-V使用经历(虚拟机安装Linux) openmediavault安装 OMV是基于Debian系统的,所以我们只需要参考HYPER-V安装Debian的教程即可 建议安装的时候分配最大cpu+8G内存 这样一开始安装会快一点。 安装的时候磁盘分配不用太大,200G即可(vm磁盘选择D盘即可,后面我们还要挂载basic的),我安装选择的是1代虚拟机(兼容性好一些) 安装比较简单,OMV做了系统指引。安装完毕后先关闭虚拟机,判断安装完毕直接看有没有linux命令行界面出现即可
安装后设置hyper-v网络
正常hyper-v是通过服务器NAT访问的,这里就会有问题,比如NAT后 NAS服务器得到的ip是172.16.1.x 而我们路由器分配的网段是192.168.31.x这样是没办法从外部访问到我们的NAS系统的,所以要设置好对应的网络,设置也很简单 如果没有网络的话 则新建外部网络即可,外部网络选择你的网口网卡就行
安装后挂载basic磁盘
IDE控制器被我用满了,用scsi控制器就行,新建硬盘 选择E盘,硬盘大小我一般都是设置为full size即4T全部给了,当然硬盘到手实际上就3.6T我建议大家分配3.5T左右就差不多。
启动系统
这个时候就可以启动系统了,如果不出意外的话 你应该可以访问到NAS了,但是,你不知道NAS的ip地址是多少,这个时候你可以选择
- 路由器列表看看新加入的设备ip
- NAS执行命令行
先说执行命令行ifconfig
通过hyper-v连接进去后 输入账号密码(在安装步骤会让你设置root密码),找到那一串192.168.31.x后就是你的NAS访问ip。 先别急访问,接着去路由器列表 设置DHCP静态IP分配,这一步会让你的NAS IP永远保持固定 小米路由器的在 往下滑动,选择添加,接着选择一键绑定即可
连接OMV服务器tips
- 可以选择用ssh工具 比如FinalShell 或者electream 进行连接
访问OMV WEB控制台
直接在浏览器输入刚刚的ip(如果在外部访问不了,请确认你的windows server的网络是专用网络,并且当前访问的设备网络也是专用网络,如果确认后还是不能访问请关闭windows server对应的防火墙等) 默认的账号密码是admin/openmediavault 可以进入控制台后自行变更。
OMV设置磁盘挂载
先去磁盘界面看到我们有几块磁盘。 其他的设置可以先不看,来到文件系统,点击新建 选择我们挂载的basic磁盘,选择EXT4文件格式的即可,等待格式化,格式化完毕后点击挂载按钮即可
OMV设置用户权限
如果没有用户就新建用户,用户组勾选上users, adm, sambashare 如果你就自己用NAS可以勾选上root权限组 tips 如果发现可以正常访问NAS文件但是无法删除,可以加root权限 或者去对应的文件夹cd /srv/挂载的磁盘名称
执行chmod -R 777 *
开最大文件夹权限
OMV设置共享文件夹、NFS、SMB共享
我一般会开最大权限,内网访问也不怕,除非你把你们家WIFI密码共享出去了,建议有条件的开朋友网络,设置不是一个ip段和ip隔离,名称记得用英文 路径会自动带入 不建议跟我一样用/做路径 至少也是/movie
等
选择我们刚刚的文件夹,权限给读写
选择允许访客(这样不用每次输入密码)
外部访问NAS
打开另一台windows电脑,网络记得调整到专用网络, 打开文件夹,选择我们的NAS设备 出现这个问题不要慌,能看到就行,这个问题基本上你在当前界面多刷新几次就行 最终就能看到我们的NAS挂载的文件夹
NAS基建搞定
到这一步你的NAS基建已经搞定了,至少可以满足文件快速分享和存储了对吧...但是这才是第一步,折腾很累对吧,不妨考虑把剩下的行为拆成好几个步骤,毕竟完善剩下的行为后 你的观影体验会得到直线提升
EMBY 家庭媒体管理
为什么需要他? 当你下了很多电影后,你会选择怎么观看呢?从NAS复制到本地?还是直接双击NAS挂载文件夹内的电影文件?PC可以这样做,但是我的ipad、surface平板呢?并且那么多的电影 那么多的文件夹 我都得找个半天,有没有一种方便快捷的管理软件呢?这就是EMBY
安装
emby.media/linux-serve… 选择Debian系统进行下载
Download emby-server-deb_4.7.2.0_amd64.deb
dpkg -i emby-server-deb_4.7.2.0_amd64.deb
Open a web browser to http://localhost:8096
复制到NAS系统中后 执行dpkg -i emby-server-deb_4.7.2.0_amd64.deb
一键安装即可,免费使用,有付费版,付费版可以后期酌情开通
访问
默认端口是8096http://NASIP:8096/
按照指引安装完毕后即可体验使用了, 去后台控制面板选择媒体库 选择对应的文件夹添加即可 原创 篇三:家庭多媒体中心软件 Emby 介绍 后面记住上面的链接 即可手机、pc、ipad访问了,如果家里有多人用 可以选择去后台添加额外的用户避免某些看电影的进度会被干扰
aria2 远程下载器
当你做完上面两步后实际上可以达到一个比较良好的观影体验了,但是还没解决一个问题就是 我该怎么下载电影/资源?难不成我用电脑每次下载后 手动复制进NAS文件夹内?这个时候可以考虑在NAS服务器内部署aria2远程下载器,种子下载器也是一样的道理
安装
github.com/aria2/aria2… 下载选择aria2-1.36.0.tar.gz
格式
复制到NAS系统文件夹内 解压
tar xf aria2-1.36.0.tar.gz
cd aria2-1.36.0/
接着就开始build吧,不过因为OMV默认安装的是一个最小化的Debian系统,很多的编译环境都没有 (当时安装了很多,可能这步会有漏缺,欢迎查漏补缺)
apt-get install libxml2-dev libcppunit-dev autoconf automake autotools-dev autopoint libtool g++ make
apt-get install openssl
apt-get install gnutls
apt-get install libgnutls-dev
apt-get install libssl-dev
./configure
make && make install
正常来说到这一步就已经安装好了,但是!aira2是cli 也就是命令行工具 要记住那些参数 指令太麻烦了,于是就有web端的可视化管理工具
airaNG安装
安装screen
众所周知 我们断开ssh后 tty就会消失,也就是进程不会继续执行,于是我们需要screen来帮我们断开后还能继续执行,当然管理工具很多,node的pm2也可以,linux本身写个服务也可以,在这里我只是为了图个方便
apt-get install screen
下载ariaNG
github.com/mayswind/Ar… 下载 AriaNg-1.2.4-AllInOne.zip 这个包,所有的都打包进一个index.html方便后面操作
这一步可以选择在本地解压了 然后直接丢到NAS去 也可以上传zip包到NAS解压 只不过需要装apt-get install zip unzip
启动ariaNG
其实在启动的时候 你有两种选择
- 在NAS启动
- 在本地启动
在NAS内启动可以做到持久化
node&http-server安装
那么一个index.html文件该如何预览呢?我选择的是node的http-server,当然 如果你熟悉nginx等 估计也不用看这步 用nvm.sh安装可以免去很多环境变量和版本切换的配置 nvm.sh/
apt-get install wget
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
访问github网络不好的童鞋...我也没啥办法这步就得自行解决啦比如通过v*ray+proxy 配置linux全局下载,或者放弃nvm安装 选择直接安装node 懒得折腾的可以直接安装nodeLinux 如何安装 nodejs
安装好node后执行node -v
应该能看到你的版本,建议node版本>=14.x即可,接着安装http-server
npm install http-server -g
真正启动aria
screen -S ariang
cd aria2-web # 这一步是你上传index.html在的文件夹 我是上传至aria2-web
http-server
这个时候屏幕应该会显示如下信息 这个时候你可以访问http://ip:8080
来看到aria2界面
aria2配置
这个时候你会发现你还链接不上,那是因为你虽然启动了ariang但是还没启动aria2命令行,在启动aria2命令行之前你需要做一些配置,或者直接把下面的配置进行修改保存,记得更改dir这个路径为你的NAS磁盘路径和rpc-secret这个密钥
## '#'开头为注释内容, 选项都有相应的注释说明, 根据需要修改 ##
## 被注释的选项填写的是默认值, 建议在需要修改时再取消注释 ##
## 文件保存相关 ##
# 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置
dir=/srv/dev-disk-by-uuid-309e5bed-9ad9-498c-ae41-964c91efdf14/download
# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
#disk-cache=32M
# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
# 预分配所需时间: none < falloc ? trunc < prealloc
# falloc和trunc则需要文件系统和内核支持
# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项
#file-allocation=none
# 断点续传
continue=true
## 下载连接相关 ##
# 最大同时下载任务数, 运行时可修改, 默认:5
max-concurrent-downloads=100
# 同一服务器连接数, 添加时可指定, 默认:1
max-connection-per-server=5
# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=10M
# 单个任务最大线程数, 添加时可指定, 默认:5
#split=5
# 整体下载速度限制, 运行时可修改, 默认:0
#max-overall-download-limit=0
# 单个任务下载速度限制, 默认:0
#max-download-limit=0
# 整体上传速度限制, 运行时可修改, 默认:0
#max-overall-upload-limit=0
# 单个任务上传速度限制, 默认:0
#max-upload-limit=0
# 禁用IPv6, 默认:false
#disable-ipv6=true
# 连接超时时间, 默认:60
#timeout=60
# 最大重试次数, 设置为0表示不限制重试次数, 默认:5
#max-tries=5
# 设置重试等待的秒数, 默认:0
#retry-wait=0
# disabled https auth
check-certificate=false
## 进度保存相关 ##
# 从会话文件中读取下载任务
input-file=/etc/aria2/aria2.session
# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
save-session=/etc/aria2/aria2.session
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
save-session-interval=1
## RPC相关设置 ##
# 启用RPC, 默认:false
enable-rpc=true
# 允许所有来源, 默认:false
rpc-allow-origin-all=true
# 允许非外部访问, 默认:false
rpc-listen-all=true
# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
#event-poll=select
# RPC监听端口, 端口被占用时可以修改, 默认:6800
#rpc-listen-port=6800
# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
rpc-secret=123456
# 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-user=<USER>
# 设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-passwd=<PASSWD>
# 是否启用 RPC 服务的 SSL/TLS 加密,
# 启用加密后 RPC 服务需要使用 https 或者 wss 协议连接
#rpc-secure=true
# 在 RPC 服务中启用 SSL/TLS 加密时的证书文件,
# 使用 PEM 格式时,您必须通过 --rpc-private-key 指定私钥
#rpc-certificate=/path/to/certificate.pem
# 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件
#rpc-private-key=/path/to/certificate.key
## BT/PT下载相关 ##
# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
#follow-torrent=true
# BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999
listen-port=51413
# 单个种子最大连接数, 默认:55
#bt-max-peers=55
# 打开DHT功能, PT需要禁用, 默认:true
enable-dht=false
# 打开IPv6 DHT功能, PT需要禁用
enable-dht6=false
# DHT网络监听端口, 默认:6881-6999
#dht-listen-port=6881-6999
# 本地节点查找, PT需要禁用, 默认:false
#bt-enable-lpd=false
# 种子交换, PT需要禁用, 默认:true
enable-peer-exchange=false
# 每个种子限速, 对少种的PT很有用, 默认:50K
#bt-request-peer-speed-limit=50K
# 客户端伪装, PT需要
peer-id-prefix=-TR2770-
user-agent=Transmission/2.77
peer-agent=Transmission/2.77
bt-max-peers=30
bt-tracker-interval=60
bt-seed-unverified=true
# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
seed-ratio=0
# 强制保存会话, 即使任务已经完成, 默认:false
# 较新的版本开启后会在任务完成后依然保留.aria2文件
#force-save=false
# BT校验相关, 默认:true
#bt-hash-check-seed=true
# 继续之前的BT任务时, 无需再次校验, 默认:false
bt-seed-unverified=true
# 保存磁力链接元数据为种子文件(.torrent文件), 默认:false
bt-save-metadata=true
复制上面的文件保存至arar2.conf
接着在.bashrc
文件写入别名方便启动
vi ~/.bashrc
写入alias aria2s='aria2c --conf-path=/root/aria2.conf'
接着保存.bashrc文件,不熟悉的可以通过sftp连接上去编辑
刷新环境变量 source ~/.bashrc
接着开启aria2
screen -S aria2
aria2s
访问
输入http://ip:8080
来到设置页,输入你在aria配置文件中配置的密钥,随后就开始享受aria2下载吧
最终成果
折腾到这里其实已经初步完成了一个比较舒服的下载+共享+观影环境了,不过还可以做更多的事情比如
- 小米等安卓系统电视机如何连接emby?
这个答案是kodi,不过折腾起来太麻烦了,涉及到cpu版本问题 有些电视机不支持16版本以上的kodi,这里可以用ipad等平板投屏会更加方便一些,kodi的折腾已经有很多值友写的很清楚了,不过得准备好一个u盘 2. 目前这些都只是在我的内网访问,我如果出差了,但是又想看我内网里的电影怎么办呢? 这个时候可以可以考虑 (1)如果有公网ip的话,结合阿里云DNS写个轮询DNS解析工具(目前我已经写了 node版本的 有需要的可以联系我) (2)如果没有公网ip的话,买一台云服务器,云服务器设置流量付费,通过部署nps内网穿透出去,0.8元/gb。目前这种是最方便的了,后面有空再补一篇
来看看最终的成果吧
后记
本次折腾来来回回花了一周(工作日白天要work),本文更加是一种记录和导读格式,中间省略了一些细节,如果有忽略的可以留言后面进行补充。 本文使用了surface go2+markdown+notepad++完成,入手了surface go2后发现某些时候不想拿macbook的场景又想写点东西真的是太方便了,朋友正好也入手了一台surface pro6,后续有机会写一下surface go2的便利性及生产力