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口。

整体而言非常满意。

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

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 requiredeval cd ~$USERcase "$1" instart)# 启动命令行。此处自定义分辨率、控制台号码或其它参数。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.5 NAS

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

owncloud

3.6 HTPC

Plex for Linux/Kodi for Linux

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

  1. 树莓派制作家用服务器,树莓派搭建家用小型NAS服务器

    你是否还在为从网盘下载文件被限速而捶胸顿足无可奈何呢. 假如你的手头正有一块rapberry和闲置的移动硬盘,那么恭喜你,你可以很方便的搭建一个专属于自己的文件共享服务器NAS,适时备份重要数据,一起 ...

  2. 家里电脑桌面作为小服务器,家用小型服务器Acer AC100:不可小看的超小型桌面服务器...

    现现在,办事器的品类越来越丰硕.虽然品类繁多的办事器乱用渐欲诱人眼,但精明的用户心里自无一把标尺:适用性.平安性,以及使用矫捷性.本期,小编就和大师一路来看看来自Acer的AC100超小型桌面塔式办事 ...

  3. 在手机上搭建一个小型服务器

    安装配置 - nginx : 1.14.2 - node.js : 8.19.3 1. 先将自己在电脑上的 vue项目打包 npm run build 2. 打开 aidlux 的文件管理器 如果不知 ...

  4. 笔记本x31搭建家用win服务器系统,Thinkpad X31怎么硬盘安装win7系统

    一.windows7(Vista)系统下全新安装Windows7: 1.下载windows7 ISO镜像,用RAR解压至非C盘(如D:\win7) 2.重启开机按F8--修复系统--命令修复--运行D ...

  5. [Docker] 基于 Leanote 搭建私有笔记服务器的经历

    前言 一直以来都是用的 有道云笔记 或者各种 博客 来记自己的笔记,以前对这些云笔记什么的,其实没有那么高的需求.但最近一段时间,随着自己的代码开始写的有点杂的时候,就发现笔记是真的很重要,尤其是有些 ...

  6. FastDFS搭建单机图片服务器(二)

    FastDFS搭建单机图片服务器(二) 根据 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署 和 分布式文件系统 - FastDFS 配置 Nginx 模块及上传测试 一步一步搭 ...

  7. 家用 NAS 服务器搭建 | 前篇

    1.前言 最近一段时间都在折腾家用 NAS 服务器,NAS 系统从最开始选择安装开源的 OMV(OpenMediaVault).万由U-NAS,最终决定使用黑群晖.硬件也是一步步从旧笔记本.拆旧笔记本 ...

  8. 万人在线机房服务器配置,如何搭建小型服务器机房?

    有许多企业想要搭建自己的专用服务器从而进行数据的存储,但服务器机房的问题一直困扰着企业,不仅是资金,更是缺乏搭建机房所需要的基础知识. 如何搭建小型服务器机房? 这里我们简单介绍下搭建机房需要考虑哪些 ...

  9. 制作服务器需要哪些,怎么搭建一个小型企业服务器机房,做这些都需要什么

    怎么搭建一个小型企业服务器机房,做这些都需要什么? 通过内部部署IT解决方案来减少在线数据存储的安全问题,甚至完全避免这些问题. 但问题又来了,大多数小型企业只能通过投资专用的内部IT设备来成功实现这 ...

  10. 使用路由器给实验室搭建FTP服务器的经历

    前言 写这篇博客的原因主要是给我所在的实验室路由器写一个配置参考文档,因为是作为实验室公共使,有不少不太懂配置的学弟学妹恐怕操作起来困难,毕竟马上就要走出学校开始工作了,所以以后的主要还是他们使用. ...

最新文章

  1. 湖南大学新生赛C,G,J题解
  2. 邵阳学院学校云认证码_湖南所有五年制大专学校
  3. linux 系统的内核,[科普] Linux 的内核与 Linux 系统之间的关系
  4. php删除excel文件,php操作excel文件的方法小结
  5. SQLServer无法打开用户默认数据库,登录失败,错误4064的解决办法
  6. C语言实现冒泡排序(bubble排序)算法(附完整源码)
  7. 端口镜像NIDS技术(sniffer抓包)
  8. java流的传递方式是_java中数据的传递方式到底是怎样的!
  9. 打印异常堆栈_关于日志打印行号的性能案例
  10. 流畅的python读书笔记-第十章-序列的修改、散列和切片
  11. 手机喇叭积灰,一段音波就能清理干净
  12. java 内存文件_Java内存映射文件(Memory Mapped Files)
  13. rstudio教程 java_RStudio的使用教程
  14. msp430中如何连续对位进行取反_【万泉河】论PLC编程中的高内聚与低耦合
  15. MacBook 安装win7双系统、2013款MacBook air安装双系统教程
  16. 老鹰:我要抓走倒数第K个小鸡
  17. echart旭日图_echarts(10):旭日图
  18. Excel自定义排序(可按某一列排序)
  19. jquery选择器空格与大于号、加号与波浪号的区别
  20. 108页《SpringBoot 学习笔记完整教程》PDF附下载

热门文章

  1. Android微博平台设计,基于Android平台的微博系统设计与开发
  2. Git超详解七 储藏 (看不懂算我输)
  3. 解决docker删除镜像时image is referenced in multiple repositories
  4. led灯条串联图_一种串联控制LED灯条的制作方法
  5. 计161--Problem H: 求三角形面积-gyy
  6. Java gateway process exited before sending its port number
  7. 每天禅道超时任务、超时未开始任务发送飞书提醒
  8. [JZOJ4567]nekopara
  9. 【学习笔记】STM32hal库开发入门笔记
  10. 阿里 达摩院 cv 算法 面经