家用服务器搭建使用指南
起因
现在有很多厂商推出自己的云服务器,我也用过不少,其中以阿里云、腾讯云、华为云的服务器较为好用,但是也非常贵。
我主要在云服务器上部署一些k8s集群,学习云原生用。但是我又不是时时刻刻在用,虽然可以按时付费,但总归是不方便的,所以我萌生了自己组装家用服务器的想法。
首先既然是家用服务器,那就要考虑经济性和噪音等方面的因素,所以我在网上找了一些资料,逛了一下图吧,综合一下,搞出如下配置:
总共不到两千。
安装PVE
考虑使用虚拟化技术,分出多个节点来使用。主要两种选择:
- Proxmox VE。https://pve.proxmox.com/
- VMware vSphere https://docs.vmware.com/cn/VMware-vSphere/index.html
综合下来选择了 PVE(Proxmox VE)。 网上有很多它们之间的比较区别的文章
接下来我就要开始安装PVE了,其实也很简单,PVE就是基于debian之上使用KVM等虚拟化技术构建的系统,所以就和安装普通的linux系统一样。
首先下载镜像:https://www.proxmox.com/en/downloads 下载最新的镜像就好了。
这里推荐使用Ventoy制作U盘启动盘 https://www.ventoy.net/cn/
安装过程就很稀松平常了。
注意点
安装PVE需要主板BIOS开启虚拟化支持,网上搜一下就知道了
安装过程中可能会出现卡住的现象,如果卡住的时间很长,直接强制重启。在启动的时候按e进入grub引导,在
linux /boot/vmxxxxx ro
后面加入quiet splash nomodeset
,然后F10启动,应该就会进入安装界面- 这是因为 显卡驱动问题导致的,很多独立显卡驱动linux是有问题的,所以我们干脆禁用
- nomodeset 就表示 系统启动过程中,暂时不运行图像驱动程序
安装完成之后,如果独立显卡有问题 就需要修改下面参数:
1 | vim /etc/default/grub |
使用PVE
pve的web页面
安装pve-tools
为了更好的使用pve,我们可以使用pve-tools工具对pve做一些个性化修改。
https://github.com/ivanhao/pvetools 根据文档操作即可。
删除pve的local-lvm
参考文章:https://foxi.buduanwang.vip/virtualization/1434.html/
这里就不详细叙说了
制作ubuntu模版
这里使用cloud-images来安装ubuntu,可以使用到cloud-init,能非常方便的修改网络ip等。
下载好 ubuntu的镜像
然后创建虚拟机
创建好虚拟机,回到pve终端
1 | qm disk import 999 ubuntu-22.04-server-cloudimg-amd64.img local --format qcow2 |
使用磁盘:
添加串口、cloud-init设备
在cloud-init中,修改相应的信息,修改完 一定要点重生成映像
在选项中 把引导顺序改一下,磁盘放在第一位:
然后直接启动,安装你想要安装的软件,做成模版
我的初始化安装如下:
1 | 设置时区 |
之后关机,转化成模版:
后续就可以基于模版快速创建虚拟机节点了
网络方案
方案简图:
- 使用openwrt作为pve旁路由,pve上所有节点虚拟机的网关都指向openwrt的地址
- 使用tailscale 做 full mesh VPN,效果就是 只要在我的电脑上安装了tailscale,就能和pve上的虚拟机通信,原理就是所有安装了tailscale的电脑都被打通了(相当于一个隧道,是一个wireguard)
安装openwrt
推荐使用别人封装好的镜像,这样就不需要自己手动加各种插件了
安装openwrt就和上面安装ubuntu步骤类似
附上我安装的openwrt的信息:
安装好之后 按照提示修改你的ip地址,然后进入web页面:
然后:
设置完,网络应该就通了
openwrt安装了一些可以插件,可以支持科学上网,这样openwrt作为pve其他节点的网关,可以使得网络会更加通畅
安装tailscale
在openwrt上安装tailscale
打开终端:
1 | opkg update |
然后在openwrt的web上修改
添加新接口,这里我已经添加好了一个接口 tailscale
接着修改tailscale接口,这里的ipv4地址填写tailscale上面给的地址
点击防火墙设置,这里防火墙自己新建一个
到此就基本完成了
在其他设备上安装tailscale
tailscale官方文档:https://tailscale.com/kb/
在一台windows上安装tailscale,wifi使用手机热点,模拟不在同一网段下
安装步骤很快就可以安装完成,然后在https://login.tailscale.com/admin/machines 这个页面上就可以看到你安装了taiscale的设备了
1 | 常用的tailscale命令 |
简单使用一下,发现延迟比较高,这我不能忍啊,得想一个办法解决延迟问题。
tailscale的开源解决方案
tailscale的控制服务器是不开源的,免费用户限制100台节点,一般也就够了
目前有一款开源的实现叫 Headscale,这也是唯一的一款。
headscale的部署网上有很多方案了,这里就不多说了
部署私有DERP中继服务
Tailscale 官方内置了很多 DERP 服务器,分步在全球各地,惟独不包含中国大陆,原因你懂得。这就导致了一旦流量通过 DERP 服务器进行中继,延时就会非常高。而且官方提供的 DERP 服务器是万人骑,存在安全隐患。
为了实现低延迟、高安全性,我们可以参考 Tailscale 官方文档自建私有的 DERP 服务器。有两种部署模式,一种是基于域名,另外一种不需要域名,可以直接使用 IP,不过需要一点黑科技。我们先来看最简单的使用域名的方案。
参考文档:https://icloudnative.io/posts/custom-derp-servers/#derp
使用国内的一些方案
上面的一些方案都太折腾了,又没有一些比较好的方案呢。
我翻遍全网,还真找到了一个国内的方案:xEdge,这是一个国内大佬兼容tailscale的方案,中继节点是部署在国内的,所以延迟这一块完全不成问题。
文档:https://xedge.cc/doc/quickstart
使用相当简单,在之前我们安装的openwrt上执行如下命令:
1 | tailscale up --accept-dns=false --advertise-routes=192.168.34.0/24 --login-server=https://login.xedge.cc |
然后会有一个url地址,用浏览器打开,微信/GitHub注册登录即可
其他设备使用参考文档
以上就是我目前使用家用服务器的一些方案
附录
- pve使用指南:
- pve换源
taiscale部署私有DERP中继服务
tailscale原理相关介绍