Portable Homelab

2022-06-15 15:14:40 +08:00
 deetz

需求概述

近期回国,要在国内呆一段时间。在国内期间虽然有一个常驻地,但一方面很多计算和网络设备在行李里,一方面也会在不同的地区到处跑跑,还有刚回国期间的超长隔离,需要搭建一个 homelab 环境来满足移动时最简单的网络需求和一些软件需求。

网络需求包括:

  1. 能够在有有线网络的情况下提供无线网络接入,或者在没有网络接入的情况下,使用 4G modern 提供无线网络接入。
  2. 使用一些特定的邮件和搜索服务:虽然各家的 app 越来越封闭,但是搜索引擎还是获取信息特别是外文信息最重要的渠道。
  3. 连接学校的 VPN 网络获取文献:这个比较诡异,直联 VPN 可以建立连接,但是实际上因为速度太慢,处于不可用的状态。因此,需要在上级设备中进行网络加速。
  4. 提供基本的去广告和防火墙服务。
  5. 能够提供基本的冗余和稳定性,也能够提供给家人使用。

在软件上的需求如下:

  1. 需要一个 python 环境,可以跑一些简单的自建服务。
  2. 需要提供一个 R 环境,可以跑一些简单的定时代码。
  3. 以上的两个环境最好都能够有一个 web editor, 这样可以通过 ipad 进行编辑,也可以在笔记本在做其他工作的时候进行一些简单的任务。
  4. 能够支持 docker ,快速搭建所需要的服务。

解决方案

All-in-one (放弃)

可能最为方便的解决方案是一个 all-in-one 的小主机。如果采纳这个方案,则首要使用 ESXi 搭建多台 linux 虚拟机,在其中布置多个服务。预计需要虚拟 2-4 台机器:一台 openwrt 。一台 linux 作为 Rstudio server ,一台 linux 作为 code-server 和 python 环境,一台 Linux 跑其他 docker 环境。Rstudio 和 code server 也可以考虑以 docker 容器的方式运行。现在比较合适的机器是使用 N6005 处理器的 PN41 或者 NUC11ATKPE 。

这个选择的优势在于:

  1. 性能同其他的方案比起来有相对的优势。
  2. 一体化程度非常高,插上电源线即可马上使用。
  3. 我手上有剩余的 16gb 笔记本内存和一个 128gb 的 ssd 硬盘,可以利用。

但是也有不少劣势:

  1. 价格很贵,至少需要 1000+RMB 购买机器,还需要购买无线网卡。
  2. 虽然性能好,但是 N6005 是 11 代处理器。在 12 代处理器已经发布的时候,并且小核有着非常大的提升,这并不是一个特别好的选择。
  3. 比较折腾,特别是 ESXi 可能对特定硬件需要寻找并安装订制驱动。
  4. 这套系统家属也需要使用,冗余不够(属于伪需求啦)。

利用手头设备的分离式方案 (现在的方案)

最后选择了利用手头的设备做了一个分离式的方案,这个方案硬件上由以下部分组成:

其中有三件是既有设备,R4S 则是新购入的。

GL-MT1300 是原厂定制化 openwrt ,没有安装任何插件,仅仅作为主网关和 AP ,提供给所有设备使用。Raspberry Pi 4B 使用了新的 Raspberry Pi OS (64-bit) lite ,主要负责跑 docker 容器。R4S 则安装了 openwrt ,并安装了诸多插件,作为旁路网关使用,供有需要的设备使用。华为的 4G modern 则在有需要的时候作为网卡接入 GL-MT1300 。Raspberry Pi 和 R4S 用一个双头 24w 的 USB 电源供电,而 GL-MT1300 使用了自己的电源。

在整个这套解决方案有些脱裤子放屁的感觉,特别是在网络需求方面。GL-MT1300 本身可以通过修改插件的方式的安装需要的配件。Raspberry Pi 4B 也可以以 docker 容器的方式来运行一个 openwrt 实例。但是最后还是选择了三个分开的方案,除了爱折腾外,原因有三:

  1. 因为 GL-MT1300 性能太差,在安装插件后遇到了很多的问题,网络不稳定。
  2. Raspberry Pi 4B 的 docker 容器运行 openwrt ,没有 openwrt 原生运行稳定和延迟小。
  3. Raspberry Pi 用 docker 容器的方式运行 openwrt 经常出现 CPU 占用达到 50%以上的情况,基本无法顺利地运行负荷较重的其他 docker 应用。

相较之下,R4S 在原生运行 openwrt ,在相似的网络负载的情况下,CPU 尽管性能弱于 Raspberry Pi 4B ,占用只有 5%左右。从这个意义上来说,完全可以用更便宜的 R2S 来代替,体积还会更小一些。

这套系统组装之后,肯定没有 all-in-one 的解决方案优雅,但有以下优势 /胜在折腾:

  1. 能够很快分离,给不同的情景使用。比如 Raspberry Pi 可以通过 usb-c 有线连接 iPad ; R4S 可以单独拆出接入家庭网络作为旁路网关使用。
  2. 虽然旁路网关会降低速度,当主要的网络更为稳定。
  3. 在应急情况下所有设备都可以通过 USB 移动电源供电。

另外,买了一个 20 元左右的软质包,可以将所有的线材和设备进行收纳,方便移动。

其他

Raspberry Pi 4B 上没有选择自己编译 R 和 Rstudio server ,而是拉取了一个以 Jetson Nano 中的 R 开发为基础,移植到 Raspberry Pi 的镜像。地址在: https://github.com/pinei/edgyR-pi

这个环境下的 R 的版本在 4.0.2 ,使用 https://mac.r-project.org/benchmarks/ 的代码进行 benchmark ,单核性能同 14 年前的酷睿处理器接近。所以跑一些简单的代码可以,就不用想着来做主要的 R instance 了。

2634 次点击
所在节点    宽带症候群
8 条回复
jjxtrotter
2022-06-15 18:23:52 +08:00
标题看成 Por*ub 是不是没救了
banmuyutian
2022-06-15 18:25:41 +08:00
@jjxtrotter #1
+1 我第一眼也是
tutugreen
2022-06-16 01:14:48 +08:00
ESXi + 大小核,不知道调度如何(

另一个方案(

要不上云,性能无忧,推拉包快,用的都是最新硬件,免维护,可以打打快照,出问题概率小。

不用的时候关机,付个存储费,1000+RMB 其实可以用挺久了。

本地就做个组网,或者收个便宜的 5G 手机,还能开 WIFI6 热点,Root 后能走 VPN 。
zer
2022-06-16 10:58:55 +08:00
R4S 刷 OpenWRT ,用自带的 Docker 的话,是否能满足呢
Reficul
2022-06-16 11:57:36 +08:00
All In One 倒是一次配置之后就比较简单,搬家过几次只要最前面的 PPPoE 网络拨号密码改下。但是如果各种设备组网,搬来搬去设备间网线插来拔去的就很麻烦。

BTW:上云最简单
guanzhangzhang
2022-06-16 12:44:06 +08:00
上云,你和云上 vpn 打通
deetz
2022-06-17 17:59:33 +08:00
@zer 不如用树莓派了,性能还更好一些。
deetz
2022-06-17 18:00:06 +08:00
@guanzhangzhang
@tutugreen
是的……但是在计费这块我还是不太放心,自己没有太好的追踪订阅的习惯。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/859782

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX