部署网心云——利用闲置宽带赚钱
我大约是从2020年开始接触PCDN,当时在我的小出租屋里面,通过Windows Hyper V部署了一个网心云,本就抱着试试看的态度,没想到收益竟意外的不错,从此就踏上了PCDN赚钱之路。在此也总结一下以往的经验。
大前提
PCDN的本质就是利用闲置的带宽以及硬盘资源,帮大公司缓存内容,从而加速其用户加载资源的速度。比如哔哩哔哩,当用户播放视频的时候,有可能并不从哔哩哔哩的服务器加载,而是从我们的PCDN设备直接加载,一方面节省了公司的带宽,另一方面,由于我们的设备可能距离用户更近,从而也提高了加载速度。
若要玩转PCDN业务,我们需要有3个大前提:
闲置的计算机
可以是笔记本,台式机,甚至是树莓派,电视盒子。
闲置的硬盘
由于需要缓存内容,因此需要较大容量的硬盘。
合适的宽带
PCDN对于宽带的要求较高,一方面,上传速度要尽可能快,另一方面,要尽可能提供从外网访问内网的途径。
对于第一点,由于国内的民用宽带大多为非对等宽带,上传速度非常受限,一般从10Mbps到100Mbps左右,可以使用speedtest进行测速,如果速度低于10Mbps,部署PCDN的意义就不大了。
对于第二点,如果要做到外网设备访问内网设备,一般有3种途径来实现:
- 公网IP:PCDN设备拨号后直接获取公网IP。
- 映射公网IP:光猫、路由器等拨号,且PCDN设备接在开启了获取了公网IP且开启了UPnP的设备下。
- 全锥型NAT:需要PCDN设备主动访问公网设备,由公网服务器记录我们的真实IP及端口,并将此信息同步给客户端,实现外网IP+端口到内网设备的访问,也就是我们常说的UDP打洞。
如果我们的网络无法满足以上条件,也没有必要部署PCDN设备。
部署模式
网心云主要提供了3种模式:嵌入式设备、X86、docker。
嵌入式设备
网心云称为三方盒子,主要包括以下几种:
其安装方式根据设备不同而不同,但基本上都是直接将带分区的系统镜像写入Flash当中。
X86
基于X86平台的系统包括以下几种:
X86平台与我们平时接触的Windows和Linux系统相似,安装过程也极为类似。相对于嵌入式设备,X86平台的上限更高,适合大带宽的玩家,当然,其占用的系统资源也是最大的。普通的家用带宽很可能是回不了本的。
Docker
这是我目前最喜欢的一种部署模式,因为PCDN本质上就是一套用户态的应用程序,为了几个应用程序而安装整个系统,会造成大量资源浪费。而使用Docker就可以兼具功能和资源消耗。
虽然这种模式非常适合小带宽玩家,但是官方似乎并没有特别宣传此种方式,甚至在官网都找不到特别详尽完整的教程,因此本文着重对此种方式进行描述。
安装Docker
我们可以直接按照Docker官方文档来安装:
下载网心云docker镜像
1 | docker pull onething1/wxedge |
启动镜像
这里分为两种情况:
使用host网络。配置简单,但是只能部署一个container,且会影响host网络,延迟较大。
1
2
3
4
5
6
7
8
9docker run -d \
--name=wxedge \
--restart=always \
--privileged \
--net=host \
--tmpfs /run \
--tmpfs /tmp \
-v 磁盘路径:/storage:rw \
onething1/wxedge使用macvlan网络,配置复杂,但不会影响host网络,隔离性更好,延迟也低一些。
1
2
3
4
5
6
7
8
9创建macvlan,假设网关是10.0.0.1
docker network create -d macvlan \
--subnet=10.0.0.0/24 \
--gateway=10.0.0.1 \
-o parent=enp3s0 \
macvlan0
创建resolv.conf文件,否则会使用docker默认的DNS服务器,造成网络识别错误
sudo bash -c "echo nameserver 10.0.0.1 > 磁盘路径/resolv.conf"1
2
3
4
5
6
7
8
9
10
11docker run -d \
--name=wxedge \
--restart=always \
--privileged \
--net=macvlan0 \
--ip=10.0.0.100 \
--tmpfs /run \
--tmpfs /tmp \
-v 磁盘路径:/storage:rw \
-v 磁盘路径/resolv.conf:/etc/resolv.conf \
onething1/wxedge
部署完成后,就可以通过http://10.0.0.100:18888访问了。
使用此种方式还有一个隐形大坑,container会向overlayfs写入大量数据,造成根目录所在的分区快速减少,如果你的系统分区不大,建议将docker目录迁移到其他分区。
1 | 停止服务 |
参考
Change Docker root directory /var/lib/docker to another location