前言
最近组装了一个Linux服务器放在家里,因为家里没有公网ip所以还调研了一些内网穿透方案。这篇文章给大家分享一下我搭建家用服务器的过程。
为什么我要搭一个home-server?
主要原因有这么几个:
- 云服务器性价比低,就阿里云来说一个16G4核的机器一个月动辄几百,而我个人用的云服务器大部分情况下都是空负载。
- 最近PC换成了M1的mbp,折腾很多东西都需要x86机构的机器。
- 想自己搭建nas服务,存储一些个人数据。
硬件采购
配件名 | 型号 |
---|---|
cpu | intel-12600K |
内存 | 16G DDR4 x 4 |
主板 | 铭瑄 B660M Wifi版 |
硬盘 | 固态:2T(数据盘)+512G(系统盘), 机械硬盘4Tx2 |
机箱 | 宝藏盒 |
散热 | 240水冷 |
电源 | 300W |
在选配件的时候得想清楚到底想要一台怎样的机器。对我来说,主要考虑的点有:
- 机箱体积要小,因为我希望摆到衣柜顶上然后我家猫就霍霍不到了。
- All-In-One,所以性能要稍微好一些。
- 运行时安静一些,所以选择了水冷来压这颗i5 12600K。
- 我家目前带宽只有千兆,所以我没有单独买网卡,直接用了主板上的千兆网卡。
操作系统安装
系统选择
由于采用了12代的cpu,所以需要选择Linux内核版本较高的发行版。
我选择的是Ubuntu 22.04 LTS
,内核版本为5.15.0
。镜像从官网下载即可ubuntu下载
这个版本我目前使用上没有遇到什么问题,12代u能在这个版本上正常工作。
mac下启动盘制作
mac系统下引导u盘制作可参考以下过程:
# 调整格式为img
hdiutil convert -format UDRW ubuntu-22.04-desktop-amd64.iso -o ubuntu.iso
# 找到u盘dev
diskutil list # 找到external的挂载硬件
# 取消挂载
sudo diskutil umountDisk /dev/disk4
# 格式化u盘
sudo diskutil eraseDisk ExFAT ud /dev/disk4
# 将系统镜像写入u盘
sudo dd if=./ubuntu.iso of=/dev/disk4 bs=1m
服务管理方案
服务搭建
所有服务都是用Docker运行的,目前我用到的有:
- gitlab -> 个人代码仓库
- codimd -> 笔记服务,codimd的markdown编辑器十分强大,用过的都说好
- nextcloud -> 私有Drive服务
- 博客nginx服务
硬盘管理
服务器上安装的硬盘有:
- 固态512G+2T
- 机械硬盘4T x2
使用划分
- 512G为系统盘,挂载到”/”目录下。
- 机械硬盘划分为lvm物理设备,所有的硬盘都由一个
vg(volume group)
管理。通过划分lv(logic volume)
来划分硬盘。已划分的lv可以扩容。
内网穿透
由于没有公网ip,所以外部是无法直接访问的。我的方案是用一台云服务器运行frp
转发流量,在外面可以通过云服务器的公网ip访问家用服务器。
具体搭建可参照文档gofrp
重要数据备份
对于一些比较重要的数据,比如codimd中我记录的笔记,如果某一天家里进贼了把我的硬盘都顺走了那我可要哭死了。 所以服务器上创建cron job每天定时将数据同步到云服务器上,以及不定期的备份到移动硬盘里备份。说白了,就是不要把鸡蛋放在一个篮子里。
结束语
以上就是我的home-server方案,其实这个方案比较适合的还是家里有公网ip的人。廉价的云服务器带宽并不能满足一些大文件的传输,仅仅只能满足基本的web访问以及git代码同步。
对于那些长期需要有一台服务器工作,但并不是长时间高负载的人来说,在家里搭建一个服务器可以说一个不错的选择。如果不是用于AI模型训练等,电费几乎可以忽略不计,长时间下来成本上肯定会比租云服务器要划算。