OpenWrt/LEDE 搭建 Syncthing p2p 私有文件同步服务

简介 因为最近团队有文件同步的需要,常见的公有云服务要么就是不靠谱要么是速度慢,要么就是太贵:expressionless: 饱受好评的坚果云则是限制流量而且据说有隐性限制。 家里上传有 30M 带宽,足够满足常规的文件同步了。常见的私有云系统有 NextCloud/Syncthing/Resilio(BTSync)。NextCloud 更像是一个私人网盘,属于c/s模式,对中心服务器稳定性要求极高,家里路由器感觉无法担此重任。BTSync 是一个基于 BT 的同步软件,近年来大陆的 BT 情况并不好所以也暂不考虑。最终采用 Syncthing。Syncthing 是一个开源免费的文件同步系统,有多平台支持(官方不支持IOS,有一个第三方的收费客户端)。 Syncthing 是分布式的,不依赖中心服务器,如果节点有公网 IP 那么会走直连同步,否则走中继。Syncthing 有不少免费开放的公共中继节点可惜都不在大陆,速度比较慢。如果非常介意可以搭建一个私有中继服务。 先看看成品图: 安装 需要强调:Syncthing 是不分服务器/客户端的。本文仅把路由器节点作为逻辑上的「服务器」以便保证任何时候都有具有公网 IP 的节点在线以便加速传输。 在 release 页面可以看到各个平台编译好的安装包。由于我使用的是 J1900 软路由,所以选择 linux-64 版本。 # 进入用于保存程序的目录 cd /mnt/sda5/ # 下载程序 wget https://github.com/syncthing/syncthing/releases/download/v1.3.0/syncthing-linux-amd64-v1.3.0.tar.gz # 解压 tar -zxvf syncthing-linux-amd64-v1.3.0.tar.gz # 为了方便整洁改个名字 mv syncthing-linux-amd64-v1.3.0 syncthing # 给予执行权限 chmod +x syncthing/syncthing 其实到此为止我们直接执行 syncthing 就能开启服务了。它默认会在 \$HOME/.config/syncthing 创建配置文件。不过我们干脆一次性配置完再运行也不迟。 # 创建一个软链接,就可以在任何目录下执行了 ln -s /mnt/sda5/syncthing/syncthing /usr/bin/syncthing 开机自启...

October 12, 2019 · Chenhe

一步步把路由器变成NAS—离线下载+文件共享 AND MORE

家里升级了电信200M宽带,上行也提高到了20M,原来的百兆路由器已经不能满足需要了,经过一番比较最终入手了华硕AC86U。不过那么快的网速加上辣么棒的路由器,不做点别的实在太可惜了。折腾了一会后,成功实现媒体服务器、离线下载、远程管理、文件共享等诸多功能,着实提高了生活质量。 软硬件准备 路由器 路由器:华硕AC86U 固件:梅林 其他设备例如部分网件路由器也可以刷梅林固件,不行的话只好找其他固件或插件实现。本文提供的是一个思路,不同设备固件有不同的实现方法。 外接存储设备 我选择了一块闲置东芝USB3.0移动硬盘,直接插到路由器USB口即可。格式推荐用NTFS,路由器和windows都可以识别。 因为USB3.0与2.4G WIFI 有干扰,路由器默认限制了USB性能以减低干扰。不过家里大多数常用设备都使用5G频率,故这里关闭此功能。这个设置位于无线网络—专业设置—2.4G频段下。 媒体服务器 顾名思义,媒体服务器专门提供媒体资源,与FTP等文件传输协议不同,媒体服务器不需要预先下载到本地,可以在终端设备在线观看视频,并支持拖拽快进等操作。需要强调的是,媒体服务是协议级别的,因此它并不需要特别的设备、特别的系统或指定某公司的APP,简而言之就是任意一个设备接入局域网后都可以实现流媒体播放。如此一来路由器可以作为全家的媒体库,其中储存的电影可以在电脑、手机、平板、电视等设备随时播放。 梅林固件开启媒体服务非常简单,在USB相关应用—媒体服务器下可以轻松开启。 默认情况下会共享存储设备里所有媒体,如果不想这样可以选择手动设定媒体服务器路径,然后在下方添加想要共享的目录以及文件类型即可。 PS:媒体服务器中文件目录并不是按照实际路径显示的,而是根据类型自动分类。因此看到的文件位置不代表其真实路径。 PC端观看 以 WIN10 系统为例。打开网络,即可在媒体设备分组中找到我们的媒体服务器。右击选择打开媒体播放机即可浏览媒体库并在线播放。 桌面没有「网络」? 在桌面右击,选择「个性化」,在打开的设置页面左侧选择「主题」,在右侧点击「桌面图标设置」,勾选「网络」即可。 在 WIN7 等系统中,「网络」也叫「网上邻居」。 手机、平板观看 以 Android 系统为例。其实手机端大多数播放器都支持播放流媒体,但不是所有都支持扫描发现局域网中的媒体服务器。所以首先需要安装可以扫描发现媒体的应用,「VLC」以及「ES文件浏览器」等是具有此功能的。这里以 VLC 为例。 VLC 是著名的开源、跨平台的媒体播放软件。支持 Windows、Linux、Mac、Android、IOS 主流系统。 进入 LVC 点击左上角菜单按钮,选择本地网络,即可扫描到我们的媒体服务器,点进去选择文件就可以播放了。 电视观看 首先得确定电视是智能设备,或者有小米盒子之类智能机顶盒也行。这里以小米盒子为例。 小米盒子内置应用「高清播放器」自带局域网发现功能。打开高清播放器,在主页就可以看到路由器的视频已经扫描到并聚合在一起了,点击即可播放。如果想单独浏览,可以切换到设备选项卡,在DLNA设备中可以看到我们的媒体服务器。 PS:在设备选项卡,可能会看到一个名称类似的网络共享设备,点进去也可以浏览文件并播放,这是后面要讲的文件共享。他和媒体服务器功能有一定重叠。 离线下载 离线(远程)下载与媒体服务器(文件共享)简直是绝配。试想:在外面提交一个电影下载任务,回到家正好下载完,此时随便一个设备接入WIFI就可以开始欣赏,甚至可以中途切换设备。生活岂不美滋滋 (′▽`〃) 华硕固件自带一个离线下载器,位于USB相关应用 — Download Master,不过感觉并不是很好用,只能支持传统的下载链接。而国内情况是好多资源在百度云、115等网盘。所以这里使用「Aria2」实现。 Aria2 是一个跨平台轻量级下载工具。支持 HTTP(s)、FTP、SFTP、BT、Metalink 多种协议。其本身是纯命令行控制的,但是可以通过 RPC 协议实现可视化远程控制。亦可以通过 RPC 接入百度云等网盘。 听不懂这些?没关系,只要知道它很好用就OK了。 幸运的是,梅林固件软件中心有 Aria2 插件,大幅简化了安装配置。 Aria2 服务器配置 从软件中心安装 Aria2,点进去开始配置。开启后,大多数保持默认即可。下载存储目录是默认的文件保存目录,默认是第一个USB设备的根目录,如果没有USB设备则默认是路由器内存(小的可怜)。磁盘缓存大小指的是下载的数据缓存多少时再一次性写入存储设备,可以减少硬盘读写次数,一定程度延长硬盘寿命。默认是0,不要改得太大,否则内存也不够用。...

April 22, 2018 · Chenhe