搭建家庭NAS服务器的解决方案

NAS是什么

本书目的

准备工作:一台旧笔记本电脑,一块硬盘下载,一块存数据。树莓派4。功耗较小的旧电脑。成品NAS。 有一台老古董,扔了可惜,

  1. 域名准备

  2. 安装操作系统:Ubuntu 18.04 OMV比较

  3. 宝塔面板与LNMP

  4. 私有云:Seafile nextcloud比较

  5. 可道云 kodcloud

  6. Calibre-Web

  7. Aria2与AriaNg

  8. Transmission

  9. Samba Server

  10. Emby Server/plex 视频服务器 影片的重命名工具的用法介绍。

  11. 手机照片自动备份

  12. 光猫设置,动态域名,端口映射

  13. 内网穿透 http://service.oray.com/question/4287.html

末篇 进阶篇

  1. 安全测试

  2. UPS

域名准备

  • 图书库 books.redtux.cn
  • Aria2下载 aria.redtux.cn
  • 私有云 cloud.redtux.cn

安装操作系统:Ubuntu 18.04

网络安装,下载http://cdimage.ubuntu.com/netboot/18.04/ 网络安装镜像mini.iso刻盘安装,安装的过程中需要保持网线接通。

安装的时候固定IP为192.168.31.8/24

系统安装完成,第一件事是更换源。

最新阿里云软件源Ubuntu 18.04源

https://www.jianshu.com/p/16502ed02e29

宝塔面板与LNMP

宝塔面板的官方网站点此进入,Linux免费版页面 https://www.bt.cn/download/linux.html,确保是干净的操作系统,没有安装过其它环境带的Apache/Nginx/php/MySQL,Ubuntu一键安装脚本:

wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh

接下来就等着安装完成。安装完成后会显示入口网址和用户名密码。

使用浏览器登录,接下来安装LNMP,建议安装Nginx1.15,MySQL5.5,PHP7.1。

安装完成进入面板设置:

端口:9088
安全入口:redtux_nas
默认建站目录:/www/htdocs
面板用户:redtux_bt
面板密码:2ci3cyRYRcyJu5B

Bt-Panel: http://192.168.31.8:9088/redtux_nas
username: redtux_bt
password: 2ci3cyRYRcyJu5B

进入数据库栏

设置root密码

Root   Zn8kLZGYYSykNphd6mY
Redtux HuJiawei4MySQL
Seafile HuJiawei4MySQL

私有云:Seafile;

Seafile 是一款开源的企业云盘,注重可靠性和性能。支持 Windows, Mac, Linux, iOS, Android 平台。支持文件同步或者直接挂载到本地访问。分免费版和专业版,专业版免费支持3用户,家庭使用也够了。专业版下载需访问官方英文网站注册下载。

安装Seafile的相关教程:

为Seafile新建一个用户,并加入sudo组,以后就用此用户运行seafile服务。

xxx@xxxx:~$ sudo useradd -d /www/seafile -m -s /bin/bash seafile
xxx@xxxx:~$ sudo passwd seafile       #密码设置为:MhCRKdJcWX26XCBA
xxx@xxxx:~$ cat /etc/group|grep sudo
sudo:x:27:
xxx@xxxx:~$ sudo usermod -G 27 seafile

以seafile用户登陆系统,

xxx@xxxx:~$ pwd
/www/seafile
xxx@xxxx:~$ mkdir server
xxx@xxxx:~$ cd server
xxx@xxxx:~$ wget url
xxx@xxxx:~$ tar -zxcf seafile-server-pro.tar.gz
xxx@xxxx:~$ mkdir installed
xxx@xxxx:~$ mv seafile-server-pro.tar.gz ./installed

安装依赖

xxx@xxxx:~$ sudo apt-get update
xxx@xxxx:~$ sudo apt-get install python2.7 libpython2.7 python-setuptools python-imaging python-ldap python-urllib3 ffmpeg python-pip python-mysqldb python-memcache
xxx@xxxx:~$ sudo apt-get install default-jre

开始安装Seafile

xxx@xxxx:~$ cd /www/seafile/server/seafile-server-pro
xxx@xxxx:~$ ./setup-seafile-mysql.sh  #运行安装脚本并回答预设问题
xxx@xxxx:~$ ./seafile.sh start # 启动 Seafile 服务
xxx@xxxx:~$ ./seahub.sh start  # 启动 Seahub 网站 (默认运行在8000端口上)

7.0.x 版本之后,8000端口默认监听在127.0.0.1地址上,这意味着您无法直接通过8000端口访问Seafile服务。 我们通过修改conf/gunicorn.conf修改为:

# default localhost:8000
bind = "0.0.0.0:8001"

这样我们就能通过浏览器访问以下地址:

http://192.168.31.8:8000/

你会被重定向到登陆页面. 输入管理员用户名和密码即可进入网盘Web界面。

如果在执行./seahub.sh start时启动失败,我们可以执行./seahub.sh start-fastcgi来查看失败细节,有可能因为Python的缓存目录权限问题导致无法启动,我们只需要更改权限即可。

开机自启动 Seafile

创建 systemd 服务文件 /etc/systemd/system/seafile.service

xxx@xxxx:~$ sudo vim /etc/systemd/system/seafile.service

文件内容如下:

[Unit]
Description=Seafile
# add mysql.service or postgresql.service depending on your database to the line below
After=network.target mysql.service

[Service]
Type=oneshot
ExecStart=/www/seafile/server/seafile-server-latest/seafile.sh start
ExecStop=/www/seafile/server/seafile-server-latest/seafile.sh stop
RemainAfterExit=yes
User=seafile
Group=seafile

[Install]
WantedBy=multi-user.target

创建 systemd 服务文件 /etc/systemd/system/seahub.service

xxx@xxxx:~$ sudo vim /etc/systemd/system/seahub.service

文件内容如下:

[Unit]
Description=Seafile hub
After=network.target seafile.service

[Service]
# change start to start-fastcgi if you want to run fastcgi
ExecStart=/www/seafile/server/seafile-server-latest/seahub.sh start
ExecStop=/www/seafile/server/seafile-server-latest/seahub.sh stop
User=seafile
Group=seafile
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

然后需要重新加载 systemd 的守护进程:

xxx@xxxx:~$ sudo systemctl daemon-reload

Seafile 专业版服务器支持在线预览 office 文件,配置方法如下。

安装 Libreoffice/UNO

Office 预览依赖于 Libreoffice 4.1+ 和 Python-uno 库。

sudo apt-get install libreoffice libreoffice-script-provider-python poppler-utils

sudo apt-get install ttf-wqy-microhei ttf-wqy-zenhei xfonts-wqy

开启配置项

打开 conf/seafevents.conf, 添加:

[OFFICE CONVERTER]

enabled = true

保存 seafevents.conf 后,重启 Seafile 服务 ./seafile.sh restart

详细部署教程可访问官方手册:https://cloud.seafile.com/published/seafile-manual-cn/deploy/using_mysql.md

Calibre-Web

Calibre-Web是一个利用Calibre创建的库提供web服务的工具,他是从Calibre自带的server移植过来的,同样基于Python。项目的Github地址https://github.com/janeczku/calibre-web

  1. 访问项目发布页,下载最新发布版本上传到服务器。
  2. 安装项目依赖库pip install --system --target vendor -r requirements.txt
  3. 执行命令:python cps.py 或者 nohup python cps.py启动服务。
  4. 宝塔面板放行8083端口,浏览器访问服务器8083端口。
  5. 设置Calibre书库位置,即包含metadata.db文件的路径。
  6. 登录界面登录,账号:admin;密码admin123

Aria2与AriaNg

安装

sudo apt-get install aria2
sudo mkdir /etc/aria2    #新建文件夹
sudo touch /etc/aria2/aria2.session    #新建session文件
sudo chmod 777 /etc/aria2/aria2.session    #设置aria2.session可写
sudo vi /etc/aria2/aria2.conf    #创建配置文件

配置

aria2.conf文件配置

## '#'开头为注释内容, 选项都有相应的注释说明, 根据需要修改 ##
## 被注释的选项填写的是默认值, 建议在需要修改时再取消注释  ##

## 文件保存相关 ##

# 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置
dir=/home/x/Downloads
# 启用磁盘缓存, 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=5
# 同一服务器连接数, 添加时可指定, 默认: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

## 进度保存相关 ##

# 从会话文件中读取下载任务
input-file=/home/x/aria2/aria2.session
# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
save-session=/home/x/aria2/aria2.session
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
#save-session-interval=60

## 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=你的密码
# 是否启用 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
# 当种子的分享率达到这个数时, 自动停止做种, 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

以下4项需要修改

  1. rpc-secret=你的密码,把‘你的密码’改为你的密码即可
  2. dir=/home/x/Downloads 将路径改为你的下载目录
  3. input-file=/home/x/aria2/aria2.session改为你的aria2.session路经
  4. save-session=/home/x/aria2/aria2.session改为你的aria2.session路经

BT相关配置

如果能弄懂上面的配置方法,那么恭喜你,Aria2对你来说就没有难度了。下面就针对BT下载来修改几个必要的相关参数。

首先需要明确的是,你要用Aria2下BT还是PT。因为BT是开放环境的P2P,需要跟迅雷等流氓软件抢连接,所以要设置的凶狠一点;而PT是封闭环境的P2P,只要在封闭环境中与其他人建立连接,没有各种流氓软件抢线,所以要设置的温柔一点。下面的各项参数都会按BT和PT分别提供两种设置建议。

  1. 单个种子最大连接数, 默认:55
    bt-max-peers=999
    此项无论BT还是PT都建议设到999,要想下载速度快,种子连接多多益善

  2. 打开DHT功能, PT需要禁用, 默认:true
    enable-dht=true
    此项PT下载必须设为false,否则有封号风险。BT下载务必设为true,跟流氓软件抢连接全靠它。

  3. 本地节点查找, PT需要禁用, 默认:false
    bt-enable-lpd=true
    此项PT下载必须设为false,否则有封号风险。BT下载可以设为true,个人认为提升连接的能力并不强,但总好过没有吧。
  4. 种子交换, PT需要禁用, 默认:true
    enable-peer-exchange=true
    此项PT下载必须设为false,否则有封号风险。BT下载务必设为true,可以连接到更多种子。
  5. 客户端伪装, PT需要
    #peer-id-prefix=-TR2770-
    #user-agent=Transmission/2.77
    此两项PT下载需要将前面的#去掉使其生效,BT下载保留#。因为目前大多数PT站点的规则中不认可Aria2作为下载软件,所以PT下载时需要将Aria2伪装为Transmission。

以上参数按需要修改,其他的保持默认即可。

启动

sudo aria2c --conf-path=/etc/aria2/aria2.conf

如果没有提示错误,按ctrl+c停止运行命令,转为后台运行:

sudo aria2c --conf-path=/etc/aria2/aria2.conf -D

配置AriaNg

下载AllInOne版,只有一个index.html文件。

https://github.com/mayswind/AriaNg/releases

在宝塔面板中新建一个网站,将下载的index.html文件上传到网站根目录。

到宝塔面板的 “安全” - “防火墙”中放行 6800 端口。

浏览器访问刚刚配置的网站,即可进入AriaNG管理界面。

下载提速

如果是用Aria2做BT下载,那么还需要在配置文档的最后增加一个参数:bt-tracker=。此参数是为Aria2提供额外的tracker服务器,从而让Aria2有机会建立更多的连接,从而提升下载速度。tracker服务器是一个个的网络节点,储存着所有下载者的下载信息,理论上连接越多的tracker也就意味着连接到更多的种子。

但怎么找tracker服务器呢?难道用百度?别急,这边提供一个每天更新tracker列表的网页给你。点我进入

无视整页的英文,翻页到下面找到Tracker List,这边每天会自动更新tracker列表,还会区分HTTP、UDP、ip和域名类的等等,但其实只要用到tracker_best的20个就够了。把页面或者文件中的网址全部复制下来,粘贴到Aria2配置文档中的bt-tracker=后面,然后把每个网址之间用英文逗号隔开。

上面提到DHT有缓存,是这样滴,和很多BT客户端一样,Aria2有个dht.dat文件(开启ipv6还有个dht6.dat),这玩意用于存储一种叫做DHT Routing Table的东西,DHT网络由无数节点组成,你接触到一个后能通过它接触到更多的节点,Aria2我记得是有内置的节点,但是!如果你在Aria2第一次运行的时候直接下载磁力链接或者冷门种子,你很可能遇到连MetaData都无法获取的情况,这就是因为第一次只是初始化dht.dat文件,你本地不存在DHT Routing Table的缓存,所以你无法从DHT网络中获取足够的数据。

那么怎么办?我的建议是,找个热门种子(千万建议是种子,而不是磁力链接),然后下一波,挂着做种,过几个小时后退出Aria2,或者等Aria2会话自动保存,你会发现dht.dat从空文件变成有数据了,这时候你下载就会正常很多。

客户端

另外推荐一个手机APP,仅限安卓手机,名字叫做Transdrone,可能需要从谷歌商店下载,或者自行寻找apk吧。这个软件既可以连接Transmission服务器,又可以连接Aria2服务器,通杀两个下载器真心超方便。可以随时使用安卓手机监控下载情况,也能通过种子文件或链接的形式添加下载任务,从此指尖操作告别电脑端。

Transmission

介绍

Transmission是一个强大的BitTorrent开源客户端,实现了BT协议中描述的大多数功能。目前,在它的官方网站上提供了多个版本可以下载,包括:Mac、GTK+、QT版本,还有Daemon版本。

Transmission支持DHT、Magnet Link、uTP以及PEX等特性。尤其是支持Magnet Link磁力链接下载十分重要,因为目前网上很多资源都是采用这种方式来分享的,而不是传统的.torrent文件,例如TPB、BTDigg。

在Ubuntu的发行版中,Transmission软件包下面包含多个套件,这些套件的名字很容易搞混淆,它们分别是:

  • transmission-gtk: GTK+界面的Transmission BT客户端。
  • transmission-qt: QT界面的Transmission BT客户端。
  • transmission-cli: 命令行界面的Transmission BT客户端,与QT、GTK+版本功能一样,是命令行下一个完备的BT客户端。
  • transmission-daemon: 是一个Transmission的后台守护程序,本身不具备操作指令,只能通过Web客户端或者transmission-remote-cli来进行控制。这个程序特别适合安装在服务器上或者嵌入式系统中,以及一些没有显示器的设备上。
  • transmission-remote-cli: 用来控制transmission-daemon的命令套件,本身不具备下载BT的功能,只能够配合daemon使用。

这些套件不必都安装上,根据我的需求,只需要安装transmission-daemon即可。接下来讲详细介绍daemon的安装和配置。

安装

在Ubuntu中,打开终端,输入以下命令安装:

sudo apt-get install transmission-daemon

安装过程中会顺带把transmission-cli也安装上,安装完毕后系统会多出如下一些命令行工具

  • transmission-cli: 独立的命令行客户端。
  • transmission-create: 用来建立.torrent种子文件的命令行工具。
  • transmission-daemon: 后台守护程序。
  • transmission-edit: 用来修改.torrent种子文件的announce URL。
  • transmission-remote: 控制daemon的程序。
  • transmission-show:查看.torrent文件的信息。

默认创建一个用户来专门运行transmission-daemon,用户名为:debian-transmission。

注意: 如果使用另外一个用户来运行transmission-daemon的话,会在该用户的目录下,创建一个.config/transmission-daemon的文件夹,在这个文件夹里有单独的settings.json配置文件来配置这个用户对应的daemon进程,下载目录也会变为$HOME/Download。

按照默认用户和默认配置目录来正确启动和停止transmission-daemon的方式如下。我也将采用这种方式。

# 启动
sudo service transmission-daemon start
# 停止
sudo service transmission-daemon stop

启动成功后,可以看到daemon的进程如下

$ ps aux | grep 'transmission-daemon'
debian-+  5509  0.0  0.6 250700  6456 ?  Ssl  04:31   0:00 /usr/bin/transmission-daemon -f --config-dir /var/lib/transmission-daemon/info

配置

安装完成后,Transmission-daemon有一些默认设置。

Item Loccation
启动初始化脚本 /etc/init.d/transmission-daemon
基本配置文件 /etc/default/transmission-daemon
详细配置文件目录 /var/lib/transmsision-daemon/info
下载存储目录 /var/lib/transmission-daemon/downloads

配置文件目录里面包含如下一些文件:

  • settings.json: 主要的配置文件,设置daemon的各项参数,包括RPC的用户名密码配置。它实际上是一个符号链接,指向的原始文件是/etc/transmission-daemon/settings.json。里面的参数解释可以参考官网的配置说明。
  • torrents/: 用户存放.torrent种子文件的目录,凡是添加到下载任务的种子,都存放在这里。.torrent的命名包含,种子文件本身的名字和种子的SHA1 HASH值。
  • resume/: 该存放了.resume文件,.resume文件包含了一个种子的信息,例如该文件哪些部分被下载了,下载的数据存储的位置等等。
  • blocklists/: 存储被屏蔽的peer的地址。
  • dht.dat: 存储DHT节点信息。

配置主要是通过修改/var/lib/transmission-daemon/info/settings.json文件中的参数来实现的。

注意:在编辑Transmission的配置文件的时候,需要先关闭daemon进程,否则编辑的参数将会被恢复到原来的状态。

配置RPCs

最关键的就是要配置RPC,因为无论是Web界面还是CLI都是通过RPC协议和daemon来进行交互的。在settings.json中与RPC相关的参数有以下几个:

  • rpc-authentication-required: Boolean (default = false)
  • rpc-bind-address: String (default = “0.0.0.0”) Where to listen for RPC connections
  • rpc-enabled: Boolean (default = true)
  • rpc-password: String
  • rpc-port: Number (default = 9091)
  • rpc-url: String (default = /transmission/. Added in v2.2)
  • rpc-username: String
  • rpc-whitelist: String (Comma-delimited list of IP addresses. Wildcards allowed using ‘‘. Example: “127.0.0.,192.168..“, Default: “127.0.0.1” )
  • rpc-whitelist-enabled: Boolean (default = true) 打开文件/var/lib/transmission-daemon/info/settings.json,修改配置参数如下:
{
    ......
    "rpc-authentication-required": true
    "rpc-bind-address": "0.0.0.0",
    "rpc-enabled": true,
    "rpc-password": "123456",
    "rpc-port": 9091,
    "rpc-url": "/transmission/",
    "rpc-username": "transmission",
    "rpc-whitelist": "*",
    "rpc-whitelist-enabled": true,
    ......
}

我将用户名设置为了transmission,密码设置为了123456,whitelist设置成了*,表示任何IP都可以通过RPC协议访问这个daemon。需要注意的是password设置成了明文。当启动daemon之后,daemon会自动检测密码设置。如果发现密码配置被修改了,daemon会自动计算修改后的密码的HASH值,并用这个HASH值替换掉配置文件中的明文密码,这样会更安全。

输入service transmission-daemon start启动程序后,打开settings.json,会看到rpc-password一项被改为了HASH值。

"rpc-password": "{5f4bd5498bddd9aa2ad8f4d475dcebe23e9d8c8bsorspnUE",

配置其它参数

settings.json里面还有很多参数可以配置,包括上传/下载速度的限制、DHT的配置、端口设置等等,详细的参数解释可以参考官网的配置说明,这里不再赘述。

Web管理界面

经过上述配置后,我们就可以通过Web界面来访问和控制Transmission daemon了。在浏览器里面输入以下地址

http://<your.server.ip.addr>:9091/transmission/web/

浏览器提示你输入刚才配置的用户名和密码,就可以成功登陆Web管理界面。界面和桌面版的GUI程序有点像,操作起来很方便。

Sonarr

Radarr

https://github.com/Radarr/Radarr

Samba Server

局域网下使用samba服务在Linux系统与Windows系统直接共享文件是一项很方便的操作。

首先我们安装samba服务器软件。

sudo apt-get install samba samba-common

创建一个用于分享的samba目录。

sudo mkdir /www/files

给创建的这个目录设置权限

sudo chmod 777 /www/files

创建一个用户smbusr,并设置密码

sudo useradd -M smbusr
sudo smbpasswd -a smbusr

配置samba的配置文件。

sudo vi /etc/samba/smb.conf

在配置文件smb.conf的最后添加下面的内容:

[NasShare]
comment = Nas share folder
path = /www/files
create mask = 0611
directory mask = 0755
valid users = smbusr
force user = smbusr
force group = smbusr
browseable = yes
public = yes
available = yes
writable = yes
#guest ok = yes
#security = share
#read only = no

重启samba服务器。

sudo systemctl restart smbd

Windows10中可能无法访问,我们预先在Windows凭证管理中添加IP、账号和密码后保存,然后再次访问应该就可以了。

下载方案A:迅雷远程(docker);SABnzbd(Usenet下载客户端)

下载方案B:Aria2,Web管理面板:Aria-NG,中文教程;Transmission(bt下载客户端)

Sonarr(电视剧自动化管理软件); Radarr(电影自动化管理软件)

视频/图片分享、远程播放:Emby Server;

虚拟机方案:VirtualBox ;

HTPC播放:KODI 。

yum -y install perl-Net-SSLeay perl-IO-Tty

硬件

考虑到NAS需要7*24小时开机,硬件尽量选择功耗较低的。

我也来说下我的方案,自认为目前比较完美了,特别是软件配置,用了两年,先说实现的效果:

  1. 7*24小时开机,小型UPS电源保护,断电可自动让NAS优雅的关机,防止对硬盘造成不良影响,电力恢复后自动开机,意外关机后也可远程开机。

  2. 家庭影院服务器,影视剧使用自动化工具下载,只要把想看的添加进去就可以了,如果有了资源,系统会自动下载并分类整理,包括重命名下载字幕等,当然也可以手动添加种子下载,特别适合玩PT。

  3. NAS上存储的海量影视等多媒体资源,在家可以在电视上观看,在外可通过手机或电脑客户端在线观看,不需要下载。

  4. 文件共享服务,这是最基本的了,可以很方便的开启SMB、FTP等服务。

  5. 私有云盘,实现类似Dropbox和OneDrive的自动同步功能,比如今天我在家拿主力机工作,明天拿轻薄本出去,相关数据在后台自动同步,不需要手动来回拷贝;另外手机客户端可实现照片自动上传至NAS服务器,手机小容量的福音。

  6. 家里局域网在外随时连接,只要有互联网,可以访问家里任一设备,包括路由器打印机等,和在家访问没有多大区别。其实这个功能是通过另外一个独立的小盒子实现。

7,硬件和软件均为DIY,非成品,系统采用开源方案Openmediavault(OMV),需要较强动手能力,暂时想到这么多,有人感兴趣再补充细节……

======分割线======

2月9日更新:

有人看了今天就来更新一下。

先说硬件,上面说了那么多功能,其实硬件配置很简单,照例先上图:

四盘位U-NAS 万由四盘位NAS,华擎Q1900-ITX主板,J1900CPU,4G内存,目前我放置了4块4T硬盘,两两做成RAID1,一个主要用来存储个人及工作文档,另一个主要用来存储多媒体资料,为了不占用硬盘插槽,操作系统装在了从主板扩展出来的SATA接口的固态硬盘上。可能有人会问这点配置够吗?可以做HTPC吗,可以看4K视频吗?我的想法是,NAS就回归NAS的本质,做好网络存储功能,将NAS做HTPC使用完全没有必要,因为:1、把NAS同时作为HTPC使用,需要有较高的硬件配置,成本会更高;2、NAS一般需要24小时开机,HTPC需要放在显示器或电视附近,这时候就得考虑位置、散热、噪音等等问题,这些条件都满足吗?3、如果家里部署了千兆网络,使用高清播放盒即可实现高清播放需求,完全没必要利用NAS。因此,这台NAS对于我来说,完全足够,放在阳台角落的一个机柜里,7*24小时开机,功耗、噪音等问题统统可以忽略,非常省心。

主要的硬件设备介绍完,但是我认为还缺一项非常重要的设备,即UPS不间断电源。为什么?既然使用NAS了,大家一定比较关注设备和数据的安全性,而家里时不时的会有突然停电的可能,万一硬盘正在读写的过程中突然断电,数据丢失怎么办?虽然我还没有遇到过这种情况,但是考虑到整个NAS系统的完备性与稳定性,防止不必要的麻烦,我在很早的时候就购入了一小型UPS电源,该UPS可支撑NAS运行半个小时左右,有了它,停电时就会通知NAS:“现在停电了,我正在给你供电呢,你需要准备关机了,倒计时开始:45秒,44秒,43秒......(倒计时参数可设置)”,倒计时结束后NAS就可以从容不迫以优雅的姿态关机啦,完全不用担心上述突然断电可能会造成的影响,如果这45秒内电力又恢复了,则取消自动关机。关机后等到电力恢复,NAS会自动开机,也可以手动远程唤醒开机。还是上个图吧,UPS就是这货:

APC BK650-CH UPS不间断电源400W 自动开关机电脑 防浪涌 好了,硬件部分基本介绍完,软件部分涉及的内容比较多,下次有空再继续更新...

======分割线======

2月12日更新:

大家好,忙完正事了,今天来更新一下,感谢关注。

在更新之前,先申明几点:

1、关于NAS系统的选择,每个人的需求不尽相同,该方案不一定适合所有人,也有一定的难度。如果你在用成熟的商业软件比如群晖,我建议你继续使用,并不断根据自己的需求增加和配置功能,没有必要从头更换另外一个方案,当然这里指的正版商业软件,不建议盗版。

2、关于软件功能实现,有些选择也不是唯一的,这里主要提供思路,不会详细到每个软件的具体配置,我会介绍一下大概方向,感兴趣的伙伴可以自行去谷歌或百度,家里搭建NAS服务器的童鞋动手能力应该都不差,之后若有时间可视情况更新一些软件使用经验。

3、天下没有免费的午餐,该方案里涉及的某些服务也是收费的,但物有所值。

嗯,啰嗦完了,现在正式开始(好像又要开始重新编号了)。

1、系统:前面已经提了,系统采用的是OMV,即openmediavault,我为什么要采用OMV而不是FreeNAS,一是因为FreeNAS需要大内存,我的设备只有4G内存,二是我本人比较熟悉Debian,而OMV正是基于Debian的。OMV官网在此:The open network attached storage solution。

为了不熟悉的童鞋有个直观感受,照例上图:

openmediavault 由于我家NAS是放阳台的,并没有接显示器和键鼠,也没有图形界面,行话就是headless server,一根网线完事,平时管理NAS,除了登录web界面外,就是ssh远程登录啦,画风是这样的:

ssh远程登录nas(你并没有看到密码,因为配置了密钥登录) 关于文件共享,我开启了SMB服务,平时使用的画风是这样的,打开我的电脑(不对,WIN10变成了此电脑...),网络位置里多了我映射的网络磁盘即NAS的共享文件夹,双击进入,就和本地硬盘一样。

细心的人可能还发现了OMV管理界面服务(Service)里面有一项UPS,OMV方便之处就是可以安装各种插件来扩充系统功能,这个UPS插件就叫做openmediavault-nut(Network UPS Tools)。好像有人问怎么配置的,我再来个图吧,注意驱动那一块的设置,因为是通过USB连接的;另外注意Shutdown mode和Shutdown timer的设置,意思就是当检测到UPS电池供电后,倒计时45秒,45秒之内如果还没有恢复供电,则自动关机,如果恢复供电,则取消自动关机。

openmediavault-nut设置 好了,系统部分就先简单介绍到这吧,下一部分是重点,多媒体服务器。

2、多媒体部分:

答主是是个比较喜欢看电影的人,欧美影视居多,这一块其实涉及的软件还是蛮多的,今天先介绍其中之一吧,当然这款软件很多回答都已经提到了,它就是大名鼎鼎的——Plex。

1) Plex:

大名鼎鼎的Plex,服务端叫作Plex Media Server,客户端涵盖网页浏览器、安卓、苹果等全平台。除了自动从imdb等数据库补全影片介绍等meta信息进行索引外,最重要的还能实时转码,解决客户端不支持某些视频格式或是网速慢等问题。不想打字了,继续上效果图吧。

感觉上这两张图把自己收藏的电影电视剧都暴露了......

======分割线======

2月15日更新:

大家好,今天我又来更新了,直接进入正题。

2)自动化工具:

多媒体服务器作为NAS的一项重要功能,如果影视资源能够实现自动化(或半自动化)的下载或整理,无疑将极大提高使用体验,试想一下如果想看一部电影或电视剧,还得满世界寻找资源,好不容易下载到了还需要手动归类整理,下载字幕等等,整个流程十分繁琐,浪费时间不说,兴致可能都减少了一半。

好了,我先直接给出我NAS中使用的软件,这些软件相互配合,配置好以后,几乎完全实现了自动化管理,日常我只需要将想看的电影添加进去就行了,寻找资源、下载、整理、字幕等等,都是由这些软件自动完成的。还有一个好消息是:这些软件均是开源的!不需要付任何费用!

这些软件分别是:

Sonarr(我个人将它翻译为“声纳”,电视剧自动化管理软件); Radarr(暂且叫“雷达”吧,电影自动化管理软件); SABnzbd(Usenet下载客户端); Transmission(bt下载客户端)。 以上每个软件都有其它的功能类似的软件可以完成相似的功能,这里列出的是目前比较主流或是社区比较活跃的。

Transmission,bt客户端就不做过多介绍。SABnzbd是Usenet下载客户端,什么又是Usenet呢?这里引用一下维基百科的介绍:

Usenet是一种分布式的互联网交流系统,源自通用用途的UUCP网络(名字亦类似),它的发明是在1979年由杜克大学的研究生Tom Truscott与Jim Ellis所设想出来的,Usenet包含众多新闻组,它是新闻组(异于传统,新闻指交流、信息)及其消息的网络集合。Usenet里的消息(帖子)根据所分Usenet层级(新闻组)存储在服务器,多数服务器不断转发其消息给其他服务器,最终新闻组消息被分布式存储于全球大量的计算机中,但它不是万维网。 通过软件用户能够选择订阅感兴趣的新闻组、消息进行阅读、索引、删除过期消息等。Usenet的最初构想是借助网络进行技术信息交流,后来被广泛推广到大众领域,如社会新闻、业余爱好、个人兴趣等主题。现在默认情况下,它使用NNTP协议。Usenet最主要的特色是统一分组、全球转信(转发消息)。一些人认为Usenet一词来自于User Network。 可以看出Usenet是一种非常古老的技术,甚至比万维网还要早。Usenet发展至今,二进制新闻组的数据交流占据了很大一部分,里面的资源非常丰富,这里只简单介绍一下Usenet怎么使用:

下载软件:SABnzbd就是其中之一; nzb索引网站:通过nzb文件搜索,找到自己需要下载的文件,有免费的索引网站,比如Binsearch,也有收费的,个人建议使用收费的索引网站,索引质量和稳定性较高; 购买Usenet服务:有很多Usenet服务提供商,购买后服务商会给你服务器地址和账号,把这些信息配置到下载客户端比如SABnzbd里面。 好了,有了以上的这些,你其实就可以手动下载了:在nzb索引网站找到你想下载资源的nzb文件下载下来,使用SABnzbd等客户端打开,由于下载软件里面已经配置好了服务器,所以你的资源就会从这些服务器上下载了,不是很难是吧?

但是上面的流程还是复杂了,说了半天还是需要手动下载,这时候Sonnar和Radarr就派上用场了。

Sonarr是自动化的电视剧管理软件,用来追剧再合适不过了,软件里面将重命名规则、清晰度要求、nzb索引、bt索引(当然不要忘了bt哦,是个很好的补充)、nzb或bt下载软件等都配置好后,剩下的都交给Sonarr吧,Sonarr里面有保存你的想看列表,并会定期自动在索引网站上寻找是否有这些资源,如果有并且清晰度符合要求,则会自动交给nzb或bt下载软件,下载完成后Sonarr就会根据重命名规则自动完成归类整理。

Radarr其实和Sonnar非常类似,连界面都很像,它其实是Sonnar的一个分支,只不过是用来管理电影罢了,只要你会配置其中任何一个,另外一个应该就会了。

最后还有字幕的自动化,这个其实是可以交给Plex去做的,Plex有个插件叫Sub-Zero,可以很好的完成字幕自动匹配和下载的工作。

再上几个截图说明一下:

Sonarr主界面

Sonarr点开某个剧的样子(大猫)

Sonarr添加自己想看的剧,就是这么简单!

Radarr,电影自动化,界面功能和Sonarr都很类似~

SABnzbd,盗用官网图,逃~~~

Transmission,盗用官网图,再逃~~~ 3、私有云盘:

私有云盘,文件自动同步,评论里也有人提到,我使用的其实就是Nextcloud,这个东西其实就跟Dropbox,OneDrive一样,类似网盘的功能,非常推荐有多个设备文件自动同步需求的人使用,建立自己的网盘,不再依赖互联网网盘服务。这个安装起来稍微有点麻烦,我装了很多次才成功,服务端装好以后,下载电脑和手机客户端,添加需要同步的文件夹就可以了。手机客户端可以设置照片后台自动上传,不过IOS端的后台自动上传需要依赖GPS定位,有时候需要打开客户端才能上传,安卓版的据说没有问题,由于没有安卓手机,还有待验证~~~

客户端的图就不上了,感兴趣可以自己下载下来看看,设置非常简单。

最后,这些服务Openmediavault都有对应的插件,但是我本人建议最好使用docker安装!(重要的事情说三遍!)给大家推荐linuxserver的docker容器:plex, sonarr, radarr, sabnzbd, transmission, 以及官网的nextcloud容器。

======分割线======

4、内网穿透

网络这部分留到最后,也是最重要的,NAS如果仅仅只能在家里访问也就没有多大意义了,我们需要的是在世界任何一个角落,只要有互联网,就能方便的访问NAS。

要能实现这一点,第一个想到的方案自然是:公网IP+DDNS+端口映射了,可惜,我的宽带服务商并没有提供公网IP,我甚至一度想打运营商电话投诉,但是后来发现了其它方案,也就作罢。

后来目光一度转向了花生壳盒子之类的设备,仔细看了介绍之后,价格贵不说,还有端口和流量限制等等,实在是有点坑啊,果断弃之。

直到我发现了这款神器——Zerotier。

Zerotier的介绍和使用方法大家可以自行上网查查资料,简单来说,Zerotier可以创建一个虚拟局域网,将设备加入这个虚拟局域网后,就能像在一个局域网内那样方便的访问了,如果我们将手机、笔记本电脑、平板电脑等常用的终端和NAS都加入这个虚拟局域网,那么我们无论在哪里都可以访问NAS中的资源了,就像在家一样!经过实际使用测试发现,这玩意速度也出奇的好,在外面ping值通常只有几十,据说使用了点对点技术。

好像一切都很完美,NAS、手机、电脑、ipad等都有对应的Zerotier客户端,安装起来不麻烦,然而问题来了,NAS中装Zerotier虽然可以,但如果NAS意外关机了怎么办,关机了NAS就没法加入虚拟局域网了,还怎么远程访问,怎么远程开机呢?这好像是个鸡生蛋蛋生鸡的问题?另外还有一些设备比如智能家电、网络打印机等,是不可能装Zerotier的,在外面怎么访问这些设备呢?

再想想还有没有解决方案?看来好像还需要一个“跳板”?

直到某一天,我逛Zerotier官网时发现了这货:ZeroTier Edge,一个小盒子,看介绍貌似可以即插即用,不需要什么配置,接在路由器下面应该就可以实现内网穿透了,看起来很神奇,真是良心产品,可是这货貌似还在众筹阶段,国内买起来不太方便,价格也比较感人,这盒子的内核无非还是Zerotier嘛,于是......我若有所思,能不能自己实现一个呢?

最后直接上图吧,我完成的“山寨”盒子长这样的(话说这盒子我不满的地方就是灯太亮了,所以贴了胶带,请无视):

盒子已经配置好了Zerotier并加入了我的虚拟网络,接在路由器下面一个lan口,只要这个盒子保持开机状态且网络正常,就能在外访问家里的网络,这样的好处还有如果NAS意外关机了,可以用手机连上Zerotier虚拟网络,发送一个网络唤醒(wake on lan)请求给NAS就可以远程开机了,完美!给想琢磨的童鞋奉上一张原理图吧:

======分割线======

评论里有人问这个盒子怎么实现的,其实就是刷了OpenWrt,装好Zerotier,加入你的虚拟局域网,然后把虚拟局域网接口和实际lan接口桥接,原理如上图所示,因为这个盒子只干这一件事,可以把一些其他无关的服务关掉,就像官方盒子宣传的一样:Do One Thing and Do It Well,哈哈