未来每个家庭都会有一个家庭服务器

2021年9月8日18:40:23 评论 0 次

“略懂的大龙猫,分享纯干货”

未来每个家庭都会有一个家庭服务器。家庭服务器的功能定位是:家用NAS、Web服务器、娱乐主机、下载机、软路由、智能家居控制中心等等。群晖、威联通等此类家用NAS,可以当做家庭服务器的初级方案,而我要介绍的是更好玩的家庭服务器解决方案。

1.为什么未来大家都需要家庭服务器

每个人手机里都有很多APP,这些APP绝大部分是互联网公司提供的客户端。客户端只要离开了服务器立马成废物,真正有价值的数据都在互联网公司的服务器里。很多人为网游氪金成千上万,实际上买的只是服务器执行几条代码的权利。话说微信就要推出聊天记录付费云备份服务,这个服务实际上是:一年付费130元就可以查看备份在腾讯服务器聊天上自己的聊天记录。这么简单的一个服务却可能会成为腾讯又一个年入千亿的大生意,由此可见数据的价值是非常大。

虽然普通人没办法和互联网巨头对抗。但拥有自己的家庭服务器,保留点自己的数据也不是什么坏事。我始终是开源社区的拥趸。

2.家庭服务器——硬件篇

2.1 服务器硬件的特点

CPU:理论上服务器的CPU内核越多越好,可以提升多任务处理能力,实际推荐4核以上;服务器CPU的能效比越高越好,服务器CPU的主频可以不太高,功耗则不宜太高;而家庭服务器的CPU还有几点建议:CPU最好带核显,便于安装桌面系统;CPU解码能力不能过时,才能满足服务器影音解码的需求;

内存:理论上服务器的内存越大越好,实际建议8G以上;

内部接口:硬盘接口至少2个以上,最好可接1个SSD+2HHD以上;最少有1个千兆网口,多网口更好;最好有PCI口,可用于拓展SAS卡等;

外部接口:至少有2个USB3.0接口;至少有HDMI接口,多个视频输出口更好;

家庭服务器相比商用服务器,选择方案更多。

2.2 小主机方案

入门级家庭服务器完全可以选择低物美价廉的功耗小主机。我自己用的个人服务器就是一台GN41的小主机,600元入手具体硬件和性能如下图:

未来每个家庭都会有一个家庭服务器

未来每个家庭都会有一个家庭服务器

N4100的性能稍逊于J4105但功耗更低,是一个还不错的选择。选择小主机时,不建议考虑构架和解码能力过时的CPU,比如:J3160、J1900、J1800、Z8300、D2550、D525……这些。这些老面孔中一些还严重溢价,比如一个双网口J1900,闲鱼有人开价600。

2.3 ITX方案

ITX主机在尺寸上小于常规主机,但是在性能和拓展性上依然很强大。选择ITX主机可以搭建性能更强的家庭服务器。既可以选择功耗较低的酷睿T系列、或者AMD的APU系列,也可以选择标压CPU,甚至配独立显卡。

我个人觉得ITX方案最大的优势是在硬盘拓展上有优势,可以接更多的硬盘。而且通过PCI转SAS再外接一台二手的LTO4级的磁带机进行数据冷备份,既经济又实用。

2.4 高端方案

小主机和ITX主机搭建家庭服务器都是比较常规的方案,大家会问有没有高端一点的方案。由于我自己没有经济实力,没有搭建过高端方案。大家可以参考王思聪的服务器搭建经验,网上应该可以搜索到配置。

2.5 ARM主机方案

上面介绍的都是x86平台的硬件方案,事实上ARM平台在功耗上更优秀。最常见的ARM小主机方案是树莓派,但我个人对树莓派没啥好感,因为树莓派硬件溢价高,二手价格远高于同性能的x86硬件。树莓派真正适合的是做嵌入式开发的朋友,对于新手我会优先推荐x86平台。对于想体验或学习ARM平台的朋友,我更建议去捡漏一些电视盒子,有不少性价比高且性能尚可的方案比如S905。

ARM在性能和软件生态上还是逊色x86不少,所以从实用角度出发还是选择x86更合适。

3.家庭服务器——组网篇

外网速度取决于运营商宽带,理论上对等宽带是最好选择,但是价格也更贵。如果你购买的宽带服务可以提供公网IP,可以为架设服务器带来很多便利。但是没有也没关系, 家庭和个人使用还是有很多解决方案的。

内网速度取决于搭建的家庭网络环境,内网建议千兆网起步。如果服务器数据传输量非常大,还可以考虑组一个旁路由网络,这样不影响主路由其它设备的联网。

下图是我个人的组网方案:因为我工作和家是在两地,所以通过zerotier组了一个虚拟局域网。我通过手机控制路由器控制家里的主机开关机,在外地时也可以远程控制家里的电脑和小服务器。

未来每个家庭都会有一个家庭服务器

4. 家庭服务器——软件篇

4.1 家庭服务器的操作系统

家用服务器的操作系统我推荐:Linux发行版或者Windows。Windows没的说大家最熟悉的操作系统,适合新手。但是作为服务器,Linux系统使用起来会更顺手。当然我并不建议安装服务器版的Linux,反而建议安装一个桌面版Linux,因为上手更简单。

也有人推荐通过EXSi搭建多个操作系统的AllinOne主机。EXSi对性能的要求比较高,不然每个虚拟机的体验一般。而且Linux+Docker灵活的解决方案,足以应付各种需求。所以我最推荐的毫无疑问是:linux发行版。

Linux发行版我推荐3个:1.Ubuntu / 2.Manjaro / 3.Linux mint;国产的麒麟 、深度也可以尝试;

接下来讲软件的案例,我均以Ubuntu系统为案例:

4.2 软件Zerotier——虚拟局域网

Zerotier是一个组件虚拟局域网的解决方案,是一个简单的内网穿透方案,可以让不同地方的设备如图在同一个局域网之中自有访问。同类软件还有Tailscale。

使用Zerotier,首先要去其官网注册一个账户,并创建一个虚拟局域网。这个局域网或有一串字符串作为标识,其它设备加入该虚拟局域网都会用到这个标识。

然后在每个设备上安装Zerotier,首先介绍家庭服务器上安装Zerotier:

#安装Zerotier
curl -s https://install.zerotier.com | sudo bash
#加入虚拟局域网
sudo zerotier-cli join 局域网字符串
#离开虚拟局域网
sudo zerotier-cli leave 局域网字符串
#查看Zerotier服务的命令,总共有 {start|stop|status|restart|reload|force-reload}这几个命令可选
sudo service zerotier-one

服务器上安装好Zerotier后,其它设备安装Zerotier就比较简单了,Windows、Android都有对应的安装包,下载安装后填写标识码加入你的虚拟局域网即可。

然后登陆Zerotier官网,进入局域网管理。这里可以看到每一个申请加入虚拟局域网的设备。你只要允许该设备访问该虚拟局域网即可。

4.3 软件WakeOnLan——局域网开机

前面介绍了我需要异地远程开机,但是我的服务器没有公网IP。所以我需要换个思路解决问题。Zerotier虽然可以组件虚拟局域网,但是不能实现局域网开机。所以我需要在异地的局域网中有一台不关机的设备,这就是智能路由。我开启了小米路由的SSH功能,然后通过安装opkg在路由器上安装了Zerotier。然后再在路由器上安装Wake on Lan,这样就可以通过SSH开启其它局域网设备了:

#安装wake on Lan
sudo apt install wakeonlan
#使用局域网唤醒
wakeonlan -i 网关 mac地址

其它设备需要开启局域网唤醒功能:

1.在BIOS中开启Wake On Lan设置,把该选项调整为Enable;

2.系统开启网卡的Wake On Lan权限;

Windows系统设置

进入设备管理器,在网卡属性的“高级”标签里设置“关机网络唤醒”开启和“魔术封包唤醒”开启。在“电源管理”标签里勾选“允许计算机关闭此设备以节省电源”和“允许此设备唤醒计算机”。

未来每个家庭都会有一个家庭服务器

这里要吐槽一句,Windows采用局域网唤醒必须把登陆密码取消不然意义不大。

Linux系统设置

#查看mac地址和网卡名
ifconfig
#查看是否开启了WakeOnLan,如果有Supports Wake-on: g和Wake-on: g这两项则支持且开启了局域网唤醒
sudo ethtool 网卡名
#如果支持局域网唤醒但是没有开启输入以下命令
sudo ethtool -s 网卡名 wol g

mac地址不好记,你可以通过alias命令设置开机别名,操作起来就会顺手很多。如果你对我这一段讲解感觉懵懵的,我会专门写一篇文章详细讲解这里面的技术细节。

4.4 软件Calibre——个人电子书库

如果你家里有Kindle,那么Calibre可以提升Kindle的阅读体验。Windows系统可以使用安装包安装,Linux则可以用命令行安装:

sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin

在Ubuntu上安装Calibre后,打开Calibre开启内容服务。局域网内所有设备都可以通过浏览器访问书库。如果你有Kindle你会发现这种方式比推送爽太多。而且不仅是Kindle,手机平板都可以直接浏览书库非常方便。

4.5 Samba——搭建文件服务器

目前最流行的个人文件共享解决方案还是Samba。linux安装Samba也非常简单:

#安装samba
sudo apt install samba

安装完毕后,只需要把指定文件夹设置成共享,其它主机只需要通过访问局域网主机IP地址,即可访问服务器共享的内容。

4.6 搭建下载服务器

家庭服务器完全可以作为下载机。作为下载机第一个方案是安装百度网盘的客户端,进行挂机下载。Linux下也有百度网盘的客户端,这一点百度网盘做的还算良心,但是下载速度也就200kb。

BT下载可以用transmission,然后开启Web服务开启局域网下载。通过zerotier搭建虚拟局域网可以实现远程下载。

#安装transmission
sudo apt install transmission
#安装qbittorrent
sudo apt install qbittorrent

更普遍的下载服务器解决方案是aria2其设置稍稍复杂,所以我接下来会用专题写写。transmission和aria2都有很不错的安卓客户端,只要你搭建好服务使用非常方便。

4.7 Web服务器和Docker的玩法

Web服务器和Docker的玩法才是最多样的,这里暂时不拓展讲解了,后续我会持续进行更新……