记录一次搭建家用小型服务器的经历

0. 前景提要

由于一直有个想法,就是搞一套自己的云端开发环境。

 

0.1 希望不管是在家里,还是公司,还是任何一个地方,甚至是手机、平板。只要能联网,就能连接上自己熟悉的开发环境开始开发。

 

0.2 由于阿里服务器太贵了(阿里云香港1H2G1M,3年1800+),并且在国内的服务器、网站一定要备案(我玩腻了com域名,在搞花里胡哨的后缀域名,不能备案),就很麻烦(虽然我也不搞法外之事)。而国外的服务器呢,很便宜,但是可用性要持怀疑态度,并且可能经常换服务器(被墙了、IDC跑路了、又发现了一家新的更便宜更好的IDC)等原因,来回配环境、备份迁移数据库,太麻烦了。

 

所以萌生了一个念头---->组建自己的家用小型服务器

这样就可以:

 

0.3 省钱,硬件不坏就可以一直用,哪个硬件坏了更换哪个

 

0.4 稳定,数据库的数据在自己的硬盘上,写好定时任务定期同步至onedrive和googledrive,稳定性99.99999%

 

1. 硬件准备

 

家用小型服务器嘛,我的原则是【小、安静、功耗低、性能强劲】。一开始在这几项里面纠结,我相信有组建家用服务器、NAS、HTPC的人都考虑过下面几款:

【新创云等超迷你无风扇主机】优点:小,安静,功耗低。缺点:J1900性能不太够(600价位),当小服务器跑项目还行,我还想搭建开发环境就不够了,没有硬盘位没法当NAS,视频解码能力相当差,当HTPC够呛。而I3/I5/I7低压u的价格都要到1000+去了,真的贵,不划算,最后被我排除。(如果没打算搭建开发环境或者当NAS、HTPC,这款非常好)

【星际蜗牛】优点:价格便宜(普通C款300,皇帝C款450),功耗低,硬盘位多,C款皇帝版13SATA位,双网口可做软路由。缺点:看起来很好,但是问题有点多。电源一般都要换,风扇也要换,换了声音也有点大。体积不小有点占地方。这么添来添去一换下来价格就上去了,并且我其实没有做NAS的需求,硬盘太贵我买不起。。。J1900性能同样不够我用。除了机箱最好,其他的硬件品质都一般般。所以这款也被我PASS了(如果拿来做NAS的,我觉得C款皇帝版是首选,到手后换个靠谱电源扔储物室里完全OK)

【酷播云2】优点:功耗低,性能比上面俩好(J3455),用料比较扎实。缺点:价格相比上面两个有点贵了(720无硬盘内存),只有两个SATA口(如果组件家用HTPC,小服务器,8T需求以下的NAS,这个首选)。但是这个性能仍然是。。。我感觉有些许欠缺。

最后我了解到了【ITX主机】,缺点是价格贵,功耗高了一点。优点可太多了:比星际蜗牛、酷播云体积小的多,可扩展性强得多,性能强几倍,安静程度仅次于无风扇的服务器,离开20厘米就听不见任何声音,硬件都是大牌可信赖稳定性高。

 

组成了这样的配置:

机箱:迎广肖邦

散热:乔思伯HP400

电源:台电150W

主板:微星B250I PRO

CPU:I7-7700T (ES版)

内存:光威8GDDR4 2133+海力士8GDDR4 2133

硬盘:西部数码240G NVME 

这一套下来分别收到手总和是花了1650块钱。比上面的三种方案贵了一些,但是上面的方案要么是配不到16G内存,要么是改装配到了,价格不比这个便宜多少了。

体积小,漂亮,安静,待机功耗不到10W,满载功耗40W,各硬件也基本是二三线牌子,可比上面说的强多了。

后续扩展性的话,主板电阻短接支持到8代U,U也可以换标压的,内存最大支持32G2400,硬盘还有4个SATA口。

整体而言非常满意。

下面附几张偷来的图,机箱是一样的所以拍出来效果也是一样的,大家可以看一下大小

记录一次搭建家用小型服务器的经历_第1张图片

记录一次搭建家用小型服务器的经历_第2张图片

 

 

 

 

2. 系统准备

 

这台小服务器,一方面是装数据库当服务器,另一方面也要搭建云开发环境。所以非图形化界面的各种CentOS/Ubuntu Server之类的直接就不考虑,要装带桌面环境的

 

2.1 【Manjaro】我对Manjaro这个系统可真是又爱又恨。

 

2.1.1 爱就不谈了,arch系的Linux魅力,想必有所耳闻的都应该知道,AUR,滚动发版,强大的WIKI。

 

2.1.2 恨的话得谈谈。我目前还只是个Linux小白,后面遇到的问题或许其实有非常简单的解决办法,但是我没法解决:

 

2.1.2.1 最开始接触Manjaro的时候,我是在Windows上,装了个VMware虚拟机,在虚拟机里面装的Manjaro,然后就遇到了一个问题:不装VMware Tools没法Windows向Manjaro复制粘贴东西,装了VMware Tools,Manjaro没法全屏,窗口就只有600*480,这我谷歌百度都没法解决。

 

2.1.2.2 Manjaro上装输入法,说实话在Windows上我觉得最好用的输入法是手心,但是在Mac和Linux里就只能选搜狗输入法了,谷歌拼音、小狼豪(RIME)我都不喜欢,没有搜狗拼音顺手。在Manjaro上的搜狗拼音的依赖库是有问题的,需要装很多老版的依赖库,然后软链接过去。可以弄成功,但是真的很麻烦,我这人最讨厌麻烦了,这种无谓的麻烦。

 

2.1.2.3 在虚拟机里,Manjaro会睡死,没有办法解锁,点什么都没反应,甚至会带着虚拟机睡死,导致任务管理器都没办法强制关闭VMware。

 

2.1.2.4 上面这些仍然没有浇灭我的热情,我觉得1,3都是虚拟机的BUG,我买了ITX主机以后一定可以解决的。然而上面的硬件都到了,拼好之后装了Manjaro,几天的时间死机了2次(长时间不操作后自动注销,登录进去之后卡在界面,什么都操作不了)【我每次安装都是从Manjaro的官网下的最新iso,非老版/第三方网站下的】,我搭建这小服务器肯定得稳定运行啊。Manjaro被我放弃了。

 

2.2 【Windows Server、Windows】我本身也是为了学习练手一下Linux环境,这个尽管我最熟悉最喜欢,但是还是要往后稍一稍的,是最后的备选项

 

2.3 【Ubuntu】之前在虚拟机里一直用的是Ubuntu,用的也习惯了,不美化的话做桌面版太丑了,想换换新的

 

2.4 【Mint、MX Linux】后续备选(然而我估计要是Deepin遇到问题最后我不用了的话,最有可能还是拐回Ubuntu了,毕竟Linux桌面版实际的老大哥,参照这个下载量:https://snapcraft.io/chromium  ,还有谷歌趋势,其它的还是弟弟,除了丑也没别的缺点了)

 

2.5 【Deepin】国产之光 之前一直听别人吹这个系统,但是我是嗤之以鼻的。。。我觉得没有商业巨头管理维护(如Red Hat系),没有大型企业大规模实际应用,社区活跃度一般般,这系统怎么能用嘛

--------------------------------------真香--------------------------------------

我非常喜欢Deepin的桌面,网上的各种Ubuntu/Manjaro所谓的美化,基本都是给美化成Mac的样子,何必呢???????我喜欢Mac的风格的话我为啥不用Mac???

我不喜欢Mac,我家现在还有一个2016款15寸MacBook Pro,I7,16G,带Touch Bar,给对象用了。对Mac的不喜欢是一点一点累积起来的,除了全局可用的cmd+w/q,cmd的位置非常合理,用大拇指就可以很轻易的按到以外,对Mac没有任何留恋,反倒是想到Mac就头大。

而deepin有显然异于Mac OS的界面(原版Manjaro也有),我非常喜欢。

目前的话,用起来,Ubuntu怎么用Deepin也怎么用,遇到问题了直接搜Ubuntu的解决办法,在Deepin上99%都管用,开箱即用,非常舒服。

所以以下都是基于Deepin的系统来说的,Ubuntu也可以参考着用。

 

3 软件准备

 

3.1 富强,这个在博客园不能多说,要被和谐,以后个人博客开起来了在里面补充。重点是不能用带R的,只能原版的,我也不知道为啥。记得开启系统网络代理那里,手动代理,S0CK转发那里填上127.0.0.1:端口,这里不建议用默认的1080,可能会被占用,改个不常用的就行。Chrome也不用按照网上下那个代理插件了,设置好直接用就行了,至少Deepin里面是这样的。

 

3.2 一台有公网的服务器提供FRP。如果家庭宽带有公网也可以用,不过部分家庭宽带的公网没有80和443端口。有的有80和443端口,hostloc的老哥说也是有井茶叔叔邀请喝茶的风险,不仅仅是涉及到返洞,抱利,帆强什么的,诸如版权问题,交互性(比如论坛/留言),还有一些自己不经意间就违规的情况。所以保险起见还是不要用家庭宽带的端口放网站了,当然要是只放个数据库走数据库的端口这完全没问题。服务器尽量选择延迟低,带宽大的。国内的服务器,阿里,腾讯之类的,也就1-5M的小水管还特别贵。。。实在是扣啊。。。国外的IDC商自己找,建议找香港>日本>新加坡>台湾>美国西海岸圣何塞等有CN2的机房,只拿来做FRP转发,对机器配置无要求,可以买最低配的VPS,但是不能买虚拟空间。

 

3.3 FRP,这部分重点说一下,FRP的作用是,将请求到FRP SERVER(FRP服务端)某端口的请求,转发至FRP CLIENT(FRP客户端),不论服务端所在的网络环境是否有公网IP。这样的话放在家里的服务器就可以打开一扇对外的大门,具体原理可以自行搜索。

 

3.3.1 FRPS(FRP 服务端)配置

 

在公网服务器上下载安装FRP,以Linux服务器为例,输入:

arch

可以查看服务器架构,如果输出x86_64就直接用我下面的代码,如果不是就自己去frp的github https://github.com/fatedier/frp/releases 找包替换地址

如果提示没有安装wget就安装个wget,自行搜索自己服务器系统+安装wget

复制代码

cd /root
# 下载
wget --no-check-certificate https://github.com/fatedier/frp/releases/download/v0.27.1/frp_0.27.1_linux_amd64.tar.gz
# 解压
tar -xzvf frp_0.27.1_linux_amd64.tar.gz
# 文件夹名改成 frp,不然目录太长了不方便
mv frp_0.27.1_linux_amd64 frp
cd frp
# 确保 frps 程序具有可执行权限
chmod +x frps

复制代码

运行一下

./frps --help

如果打印出了很多提示信息,说明安装正确了。不正确的话自行确认安装的版本是否正确

编辑frps.ini,如果没有vim就自行下载,或者用你们习惯的文本编辑方式

vim frps.ini

里面的东西都删掉(如果有的话),换成下面的内容,注意【】内的需要替换成你们自己的,连带【】括号一起删掉,其实各种端口,token,都可以改成自己的

复制代码

[common]
bind_port = 7000
token = 12345678
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
vhost_http_port = 10080
vhost_https_port = 10443
subdomain_host = 【你自己的域名,好像也可以不设置这一条,在客户端直接连IP也行,不过我有域名就直接这么设置了,以后换服务器也方便】

复制代码

编辑/etc/rc.local,在exit 0 前加上下面这句话,开机自启

nohup /root/frp/frps -c /root/frp/frps.ini &

如果打开这个文件是空的,那就在文件的最后新起一行输入

exit 0

保险起见给文件加上权限

sudo chmod +755 /etc/rc.local

测试一下脚本

sudo /etc/rc.local

要是打印出来的信息没有报错,配置FRPS端的步骤就完成了,重启一下服务器

 

3.3.2 FRPC(FRP客户端)配置

 

根据ITX主机的架构,下载FRP

复制代码

cd /root
# 下载
wget --no-check-certificate https://github.com/fatedier/frp/releases/download/v0.27.1/frp_0.27.1_linux_amd64.tar.gz
# 解压
tar -xzvf frp_0.27.1_linux_amd64.tar.gz
# 文件夹名改成 frp,不然目录太长了不方便
mv frp_0.27.1_linux_amd64 frp
cd frp
# 确保 frpc 程序具有可执行权限
chmod +x frpc

复制代码

编辑frpc.ini

复制代码

[common]
server_addr = 【你服务器的ip或者解析到该ip的子域名,如:frp.domain.com】
server_port = 7000
token = 12345678
http_proxy =

[vnc]
type = tcp
local_ip = 127.0.0.1
local_port = 5901
remote_port = 5901

复制代码

编辑/etc/rc.local,在exit 0 前加上下面这句话,开机自启

nohup /root/frp/frpc -c /root/frp/frpc.ini &

如果打开这个文件是空的,那就在文件的最后新起一行输入

exit 0

保险起见给文件加上权限

sudo chmod +755 /etc/rc.local

测试一下脚本

sudo /etc/rc.local

要是打印出来的信息没有报错,配置FRPC端的步骤就完成了,重启一下本地的机器

 

3.4 远程连接

 

这里尝试了几种方案:XRDP,X11VNC,AnyDesk,经过个人的测试,连接效果都不能让我满意,最后用了VNC

 

3.4.1 本地服务器端

sudo apt-get install vnc4server

修改连接密码,最低6位

vncpasswd

然后创建启动项

sudo vim /etc/init.d/vncserver

在里面输入

复制代码

#!/bin/sh
### BEGIN INIT INFO
# Provides:          vncserver
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop vncserver
### END INIT INFO
 
# More details see:
# http://www.penguintutor.com/linux/vnc
 
### Customize this entry
# Set the USER variable to the name of the user to start vncserver under
export USER='【你登录的用户名】'
### End customization required
 
eval cd ~$USER
 
case "$1" in
  start)
    # 启动命令行。此处自定义分辨率、控制台号码或其它参数。
    su $USER -c 'vncserver -geometry 1920x1080 -alwaysshared -httpPort 5901 :1'
    echo "Starting VNC server for $USER "
    ;;
  stop)
    # 终止命令行。此处控制台号码与启动一致。
    su $USER -c 'vncserver -kill :1'
    echo "vncserver stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/vncserver {start|stop}"
    exit 1
    ;;
esac
exit 0

复制代码

修改权限

sudo chmod 755 /etc/init.d/vncserver

添加开机启动项

sudo update-rc.d vncserver defaults

重启本地服务器,就好了

3.4.2 任意一台联网的设备想远程控制服务器的设备上,去这里下载VNC VIEWER

https://www.realvnc.com/en/connect/download/viewer/

输入之前在FRPC中绑定的

子域名:5901

输入密码,就可以控制了

效果受制于网速,经过我的测试这个是我的所有环境下,控制最快的,毕竟是远程环境。。。

最终效果:

记录一次搭建家用小型服务器的经历_第3张图片

 

 

 

3.5 NAS

本身装的就是Linux系统,所以可选项很大,我现在暂时没有这个需求,就不折腾了,但是把解决方案先放在这

owncloud

 

3.6 HTPC

Plex for Linux/Kodi for Linux

你可能感兴趣的:(网站,程序设计)