All-In-One Home Server搭建

 

前言

最近组装了一个Linux服务器放在家里,因为家里没有公网ip所以还调研了一些内网穿透方案。这篇文章给大家分享一下我搭建家用服务器的过程。

为什么我要搭一个home-server?

主要原因有这么几个:

  1. 云服务器性价比低,就阿里云来说一个16G4核的机器一个月动辄几百,而我个人用的云服务器大部分情况下都是空负载。
  2. 最近PC换成了M1的mbp,折腾很多东西都需要x86机构的机器。
  3. 想自己搭建nas服务,存储一些个人数据。

硬件采购

配件名 型号
cpu intel-12600K
内存 16G DDR4 x 4
主板 铭瑄 B660M Wifi版
硬盘 固态:2T(数据盘)+512G(系统盘), 机械硬盘4Tx2
机箱 宝藏盒
散热 240水冷
电源 300W

在选配件的时候得想清楚到底想要一台怎样的机器。对我来说,主要考虑的点有:

  1. 机箱体积要小,因为我希望摆到衣柜顶上然后我家猫就霍霍不到了。
  2. All-In-One,所以性能要稍微好一些。
  3. 运行时安静一些,所以选择了水冷来压这颗i5 12600K。
  4. 我家目前带宽只有千兆,所以我没有单独买网卡,直接用了主板上的千兆网卡。

操作系统安装

系统选择

由于采用了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运行的,目前我用到的有:

  1. gitlab -> 个人代码仓库
  2. codimd -> 笔记服务,codimd的markdown编辑器十分强大,用过的都说好
  3. nextcloud -> 私有Drive服务
  4. 博客nginx服务

硬盘管理

服务器上安装的硬盘有:

  • 固态512G+2T
  • 机械硬盘4T x2

使用划分

  1. 512G为系统盘,挂载到”/”目录下。
  2. 机械硬盘划分为lvm物理设备,所有的硬盘都由一个vg(volume group)管理。通过划分lv(logic volume)来划分硬盘。已划分的lv可以扩容。

内网穿透

由于没有公网ip,所以外部是无法直接访问的。我的方案是用一台云服务器运行frp转发流量,在外面可以通过云服务器的公网ip访问家用服务器。

具体搭建可参照文档gofrp

重要数据备份

对于一些比较重要的数据,比如codimd中我记录的笔记,如果某一天家里进贼了把我的硬盘都顺走了那我可要哭死了。 所以服务器上创建cron job每天定时将数据同步到云服务器上,以及不定期的备份到移动硬盘里备份。说白了,就是不要把鸡蛋放在一个篮子里。

结束语

以上就是我的home-server方案,其实这个方案比较适合的还是家里有公网ip的人。廉价的云服务器带宽并不能满足一些大文件的传输,仅仅只能满足基本的web访问以及git代码同步。

对于那些长期需要有一台服务器工作,但并不是长时间高负载的人来说,在家里搭建一个服务器可以说一个不错的选择。如果不是用于AI模型训练等,电费几乎可以忽略不计,长时间下来成本上肯定会比租云服务器要划算。