做为一个移动端的开发者,对服务器的需求比较小,以至于在这之前,买过半年的百度云的云服务器,又买过一年阿里云的云服务器,但都是“闲置”过了使用期,在上面的操作也仅止步于安装Linux系统呀,部署Apache、Tomcat环境呀,虽然买的时候就信誓旦旦得想着“要干出一番事业”,但到了续费的时候就又有点心疼钱了。

在去年双十一的时候,各种群里又是转发的各种云服务器的优惠,奈何很多优惠都是“新用户专享”,而对于一个已经把财政大权交与老婆的已婚男人来说,续费一个非常可能被我闲置的云服务器的钱也是一笔大的开支。于是就开始想着何不自己部署一个,一是省钱(这一套下来花费不到260元),二是你可以拥有对这台服务器完整的控制权。

如果你也对云服务器的需求不是很大,偶尔用一下又不想花太多的钱,且没有找到解决方案的时候,本文可能对你有所帮助。

购置硬件

  1. 二手主机。

主机当然必不可少了,如果家里有闲置的二手主机可以直接利用。没有的话可以像我一下在闲鱼上购买一台,卖家标价300,因为是同城我去自提的,卖家很痛快的只卖了250.至于配置(奔腾G630@2.7GHZ+4G+500G),对于我来说完全够用了,而且也很超值,毕竟云服务器的入门级配置也很低嘛。

  1. DVI转HDMI高清转换线。

因为家里有台三星的电视机,所以买主机的时候没有顺带买二手显示器。带着主机回了家发现缺少主机和电视之间的连接线,于是又上闲鱼看了看二手显示器,本地二手显示器(自己能看得过去的)报价大概在100元上下,后来发现京东上的DVI转HDMI线只需要8.9元(vga转HDMI的线比这个略贵,而且DVI比VGA还好一点),于是果断毙掉买显示器的打算,在京东下单了DVI转HDMI的转接线,那台主机上正好有DVI接口,而我家的电视机上也有HDMI线,京东的物流很快~

以上就是我购置的全部硬件了,总共花费258.9元。

系统安装与配置

如我所愿,DVI转HDMI转接线回来后就可以安装系统了,我安装的是CentOS,安装过程在这里就不赘述了,唯一需要注意的点就是做好安装U盘后,需要把安装U盘的名字改的简短一点,不该的话安装过程会出错。

远程开机

台式机摆家里的话,如果7*24小时开机,可能有人会担心耗电的问题。于是就想到了远程开机,只有在要用的时候再开机,不用的时候就关机,这样就两全齐美了。目前常用的远程开机有两种方案:

  • 使用智能插座,在主板上设置通电自动开机。我查了一下一个这种插座得六十多,智能家电真是暴利行业。
  • WOL(Wake On LAN)局域网唤醒技术,原理其实也很简单,就是在局域网中向指定的网卡发送一个UDP数据包(Magic Package),那台电脑就可以自动开机。

因为之前就一直关注花生壳这个产品,所以知道他们家另一个叫“向日葵开机棒”的产品,在网上查了一下才知道WOL(Wake On LAN)这种技术,使用这种技术需要在BIOS设置里设置开启WOL,然后进入系统后在网卡设置里设置开启WOL即可,WOL也是个比较老的技术了,所以现在大部分主机都支持这个功能。向日葵开机棒官网还有个专门的页面讲述了在不同的系统中如何配置,可以参考一下:Wol是什么意思?如何实现wol网络唤醒?

在系统中配置好远程开机后,你还需要一个程序给你的主机发送开机指令,有三个方案可供参考:

  • 路由器支持。有一些路由器本身就支持WOL,还有一些路由器上面可以安装对WOL的功能,具体的可以登录自己路由器的管理网页或路由器应用市场进行查看。这种方案比较简单,只需要在路由器配套的手机App上就可以让家里的主机启动。
  • 路由器端口转发。如果路由器不支持WOL,可以选用此方案。在手机上安装一个WOL应用(可以在自己手机的应用市场搜索,很多的)。然后通过WOL应用向路由器的公网IP发送一个WOL的UDP包,路由器收到这个数据包后再转发给局域网中的那台主机,基本上有这两个方案就可以满足绝大多数用户了。
  • 向日葵开机棒。对于土豪来说,当然可以选择现成的产品。

以上配置好远程开机后,出门在外就可以通过自己的手机遥控家里的服务器开机啦。

顺便提一下关机

开机后,就可以用自己喜欢的远程管理软件来远程控制家里的服务器了,远程的软件很多,比如VNC、TeamViewer,我一般是用SSH,这些远程软件都能实现远程关机。

随着使用频率的增加,关机操作也会让人觉得麻烦,最近因为新冠肺炎在家待岗,每天晚上睡觉前都需要关机,虽然关机操作并不复杂,ssh登录+shutdown命令就够了,单位还是烦了,想起来iPhone上的“快捷指令”,这是Apple提供的一个自动化操作功能,里面内置了好多操作可以帮我们实现一些重复性的操作。比如,里面内置了一个叫“通过SSH运行脚本”的操作,可以在这里操作里配置上shutdown命令来命令服务器关机,配置操作也非常简单。于是我现在只需要向Siri说一句:“关闭服务器”,服务器就自动关闭了,还没用过快捷指令的iPhone用户赶紧去试试~

远程访问

现在来说,大部分的ISP都给用户分配了一个临时的公网IP,当然也不排除有的运营商只给分配的内网IP。对于没有公网IP的用户,可以使用花生壳提供的内网穿透功能,在局域网内的主机上安装花生壳软件实现内网穿透的功能(我这边的ISP提供了共网IP,所以我并未验证这一点)。花生壳还提供了另一个功能:DDNS,由于运营商提供给我们的公网IP只是临时的,可能会变,而这个IP变来变去的话,通过这个变化的IP访问家里的局域网并不现实,DDNS会给你分配一个域名,而不管你家的IP如何变化,只要访问那个域名都会指向家中路由器的IP。

到目前为止,我用过的路由器都支持花生壳的DDNS功能,只需要在花生壳注册一个账号,在路由器的管理页面中设置好这个账号,就可以通过花生壳分配的域名访问家里的路由器的IP了。要想访问局域网内的主机,还需要最后一步:端口映射 or DMZ主机,这两个功能都是可以在路由器上设置的,二选一。

  • 端口映射:顾名思义就是可以把路由器的端口A映射到局域网内某天主机的端口B上,这样访问路由器的端口A就相当于访问局域网的端口B了。
  • DMZ主机:可以把局域网内的某台主机设置为DMZ主机,设置后,不论访问路由器的哪个端口都相当于访问DMZ主机的对应端口。

需要注意的是,ISP并没开放分配给我们的IP的一些常用端口,比如http协议的默认端口:80端口,所以使用这种方式部署http服务后只能通过其他端口来访问http服务。我的运营商连8080这种端口都封了,所幸SSH的默认端口可以用,而且https的默认端口也可以用。

总结及后续

以上的步骤做完后,一台私有云服务器就可供使用了,如果想要达到更好的体验,还可以:

  • 绑定自己的域名,只需要在自己的域名上添加一条CNAME记录到花生壳注册的DDNS域名上即可。
  • 配置HTTPS,因为80端口无法使用,配置好HTTPS后,就可以通过HTTPS的默认端口访问Web服务了。

考虑到篇幅有限,故各步骤都是讲了一些原理,没有给出具体操作图文教程,有疑惑的地方可以自行百度了解或联系本人,敬请谅解。

20200615更新

在去年花250块买了那台二手主机后,考虑到台式主机噪音大、功耗高等问题,后来又在闲鱼入手了一台玩客云,因为矿难,虽然官网上标价599,但闲鱼上的二手货只卖40元左右。对于对性能要求不高的需求来说,无疑是更好的选择。最近在玩客云上刷了armbian系统,然后部署了Nginx服务器,配置好了域名及https访问,需要注意的一些地方:

  1. 玩客云刷Armbian系统(Armbian是debian系统的一个分支,主要用于arm架构上)。网上有很多教程,百度里搜到的基本上是同一个教程,但这个教程比较老,坑也比较多,需要自己敲命令,即便是经常敲命令的我都敲错好几次。后来是跟着B站上的一个视频教程才刷好,所以建议你也直接去B站搜教程,B站上这个教程提供了傻瓜式的操作方式,很好用。
  2. 刷Armbian系统的时候需要用到几个工具:公对公USB数据线、USB转ttl模块,这些在淘宝上都能找到,买最便宜的就能满足需求,我买了一条公对公的数据线、公对母数据线、usb转ttl模块(送了杜邦线)总共花了10块钱。另外一个要说明的地方是,如果有杜邦线就不必买公对母数据线了。

这套方案更加实惠,我的玩客云花了45元,刷机工具(各种数据线)花了10块,这就是全部的支出了。而且玩客云耗电量很小,24小时开机也不需要担心电费,这就使在上面执行一些定时任务成为可能。体积也是非常小,可以轻松的和路由器、光猫一起放在家里的弱电箱里。