DIY一套NAS+私有云盘+下载机

2023-05-16

如果你家里有多台设备需要联网需要娱乐,你一定会或多或少遇到设备碎片化带来的烦恼。当然,已经有很多厂商包括新晋的小米、360在内的互联网公司做了这个事情,给你搞个家庭存储中心,基本能解决你的大部分需求。

但是,本着不折腾就会死的机翼安劲儿,咱自个来造个低成本低功耗的解决方案,成本680元,耗时2个小时左右。

NAS基础设施搭起来

材料:先要有Raspberry Pi/路由器/破电脑等能装Linux的设备,适当容量的移动硬盘或SATA硬盘;
原理:在运行Linux的设备上,挂载大容量硬盘,并利用Samba搭建NAS;
具体步骤之前有过教程,可移步:http://wemaker.cc/21;

NAS

至此,如果你是严格按照教程部署,你的NAS应该已经开始正常运转,iOS、Android、Windows、Mac等不同系统都有连接NAS服务器的应用,可自行度之。

变身双向同步云盘

NAS主要服务于同一局域网内的设备,如果你想将你的NAS打造成可以外网访问并进行数据同步的网盘,我们只需借助FTP+动态域名解析即可实现。

A、配置FTP服务

接下来,我们使用vsftpd来搭建FTP服务(VSFTPD是一个开源的轻量级FTP服务器程序),按照以下步骤进行配置:


sudo apt-get install vsftpd //安装vsftpd服务器 (约400KB)
sudo nano /etc/vsftpd.conf //编辑vsftdp的配置文件  

在配置文件中找到以下行,并设定为对应值:


anonymous_enable=NO //表示不允许匿名访问
local_enable=YES //设定本地用户可以访问。
write_enable=YES //设定可以进行写操作
local_umask=022 //支持断点续传  

sudo service vsftpd restart //重启vsftpd服务  

OK,此时搭载有NAS的服务器也已经具备FTP服务,现在可以使用浏览器访问试试。此时,你的FTP依然只能在内网访问,我们需要借助动态域名解析服务实现外网访问:

B、外网访问设置(如果不需要外网访问,此步非必须)

如果你还没自己的域名,可以在网上申请各类免费得二级域名或直接在花生壳、3322上进行动态域名申请及配置。如果你有自己的域名,参照以下教程使用DNSPOD服务进行设置。先在DNSPOD注册并添加域名,然后将你的域名DNS配置为DNSPOD的。之后,在linux上进行脚本设定。确保你已经安装了Python环境,然后新建Py脚本,粘贴如下代码(Via e-fly):

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import urllib2,urllib,json

class Dns:
	#Dnspod账户
	_dnspod_user = '你的账户'
	#Dnspod密码
	_dnspod_pwd = '你的密码'
	#Dnspod主域名,注意:是你注册的域名
	_domain = 'cb.e-fly.org'
	#子域名,如www,如果要使用根域名,用@
	_sub_domain = '@'

	def getMyIp(self):
		try:
			u = urllib2.urlopen('http://members.3322.org/dyndns/getip')
			return u.read()
		except HTTPError as e:
			print e.read()
			return None;

	def api_call(self,api,data):
		try:
			api = 'https://dnsapi.cn/' + api
			data['login_email'] = self._dnspod_user
			data['login_password'] = self._dnspod_pwd
			data['format'] ='json'
			data['lang'] =  'cn'
			data['error_on_empty'] = 'no'

			data = urllib.urlencode(data)
			req = urllib2.Request(api,data,
				headers = {
					'UserAgent' : 'LocalDomains/1.0.0(roy@leadnt.com)',
					'Content-Type':'application/x-www-form-urlencoded;text/html; charset=utf8',
					})
			res = urllib2.urlopen(req)
			html = res.read()
			results = json.loads(html)
			return results
		except Exception as e:
			print e

	def main(self):
		ip = self.getMyIp()
		dinfo = self.api_call('domain.info',{'domain' : self._domain})
		domainId = dinfo['domain']['id']
		rs = self.api_call('record.list',
			{
				'domain_id': domainId,
				'offset' :'0',
				'length' : '1',
				'sub_domain' : self._sub_domain
			})

		if rs['info']['record_total'] == 0:
			self.api_call('record.create',
				{
					'domain_id' : domainId,
					'sub_domain' : self._sub_domain,
					'record_type' : 'A',
					'record_line' : '默认',
					'value' : ip,
					'ttl' : '3600'
				})
			print 'Success.'
		else:
			if rs['records'][0]['value'].strip() != ip.strip():
				self.api_call('record.modify',
				{
					'domain_id' : domainId,
					'record_id' : rs['records'][0]['id'],
					'sub_domain' : self._sub_domain,
					'record_type' : 'A',
					'record_line' : '默认',
					'value' : ip
					})
			else:
				print 'Success.'

if __name__ == '__main__':
	d = Dns();
	d.main()

将以上代码保存后,设定755权限,运行即可。如需要定时检测更新域名IP地址,可以将该脚本文件加入 /etc/crontab 进行定时执行任务。

至此,你的整个服务器已经同时具备了内网的NAS,以及内网和外网的FTP服务。接下来,开始在你的各类终端上进行双向网盘同步设置吧,本文以Android系统为例,其他系统的FTP同步教程请自行度之。

C、安卓手机数据同步

原理很简单,找一个FTP的App,指定手机某个文件夹(一般都是相册所在文件夹)自动同步到上文搭建好的NAS路径中。相比使用百度云等网盘同步,我们这样做的优势除了隐私性更强外,还能在本地WiFi网络内以极高的上行速率进行数据备份。

一处备份(从手机至NAS),多处共享(从NAS到Mac、PC、iPhone、iPad)。

本文以FtpSyncX安卓版为例进行设置:

ftpsyncx

第一步:添加服务器,点击Add server,选择FTP格式,设置好服务器地址(建议填入以上文中的额动态域名,如不需要填入内网IP即可),填写登录帐号和密码;
第二步:设置要同步的两端文件夹目录,选择Local Diectory设置手机上的文件夹,Remote directory设置NAS上对应的同步文件夹,建议新建一个。接下来设置同步类型,remote<=>local双向同步、remote=>local NAS到手机单向同步、 local=>remote 手机到NAS单向同步,根据需要进行选择。勾选上WiFi Only,只在WiFi下同步;

设定完成后开始同步看看效果吧。此软件还可以设定同步时间间隔等高级参数。

搭建完美下载机

看了小米路由宣称的1T硬盘和迅雷离线下载很心动?别急,咱也能。

Linux下可以实现BT下载的应用有很多,目前支持下载格式最多和最知名的是Aria2。相比以往的开源BT程序,Aria2不仅支持BT下载,还支持Http、Ftp、磁力链接等格式下载,当然,文章最后完美还附上了迅雷离线下载+Aria2的完美方案。

A、安装并配置Aria2

在Linux终端内执行以下命令安装Aria2程序:


sudo apt-get install aria2 //安装Aria2  

接下来配置Aria2的配置文件,每行为一个单独命令:


mkdir ~/.aria2 //新建文件夹
touch ~/.aria2/aria2.session //新建session文件
nano ~/.aria2/aria2.conf //新建配置文件  

在aria2.conf配置文件里粘贴以下代码,别忘记将里边的路径替换为自己的:


dir=/home/cubie/Download //下载的默认目录
disable-ipv6=true
enable-rpc=true
rpc-allow-origin-all=true
rpc-listen-all=true
#rpc-listen-port=6800
continue=true
input-file=/home/cubie/.aria2/aria2.session //路径要绝对路径
save-session=/home/cubie/.aria2/aria2.session //保存你的下载列表
max-concurrent-downloads=3  

保存并执行以下命令:


aria2c –conf-path=/home/cubie/.aria2/aria2.conf  

如果没有错误,Ctrl+C终止并继续下一步,把aria2做成系统服务:


sudo nano /etc/init.d/aria2c  

粘贴内容如下:


#!/bin/sh
### BEGIN INIT INFO
# Provides:          aria2
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Aria2 Downloader
### END INIT INFO

case "$1" in
start)

    echo -n "Starting aria2c"
    sudo -u cubie aria2c --conf-path=/home/cubie/.aria2/aria2.conf -D 
    #sudo -u后面的是你正在使用的用户名,因为我用的cubie,别忘记改成自己的
;;
stop)

    echo -n "Shutting down aria2c "
    killall aria2c
;;
restart)

    killall aria2c
    sudo -u cubie aria2c --conf-path=/home/cubie/.aria2/aria2.conf -D
    #同上面的一样,根据自己的用户名改cubie
;;
esac
exit  

保存后退出,然后设置这个文件的权限为755:


sudo chmod 755 /etc/init.d/aria2c  

测试Aria2服务是否可以启动:


sudo service aria2c start  

如果只显示Starting aria2c,没有其他错误提示的话就说明成功了。然后添加aria2c服务到开机启动:

sudo update-rc.d aria2c defaults

由于Aria2不具备Web管理,所以需要使用第三方开发的开源程序Yaaw进行Web管理。先要确保你的Linux已经配置了Nginx或Apache等Web服务器环境,关于Nginx的配置可参考此文:http://wemaker.cc/59,此处不再累述。

进入Web服务的文件目录,以Nginx为例:


cd /srv/www
git clone http://github.com/wzhy90/yaaw  

程序执行完成后,在浏览器中打开http://IP地址或域名地址//yaaw,即看到Aria2的Web管理界面,此时一个支持BT、FTP、HTTP、磁力等格式的下载机已在完美运转。点击右上角的设置项,在弹出的界面中找到Aria2 JSON-RPC Path,留好在下一步备用。

B、配置迅雷离线下载

这一步需要额外的程序支持,国内有高手开发出了Aria2结合迅雷离线的浏览器插件,本文以Chrome为例设置。

打开此链接,安装Chrome浏览器扩展程序,然后登录迅雷离线的Web站(需要会员),点击页面右上角的设置,在弹出的窗口中,找到Aria2 JSON-RPC Path项,将Yaaw中复制出来的URL粘贴进去并保存。接下来,试试在迅雷离线下一部片子,基本是秒下,然后点击“取回本地”旁的下拉按钮,在选项中选择Yaaw。回到你的Aria2 Web管理页,是不是已经有一项任务躺在里边了?

至此,大功告成。咱也过上了想什么时候下就什么时候下、想在哪下就再哪下、想下啥就下啥、想在哪看就再哪看、想怎么同步就怎么同步的性福生活。

推荐方案:树莓派B英国产+4G TF(255元)+ 1T硬盘 (400元) + 有源的USB Hub(25元)进行搭建,总成本680元左右。

预告:接下来会把树莓派替换为一个802.11ac双频可刷OpenWRT的路由器,将整体成本和能耗降到最低。敬请期待我们带来的路由器的解决方案。有了这神器,还等啥小米路由、360路由……

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DIY一套NAS+私有云盘+下载机 的相关文章

  • Windows蓝屏代码详解

    size 61 medium Windows蓝屏密码 xff01 补全版 ZT 格式是 xff1a xff08 0x0000 操作已成功完成 0x0001 错误的函数 xff09 1 停止错误编号 0x0000000A 说明文字RQL NO
  • 制作启动U盘加载阵列卡驱动

    size 61 medium 安装服务器时碰到没有阵列卡驱动无法安装的问题大家应该都碰到过 之前一次安装2003碰到没阵列卡驱动 xff0c 解决的办法比较土 xff0c 上网下了张别人做好的集成了raid驱动的2003 这次不行了 xff
  • xfs文件系统优化

    size 61 medium 网上搜集的xfs文件系统优化方案 xff0c 自己做个小结 b 先贴出优化前后的对比 xff0c 只是简单的用dd命令测试了一下而已 xff0c 不怎么专业 写和读的文件为内存2倍 b size code 61
  • Fusion-io的吸引力:高读写能力与低延迟

    fusion io ssd硬盘的性能 url http sapling me hardware fusion io html url
  • 转:python的socket编程

    python socket编程简介 xff1a python 编写server的步骤 xff1a 1 第一步是创建socket对象 调用socket构造函数 如 xff1a socket 61 socket socket family ty
  • TIME_WAIT连接过多的解决

    netstat n awk 39 tcp 43 43 S NF END for a in S print a S a 39 LAST ACK 1 SYN RECV 164 CLOSE WAIT 3 ESTABLISHED 655 FIN W
  • MySQL更改root密码

    情况一 记得root密码 用SET PASSWORD命令 1 打开终端win 43 r输入cmd回车即可打开 xff1b 2 通过mysql u用户名 p指定root用户登录MySQL xff0c 输入后回车会提示输入密码 3 修改MySQ
  • mac下控制台可以搜索到命令但是vscode显示zsh: command not found:

    记录下吧 困扰几天了 xff0c mac怎么这么难安这些环境变量什么的啊哈哈哈 node npm都是能搜到的 在控制台全局安装了yarn xff0c 控制台可以yarn v命令 xff0c 但是vscode报错zsh command not
  • 1.机器学习sklearn-------聚类

    1 sklearn简介 Scikit learn 也简称 s klearn 是机器学习领域当中最知名的 python 模块之一 sklearn库共分为6大部分 xff0c 分别用于完成分类任务 回归任务 聚类任务 降维任务 模型选择以及数据
  • KEIL编译报错,解决方法汇总

    目录 背景 最近在跟着野火码uCosiii的代码时 xff0c 感觉非常完美 xff0c 结果一编译 xff0c 报了120个莫名其妙的问题 xff0c 下面是踩过的坑 xff0c 一起记录下 xff0c 免得下次又掉进去了 1 编译汇编文
  • “从0开始的FreeRTOS”系列教程第一讲

    大家好 xff0c 这次给大家带来了Freertos的教程 xff0c 这次打算一口气做完一整个系列的教程 xff0c 大概更新频率会是月更 这个系列的教程的主要目的是带大家了解实时系统 real time operating system
  • 我的2013奋发突进

    先简单介绍自己 男 大专学历2012年6月毕业 期间2011 6月 2012 6 算是实习期 正式实习了一年 从2012 6月实习结束后 没打算在原来实习的单位呆着 换了一家公司 一直到2013年的7月末 考虑到种种原因 回归家乡了 技术篇
  • VR 杂想

    什么是VR VR xff08 科学技术 xff09 即VR xff08 Virtual Reality xff0c 即虚拟现实 xff0c 简称VR xff09 xff0c 是由美国VPL公司创建人拉尼尔 xff08 Jaron Lanie
  • 解决rosdep init错误和rosdep update错误以及ros密钥错误

    解决rosdep init错误和rosdep update错误以及ros密钥错误 如果仍无法解决下面所述问题 xff0c 欢迎留言 对于rosdep init错误有以下几种方法 1 更换软件源并更新软件包 sudo apt get upda
  • vscode使用技巧——webpack项目的断点调试

    为了方便调试 xff0c 我研究了一下如何使用vscode进行断点调试 本次尝试已在html template项目中测试通过 安装插件 在vscode的插件商店安装必要的插件 Debugger for Chrome 调整webpack配置
  • apt-get 源和常识

    本文内容 xff1a 1 apt get的源换成阿里或163的 2 atp get的源的常识 一 概述 安装好Ubuntu它自带源是国外的 xff0c 访问较慢 xff0c 经常会出现连接失败的情况 所以建议将它替换为国内的 xff08 如
  • 树莓派、百度DuerOS等RAW格式的镜像浏览、提取文件的方法

    前言 树莓派上装了docker等一堆东西 xff0c 要跑DuerOS的 DuerOS开发套件个人版 http open duer baidu com openduer product idk id 61 personal xff0c 有好
  • 解决Ubuntu可以ping通ip地址,不能ping通域名和浏览器无法上网的问题

    Ubuntu版本18 04 4 主要原因 原本的dns解析不行 要修改为谷歌的域名解析服务器8 8 8 8才行 并且每次关机后就会恢复默认 要添加到开机自启 1 修改配置文件 vim etc NetworkManager NetworkMa
  • Java核心技术卷1读书笔记

    Java核心技术卷1读书笔记 前言Math floorMod 前言 本笔记主要记录学习 JAVA核心技术 卷1 时遇到的问题或者心得 xff0c 若有朋友有更好的学习资源推荐请留言或联系我VX 18439428204 QQ 75107651
  • [前端基础] 浏览器篇

    提供基础用法 xff0c 基础概念引用 MDN W3C xff0c 基础内容做扩展知识 xff0c 可应对面试 xff0c 详细原理及应用需要去官网 GitHub 深入学习 1 常用 BOM 方法 BOM xff08 browser obj

随机推荐

  • STM32 keil5 报错:flash download failed-cortex M3解决方法

    起因 因为之前自己使用的STM32都是使用的F4 xff0c 自己打了一块STM32F1C8T6板子 xff0c 焊好之后 xff0c 打开以前正点原子的例程的时候 xff0c 出现无法烧录的情况 xff0c 总是报这样的错误 xff0c
  • Hadoop实战学习(3)-读取数据库内容

    要读取数据库中的数据 xff0c 首先需要实现一个实体类 xff0c 这个实体类部分映射数据库中要查询的表的字段 且该实体类需要实 现Writable与DBWritable两个接口 xff0c DBWritable的实现类负责查询与写入 x
  • 消失点(灭点、Vanishing Point)

    目录 定义 xff1a 性质 xff1a 消失点分为3种 一条直线的消失点是过摄影中心且平行于该直线的直线与像平面的交点 地面物体的两个消失点的连线为水平线 xff0c 提供地平线的信息 应用 xff1a 计算焦距和图像中心 求像心 求焦距
  • window.performance.timing 字段说明和主要性能指标

    window performance是W3C性能小组引入的新的API xff0c 目前IE9以上的浏览器都支持 字段说明 xff1a connectStart 和 connectEnd 分别代表TCP建立连接和连接成功的时间节点 domCo
  • C++中的private, public, protected

    0 概述 数据隐藏是C 43 43 面向对象编程的重要特征之一 xff0c 它允许我们隐藏对象内部细节即数据成员 xff0c 防止程序的函数直接访问一个类对象的内部表示 数据成员和成员函数 对类成员函数的访问限制由访问修饰符指定 访问修饰符
  • 数据链路层设计要点

    数据链路层保证数据在两台机器间进行可靠 有效的通信 需要考虑传输错误 xff08 检错 纠错等 xff09 延迟等问题 因此 xff0c 其功能可概括为 xff1a 1 向网络层提供一个定义良好的服务接口 xff1b 2 处理传输错误 xf
  • 由NT Service中调用SendInput模拟键盘鼠标事件了解到的

    TODO
  • 远程连接之ssh的使用(日志监控)

    ssh的简介 ssh服务 Secure Shell xff1a SSH 为建立在应用层基础上的安全协议 SSH 是较可靠 xff0c 专为远程登录提供服务 解决的问题 xff1a 对服务器的远程控制 xff0c 远程操作 ssh服务是安全的
  • 基于润和hi3516 dv300开发板,体验鸿蒙3.0 L1小型系统拍照Sample

    背景 xff1a 希望能在润和hi3516 dv300开发板上 xff0c 体验拍照功能 前段时间花了一段精力 xff0c 好不容易在润和hi3516 dv300上烧录了L2系统 xff0c 并跑成功了ArkUI应用 xff0c 详见 xf
  • 集群故障处理之处理思路以及健康状态检查(三十三)

    前言 按照笔者的教程 xff0c 大家应该都能够比较顺畅的完成k8s集群的部署 xff0c 不过由于环境 配置以及对Linux k8s的不了解会导致很多问题 异常和故障 xff0c 这里笔者分享一些处理技巧和思路 xff0c 以及部分常见的
  • ElasticSearch集群日志限制问题

    本文是基于CentOS7的环境下使用rpm包安装进行说明 ELK的默认日志记录会增长很多 xff0c 除ElasticSearch外 xff0c 都会无限增长 xff0c 长时间运行可能带来灾难性的后果 xff08 如 xff1a 节点宕机
  • 集群故障处理之处理思路以及听诊三板斧(三十四)

    前言 本篇主要分享一些处理故障和问题绝招 xff0c 比如听诊三板斧 xff1a 1 xff09 查看日志 2 xff09 查看资源详情和事件 3 xff09 查看资源配置 xff08 YAML xff09 如果还是不太好分析 xff0c
  • maven打包根据指定参数,自定义war包名称

    首先定义如下参数 xff1a lt profile gt lt id gt front lt id gt lt properties gt lt rp build warname gt front lt rp build warname g
  • 银联周雍恺:开放交换机组网技术和前沿进展

    在第三届未来网络发展大会SDN NFV技术与应用创新分论坛上中国银联电子商务与电子支付国家工程实验室周雍恺博士 xff0c 发表了主题为 开放交换机组网技术和前沿进展 的主题演讲 本次演讲内容主要有三大部分的内容 xff0c 第一部分是开放
  • 华为面试题

    http topic csdn net u 20080703 13 62ce76ec fba4 45c6 95fb 625fcfaec73e html
  • 2014 百度研发工程师笔试题

    一简答题 1osi网络七层 2线程共享方式 3 tcp和udp区别 xff0c 及协议 二 编程题 1给一个数组A 61 a1 xff0c a2 an 列出所有的组合方式 2给定一个数组 xff0c 数组相邻两个数的差的绝对值小于1 xff
  • 2014小米校园招聘笔试题

    1奇偶排序 在一个N个整数数组里面 xff0c 有多个奇数和偶数 xff0c 设计一个排序算法 xff0c 令所有的奇数都在偶数的左边 例如输入a 61 8 4 1 6 7 4 9 6 4 2叉数降维 设计一个算法 xff0c 把一个排序二
  • bootloader详解(转载)

    一 bootloader介绍 bootloader是硬件在加电开机后 xff0c 除BIOS固化程序外最先运行的软件 xff0c 负责载入真正的操作系统 xff0c 可以理解为一个超小型的os 目前在Linux平台中主要有lilo grub
  • 关于LVM管理PVcreate过程中错误Device /dev/sdb not found (or ignored by filtering)

    今天在做环境中一台机器磁盘扩容过程中出现此报错 xff0c 第一次遇到 xff0c 说一下情况 xff1a 1 我的机器中原本有一个LV 500G xff0c 作为nova节点的存储空间 xff0c 空间不够 xff0c 想扩容1T xff
  • DIY一套NAS+私有云盘+下载机

    如果你家里有多台设备需要联网需要娱乐 xff0c 你一定会或多或少遇到设备碎片化带来的烦恼 当然 xff0c 已经有很多厂商包括新晋的小米 360在内的互联网公司做了这个事情 xff0c 给你搞个家庭存储中心 xff0c 基本能解决你的大部