刚刚好:我的 Atlas Canyon NUC 与低配 “Homelab”
本文最后更新于 57 天前,其中的信息可能已经有所发展或是发生改变。

看别人的Homelab馋啊,空有需求但没有好的硬件,就买了个Intel NUC11ATKC4,四核赛扬N5105 CPU,代号Atlas Canyon(阿特拉斯峡谷)。有人可能会问,就这么个破赛扬能干啥啊?其实只要摆脱坑比Windows,能干的事情多着呢。

不过我承认,标题确实是我临时起的,之后性能余量是否够用,那就是以后的事情了。

开箱

NUC 嘛大家都懂,买回来就是个准系统,没有硬盘没有内存,更别提操作系统了。硬盘买的是血统纯正的国产货,致态(钛)TiPlus 5000 512G,内存则是笔记本换下来的海力士8G*2。这里吹一波东哥的售后啊,硬盘买回来外包装破了,直接进行了一个上门换新,不到24小时搞定。

盒子是一个简洁的纸壳盒子,结合包着每一个部件的塑料袋来看,很难说它是环保还是不环保。包装盒中含有主机、不用看系列(还真得看)、分体式的电源,以及一个灵魂Celeron Inside logo。

外包装

电源来自航嘉,约65W功率,三脚插头,考虑到主要部件的功率,余量留得很足。可惜没有做成PD充电。

拆装的话需要拧开底下的四个角的螺丝,这之后就可以直接揭开后盖。

底部

前面板接口有两个USB 3.0 5Gbps,一个8针的工控用途IO,耳机和麦克风各一个;后面板有惊人的两个USB 3.1 10Gbps、两个USB 2.0、一个千兆网口、一个RJ45、一个HDMI、一个DP,以及一个供电用的DC圆口。这个接口量是超出我预期的,但美中不足的是没有USB-C。只有一个网口,注定了它不能当作通常的软路由。反正我不是拿来当路由器的,不管它。

背部

卸下底部盖板后就可以看到内部,排列还是比较紧凑的。如图是装好硬盘和内存的样子,网卡是很令人惊喜的AX201,支持WiFi 6,被盖在硬盘下面。

内部结构

底盖是金属材质,SSD位置有导热贴。其他地方的导热贴贴得似乎比较散乱。两边具有散热孔,方便空气流通;而散热模组在机身上部。

操作系统与 BIOS

使用 archinstall 脚本,安装了Arch Linux。其实在它的加持下,Arch的安装没有那么难了,也不再需要一点一点的配置,顶多就是TUI界面看起来不太友好。

  • 为什么不是Windows?我可不想让这赛扬整天满载;
  • 为什么不是TrueNAS?我不会用FreeBSD;
  • 为什么不是Unraid?要钱,也对Slackware不熟悉;
  • 为什么没有虚拟化(ESXi之类的)?据传N5105跑虚拟化有点问题;
  • 为什么是Arch Linux?更新快,Wiki完善,较为轻量,AUR。

装了个GNOME桌面环境,不光是因为有领先的Wayland支持,而且还有一个原因我们后面会提到。虽然I家驱动做得烂,但也不再有NVIDIA独显那样烂泥扶不上墙的问题。

BIOS的设置非常丰富,能够自由调整CPU温度墙、PL1/PL2功耗、风扇转速各方面阈值,也可以自由开关各种接口,可玩性很强。

主页
散热控制
性能释放

性能

也不要有什么过高的期望了,N5105只有四个低功耗Jasper Lake核心,总TDP才15W,满载还没一颗骁龙8 Gen 1功耗高。但过热应该非常难出现,毕竟就这点功耗还有主动散热加持。事实证明我的猜想是对的,BIOS风扇设置为cool档之后,烤机CPU温度维持在65度,也比骁龙8凉(狗头)。

烤机占用

Geekbench CPU跑分为单核699、多核2286(详见测试记录);Vulkan Compute跑分为2313(详见测试记录)。

使用Firefox观看4K YouTube视频,接2K显示器,略有卡顿。2K分辨率的CS能够流畅运行。平常浏览网页等用途则完全未感受到卡顿。

可能由于本身机能限制或文件系统限制,其实是无法完全发挥这块硬盘性能的,标称读3500写2700,在Btrfs文件系统下,实际上只能做到读写1700左右。

综合硬盘性能,不能代表硬盘水平

在KDiskMark 中,跑出了一个更慢的成绩。

KDiskMark 成绩,不能代表硬盘水平

内存只能跑在2933MHz,应该对核显性能有一定程度的影响,不过核显本来就很菜,无所谓了。

互联

网络

要从外网访问内网中的主机,内网穿透是一个很经典的方案,但这需要一台带宽够高、延迟够低、流量足够多的服务器,这在国内成本比较高,将内网服务暴露到外网也让所有人可以访问,有些危险。虚拟局域网方案顾名思义,将在不同内网下的电脑划在同一个“局域网”里。在这其中,Tailscale算是体验最好的之一了。NAT打洞成功率较高,这意味着大部分时候可以以直连的延迟与带宽在不同设备之间连接。

Tailscale的配置非常简单,按照指引配置即可,用起来就知道有多爽了。目前用起来缺点很少,就是不能为同一个机器分配多个域名并签发多个HTTPS证书,极限网速也比不了直连(并不是因为性能开销过大,表现见下)。某种程度上,就是这种异地组网程序让下面的许多用途从”可能”变为“好用”。

其他的方案还有n2n、Netmaker和ZeroTier等,在此不做介绍。

桌面

这样一来桌子上就有两台电脑、两台手机、一台平板了,但外接屏幕只有一块,键鼠也只有一套,笔记本和NUC打架是自然而然的事情。

关于这种情况,开源社区已经有多种解决方案,主要分为键鼠漫游和远程桌面两种。

键鼠漫游当然是理想中体验最好的解决方案。NUC接外部显示器,跑Linux程序;笔记本用内置屏幕,跑Windows程序。一套键鼠插在某一台设备上,用一个鼠标控制两台设备的桌面。成熟的方案有很多,但统统被我毙掉了,分别由于以下几个理由:

  • Mouse Without Borders,仅支持Windows;
  • Synergy/Barrier,不支持Wayland;
  • Waynergy(Synergy的Wayland fork),不支持GNOME自带compositor;
  • rkvm,不支持Windows。

幸好GNOME 42为我留了另一条路,远程桌面。我得以在NUC上开一个远程桌面服务端,然后在Windows下连接。说起来体验还可以,起码日常使用还是够了的。窗口可以全屏,让Linux的桌面铺满整个显示器,局域网内视觉体验非常接近直连;我也可以将远程桌面窗口最小化,从而Windows应用(如游戏)也可以使用大尺寸显示器。

我也试过使用Remmina连接Windows的远程桌面,但结果就是卡顿极其严重,清晰度也很差。当然也可以使用RustDesk或Parsec等应用连接,倒也挺好用。

这里推荐一个GNOME插件:Allow Locked Remote Desktop,让锁屏时也可以连接远程桌面,就像Windows那样。

当不需要用桌面的时候,就用SSH。尤其是出门后,网络条件难以支持远程桌面,SSH就显得比较好用了。SSH比较好配置,此处省略。

文件互传

KDE Connect完全可以称为最好的跨平台互联工具,通吃所有常见桌面端与移动端环境。GNOME桌面环境上,可以使用GSConnect插件。

文件共享

要将文件暴露到网络上,WebDAV服务器+一个网页端管理UI无疑是最好的选择。这里与前面KDE Connect的区别,则在于前者是“拉”,而后者是“推”。

Caddy带一个文件服务器Web UI+WebDAV的功能,但死活没配好,就让它等着做反代吧。作为替代的,我使用了AList。AUR有alist包,可以直接配好systemd服务和配置文件。

我是Cloudreve的老用户了,它是非常优秀的网盘程序,而它会重新组织上传的文件;相反,AList能够忠实地将系统文件目录结构呈现出来,既方便远程访问,又方便本地访问。这就是它叫做“目录程序”的原因。它也自带一个WebDAV服务端,很方便。

AList

通过AList+Tailscale下载大文件,约能跑到160Mbps左右;通过内网直连下载,则能够达到720Mbps(路由器硬件所限,非WiFi 6),不管怎样看4K HDR是没有什么压力的,也能喂饱我的百兆小水管外网。

那有了这些空间,干点什么呢?比如存个手机备份,这不比某些厂商的USB 2.0体验好多了嘛,不一定比无线快,还得时刻连根线。

笔记

在Notion-like的软件中,思源笔记拥有较好的Markdown支持,用起来较为舒服,也有自行托管选项(浏览器端),唯一的缺点是Firefox支持较差(可惜由于精力原因,开发者不一定会修)。

思源笔记

使用Podman部署,采用主机网络(rootless container似乎搞端口转发有些问题),命令如下:

sudo podman run -d -v /home/cyp0633/siyuan:/siyuan/workspace --network=host docker.io/b3log/siyuan --workspace=/siyuan/workspace

具体的命令参数可以查看 官方Docker Hub页面进一步了解。

服务的快捷访问

到此为止,搭建的服务都是用IP地址+端口号访问,不太优雅。虽然Tailscale提供了MagicDNS,但也只能为每个设备分配一个域名。既然上有一个自己的域名,就想到配合Caddy访问内部服务。

就以上面的AList举例,先在DNS中将alist.internal.cyp0633.icu(仅作示例,你当然用这个访问不到)指向NUC的Tailscale IP,然后Caddyfile可以这么填写:

alist.internal.cyp0633.icu {
    reverse_proxy :5244
    tls internal
}

然后Caddy就可以搞定反向代理,甚至包括自签名的HTTPS证书。第三行是必不可少的,因为.icu是公认的TLD,Caddy会尝试向公网CA申请一个证书,它当然不能接入Tailscale局域网;显式指定tls internal 之后,Caddy才会自行签名一个证书(见 官方论坛帖子)。这样,便可以访问这个域名来获取服务,无需记住端口号,就像是在平常的服务器上一样。类似的,也可以这样配置多个域名指向同一IP,来让Caddy做分流。

思源笔记有WebSocket部分,但不需要特别设置。

针对上面Tailscale的速度问题,如果想在内网下达到更快的传输速度,可以在路由器上将域名解析至内网 IP,而非Tailscale IP。这样在内网下就可以直连,无需通过Tailscale。

远程下载

有了这个,就可以远程下片了(逃)。算是用了一种经典方案吧,aria2。pacman就有打包。

配置文件 aria2.conf 可以参考 P3TERX 的配置文件,但注意不要照搬,先读完,再使用。

如果要让aria2在后台运行,可以使用systemd服务,在/etc/systemd/system中编辑aria2cd.service(改编自Arch Wiki),然后启用即可:

[Unit]
Description=aria2 Daemon

[Service]
Type=simple
ExecStart=/usr/bin/aria2c --conf-path=你的配置文件路径

[Install]
WantedBy=default.target

至于Web界面,我使用了AriaNG,也是经典的解决方案。使用Caddy反代一下就行了。在Caddyfile里限制了HTTP,否则必须一起反代HTTPS的Aria2 JSON-RPC。

开发

只要提到远程开发,必定少不了神通广大的VS Code。之前写过文章的第三方的code-server仍然可用,而且是一个完全开源的版本(基于code-oss)s,感兴趣的可以看一下GItHub页面,讲得很详细(我写的太久没更新,不推荐阅读)。

此处要讲的是另外一种途径,来自微软的VS Code Server,这意味着它可以使用Copilot等必须在微软发行的版本才能使用的插件,具体可以见这篇blog post

VS Code Server在内测,通过后就可以在vscode.dev里直接连接开发机器了,但我并没有通过内测。很幸运的是微软提供了一种不需资格的运行方式,只需加上--serve-local参数,就可以在本地机器浏览器中运行, 再加一个反代,就可以让Tailscale内网中的远程机器连接了。

VS Code Server不是开源/自由软件,有自己的协议。将VS Code Server暴露到公网上是违反许可协议的。

同样的,也建议创建一个sysetmd服务来保持其后台运行。

两个方法都占用很大,占用内存可能达到2G左右,CPU负载也很高,因为所有language server的parsing等操作都是在这台NUC上进行的。但不管是上述两种方法中的哪一种,都可以在平板上码代码了,并且得到很舒服的延迟与比我自己公网上服务器高得多的性能。

iPad上VS Code Server效果

此篇文章约有四分之三通过NUC的远程桌面写成。它作为没那么多预算的我买的入门Homelab,经过这一段时间的使用,已经证明了能够胜任目前的需求,性价比目前看还算不错。

评论

  1. Macintosh Safari 15.5
    2月前
    2022-10-03 19:38:34

    学长是在寝室里装宽带的吗
    一直也想折腾 NAS 来着,但是感觉 HNU 这破校园网网速也拉胯流量也不够用,而且还有连接设备数量限制,根本没有搭 NAS 的条件……

    • 博主
      SkyWT
      Windows Firefox 106.0
      2月前
      2022-10-03 23:53:43

      是的,寝室拉了条宽带,有个软路由做前置认证,就不受设备数量限制了,下面拖的设备也都不用认证

  2. rantrism
    Windows Chrome 104.0.0.0
    2月前
    2022-10-17 16:56:35

    您好~我是腾讯云开发者社区运营,关注了您分享的技术文章,觉得内容很棒,我们诚挚邀请您加入腾讯云自媒体分享计划。完整福利和申请地址请见:https://cloud.tencent.com/developer/support-plan
    作者申请此计划后将作者的文章进行搬迁同步到社区的专栏下,你只需要简单填写一下表单申请即可,我们会给作者提供包括流量、云服务器等,另外还有些周边礼物。

    • 博主
      rantrism
      Windows Firefox 107.0
      1月前
      2022-10-22 10:08:15

      抱歉,你们的网站没有对版权的任何说明,我没有理由把内容搬迁到那里;如果已经在搬运我的文章,请注意许可证。

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇