全面改造的家庭实验室

Lobsters Hottest 工具

摘要

作者详细介绍了家庭实验室的全面改造过程,从使用 Zimaboard 和 NixOS 迁移到基于 Debian 的新服务器,部署了 Dokploy、Jellyfin、Immich 及其他自托管服务,并改进了家庭光纤网络。

<p><a href="https://lobste.rs/s/feikm9/overhauled_homelab">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/07/13 00:55

# 改善 #4:彻底改造家庭实验室 - Tim Hårek 来源:https://timharek.no/blog/kaizen-4/ 我开启了这个“博客系列”,目的是强迫自己多写写关于我的设置以及持续的迭代。但一直没动笔……直到今天!这篇博文酝酿了很久,我一直把想法记在脑子里和笔记里。 我将按顺序介绍我所做的所有事情: - [之前的设置](https://timharek.no/blog/kaizen-4/#previous-setup) - [网络状况](https://timharek.no/blog/kaizen-4/#network-situation) - [我自托管的内容](https://timharek.no/blog/kaizen-4/#what-i-self-hosted) - [网络](https://timharek.no/blog/kaizen-4/#networking) - [光纤历险记](https://timharek.no/blog/kaizen-4/#fiber-adventure) - [布线](https://timharek.no/blog/kaizen-4/#wiring) - [车库布线](https://timharek.no/blog/kaizen-4/#wiring-the-garage) - [新服务器](https://timharek.no/blog/kaizen-4/#the-new-server) - [新设置](https://timharek.no/blog/kaizen-4/#the-new-setup) - [Debian](https://timharek.no/blog/kaizen-4/#debian) - [Dokploy](https://timharek.no/blog/kaizen-4/#dokploy) - [媒体](https://timharek.no/blog/kaizen-4/#media) - [Jellyfin](https://timharek.no/blog/kaizen-4/#jellyfin) - [Immich](https://timharek.no/blog/kaizen-4/#immich) - [文件](https://timharek.no/blog/kaizen-4/#files) - [监控](https://timharek.no/blog/kaizen-4/#monitoring) - [杂项](https://timharek.no/blog/kaizen-4/#miscellaneous) - [qBittorrent](https://timharek.no/blog/kaizen-4/#qbittorrent) - [Linkding](https://timharek.no/blog/kaizen-4/#linkding) - [Mesh VPN](https://timharek.no/blog/kaizen-4/#mesh-vpn) - [最终结果](https://timharek.no/blog/kaizen-4/#final-result) - [剩余事项](https://timharek.no/blog/kaizen-4/#whats-remaining) ## 之前的设置 两年前,我[翻新了我的家庭实验室](https://timharek.no/blog/kaizen-3-revamped-homelab)。当时我刚买了一台新机器作为主要家用服务器,取代了那个堆满杂乱机器的 9U 服务器机架。那时我终于静下心来琢磨如何安排一切。效果一直很好……直到出了问题。 当时那台新机器是 Zimaboard,上面装了 NixOS,看起来非常棒,运行得也很完美,直到我想做一个基本的备份定时任务。我一直没弄明白怎么做,所以基本上是有空就手动备份。我用的是 Restic,这个工具很棒。 ### 网络状况 我们用的是 Bergen Fiber(Altibox)提供的 750/750 Mbps 光纤连接,完全够用。连接非常稳定,从不卡顿,对网络没有任何抱怨。 今年早些时候我们搬到了一栋独栋房子里,整栋房子都是我们的,太棒了!但网络状况不太好。整栋房子里一个以太网接口都没有,除了光纤和调制解调器所在的位置。你猜在哪里?就在通往阳台的门旁边,前任主人把电视放在那里(我们单独弄了个电视房)。值得注意的是,房子里有很多电话线,我们稍后会讲到。 ![一只白色的缅因猫蹲在壁挂式喂食架上,下方的地板上放着旧路由器、Zyxel 调制解调器、插线板和一堆杂乱的电线。](https://timharek.no/blog/kaizen-4/previous-setup.jpg) *我之前的设置,就在猫的喂食架下方。* 如你所见,这个位置并不理想,尤其在我们发现这里是给猫放食物、远离狗的绝佳位置之后。 我不喜欢之前 Zimaboard 设置的另一件事是,我选择把 NixOS 直接安装在板载闪存上。每次尝试升级 NixOS 版本时,都会遇到空间不足的问题。我每次都得做一堆清理和微调才能让它工作。 搬进新家后,我的网络状况还算可以,但车库无法接收到 WiFi 信号。覆盖范围似乎还行,但在室外或电视房效果不理想。我觉得把路由器放在地板上不是最佳选择,但也不想把它挂在客厅墙上。 所有 WiFi 都来自一台 ASUS RT-AX92U 路由器,效果还不错,尤其是在它所在的二楼。但在楼下和室外就是另一回事了。 ### 我自托管的内容 对于所有我翻录的媒体、电视剧和电影,我都用 Jellyfin,这软件非常好,直接就能用。我还用 Jellyfin 播放有声书,搭配一个很棒的 iOS 应用 [plappa](https://plappa.me/)。至于所有的 Linux ISO 文件,我用的是 qBittorrent。它作为无头 BT 客户端运行得很好,而且也有一个很棒的 iOS 应用 [qRemote](https://apps.apple.com/us/app/qremote-for-qbittorrent/id6756276747)。 我还有一些小型的 Docker 容器,用于 [Foundry](https://foundryvtt.com/) 和一些个人项目。 我以前还自托管过 Nextcloud,但后来变得很繁琐,维护起来很麻烦。对我来说,它太臃肿了。 ## 网络 我买了 Ubiquiti UniFi 设备,具体是: - UCG Ultra - U7 Lite 接入点 x3 - PoE 供电器 我还买了一卷新的以太网线,500 米,以及制作网线的工具。 UniFi 在家庭实验室爱好者中备受推崇,这并非没有道理。它不是(F)OSS,但硬件非常出色,无需订阅,也无需注册账号即可使用。 ![所有 UniFi 网络设备拆箱后放在地板上:UCG Ultra、U7 Lite 接入点、一袋 RJ45 接头和防拉扯保护套,以及一卷以太网线。](https://timharek.no/blog/kaizen-4/unboxing.jpg) *简单部分:拆开所有新设备。* 买设备是简单的事,但把它们全部安装起来,哦,老天,那可完全是另一回事了。 ### 光纤历险记 我们买房时最先考虑的事情之一,就是把光纤入口和调制解调器移到阁楼上,这样就不会碍眼,也不会难看。我礼貌地问了本地 ISP,Bergen Fiber,是否可以帮我做这件事,或者能否给我一根 5 米长的 SC/UPC 光纤跳线。他们答应给我一根线,但当我发邮件跟进需要怎么做时,他们却发短信说不能给了 🙃。不过他们可以给我一根 2 米长的线。于是我问了一圈,花了一些时间在网上找那种特定的线缆。找到的大多数要么长度不对,要么短距离的线缆贵得离谱。我最终从一家离我家只有 5 分钟路程的 B2B 公司找到了一根。我拜托一个在那里采购的管道工朋友帮我取一下,他帮我拿回来了,花了 32 克朗(约 3 美元)。 ### 布线 除了找光纤线缆的冒险经历,我还得给整栋房子布线,尤其是为新的接入点准备线路。需要从阁楼拉到客厅、楼下走廊,以及另一栋建筑的车库。另外,我还希望在我的家庭办公室和电视房有以太网接口。这能有多难? 我请了一个朋友帮忙确定所有设备的位置,并帮我拉线。我告诉他只需要几个小时。结果我们花了六个小时,他必须回家了,我又自己干了三天。我原以为会很简单…… 我们先移动光纤和调制解调器,这很容易——在阁楼的墙上钻了一个 42 毫米的孔,把线管从墙上推到客厅,然后拉入光纤。非常顺利! 接着我们在客厅天花板的中央钻了一个孔,用于安装 PoE 接入点,这也很容易。 但最难的来了:从阁楼往下走两层,而且没有任何现有的线管。正如我提到的,房子里遍布电话线,但都没有接通,而且线管也没通向阁楼。最初那天的大部分时间,我们都在拉扯电话线,试图弄清楚它们走向,以及如何从阁楼布线。最后我在客厅一个电话接线盒上方钻了一个孔,这样我就可以把线管从阁楼拉到这个接线盒里。因为这个接线盒通向一楼的门厅。 ![从一个狭小的阁楼角落向下看,工作灯照亮着,有木椽子、一块金属板和一把 Ryobi 充电电钻,同时定位内墙的顶部。](https://timharek.no/blog/kaizen-4/attic-studs.jpg) *从阁楼上精准定位墙壁的位置。* ![一个铺着纸面隔热层和木搁栅的阁楼地板上,放着电钻、红色穿线器、耳罩和卷尺,散落在一个正在钻孔的位置周围。](https://timharek.no/blog/kaizen-4/attic-drilling.jpg) *钻孔并沿墙向下穿线。* ![客厅靠地板处的墙壁,有两个开口:一个刚钻的圆孔,以及一个裸露出来的旧蓝色电话接线盒,周围墙纸被撕掉,踢脚板附近有一个壁挂式网络信息插座。](https://timharek.no/blog/kaizen-4/wall.jpg) *我在客厅旧电话接线盒上方开的孔。* ![两个墙壁开口的特写:左边圆孔露出一个波纹线管,右边蓝色接线盒内部是拧在一起的电话线。](https://timharek.no/blog/kaizen-4/conduit.jpg) *把线管从阁楼拉到电话接线盒。* 而实际制作网线呢?真是一团糟。我知道有顺序要求,但我买的那些(来自 [Kjell & Company](https://www.kjell.com/no/produkter/nettverk/nettverkskabler/ftp-og-utp-kontakter/luxorparts-modulkontakt-rj45-cat.-6-utp-20-pk.-p41138))没有说明书,所以我只能上网查顺序。我花了两个小时才做出一条能用的网线,因为我没有注意到透明塑料袋里还有一个透明塑料袋,里面有用于固定双绞线顺序的“导引”。直到我看了差评才意识到这一点。我用一个超简单的网线测试仪检查网线是否做对,这玩意儿买得太值了,没有它的话会头大如斗。 ### 车库布线 我最初的计划一直是要给车库布以太网线,但不知道怎么做。我知道房子外面有预埋管线,但不确定是否有空间容纳以太网线。幸运的是,我在车库里发现了一根从黄色线管里出来的剪断的电话线,这根线管的颜色和门厅里我已经铺设好一楼线路的线管颜色一样!我确信是同一根线管,于是开始拉线,看是否能拉动房子那头的线,但纹丝不动。我试了各种办法让它移动,但一点反应都没有。最后我把线的绝缘层都弄坏了,它卡得实在太紧了。 ![车库墙壁上,一根红色线管和一根较小的黄色线管沿着混凝土砌块铺设,一根黑色玻璃纤维穿线器穿过其中,还有一根卡住的电话线,附近架子上放着清洁用品。](https://timharek.no/blog/kaizen-4/garage-wall.jpg) *卡死在车库线管里的旧电话线。* 纯属巧合,我发现房子外面还挂着一个旧同轴电缆和电话接线盒。我打开它,把里面所有的线都松开了,然后沿着房子外墙的线管往下找。幸运的是,外面的地面是碎石,所以我直接开始挖。你猜怎么着?我找到了那根该死的线管,实际上找到了三根!一根通向房子,一根通向车库,还有一根我猜是以前 ISP/电话公司的。我把它们都剪断,然后拉了出来。这下,车库里那根电话线轻而易举地就松动了。 ![一个安装在抹灰外墙上的灰色旧电话接线盒,打开后露出一捆彩色电话线,一根灰色线缆从它下方引出。](https://timharek.no/blog/kaizen-4/outside-box.jpg) *我在房子外面发现的那个旧同轴电缆和电话接线盒。* 我把房子那头的线拉过线管,然后接入车库的线管,瞧!车库就有以太网了! ![室外地面处,房屋地基旁的碎石被挖开,露出一根黑色电缆和一个黄色线管伸入地下。](https://timharek.no/blog/kaizen-4/digging.jpg) *沿着地基挖掘,发现了三根埋藏的线管。* ## 新服务器 我搞到了一台巨大的 HPE DL380 Gen10 服务器,是退役的硬件。它有两个专用的 Intel Xeon CPU 和 288 GB 内存。我拿到了 16 块 600GB 企业级 10K RPM 硬盘,目前只装了 8 块,剩下的还在待办清单里!已安装的 8 块组成了 RAID6,所以可以允许两块硬盘故障而无需立即更换。 `` _,met$$$$$gg. tim@hailmary ,g$$$$$$$$$$$$$$$P. ------------- ,g$$P"" """Y$$.". OS: Debian GNU/Linux 13 (trixie) x86_64 ,$$P' `$$$. Host: ProLiant DL380 Gen10 ',$$P ,ggs. `$$b: Kernel: Linux 6.12.94+deb13-amd64 `d$$' ,$P"' . $$$ Uptime: 3 days, 2 hours, 42 mins $$P d$' , $$P Packages: 406 (dpkg) $$: $$. - ,d$$' Shell: bash 5.2.37 $$; Y$b._ _,d$P' Display (VGA-1): 1024x768 [External] Y$$. `.`"Y$$$$P"' Terminal: /dev/pts/0 `$$b "-.__ CPU: 2 x Intel(R) Xeon(R) Bronze 3204 (12) @ 1.90 GHz `Y$$b GPU: Matrox Electronics Systems Ltd. MGA G200eH3 `Y$$. Memory: 8.58 GiB / 267.31 GiB (3%) `$$b. Swap: 22.89 MiB / 127.66 GiB (0%) `Y$$b. Disk (/): 955.36 GiB / 3.10 TiB (30%) - ext4 `"Y$b._ Local IP (eno4): 192.168.1.23/24 `"""" Locale: en_US.UTF-8 `` 我最初的计划是把这台服务器放在阁楼上,与光纤/调制解调器和路由器放在一起,但开机后我很快意识到,我能透过天花板听到这台机器的声音。好在我的车库阁楼空间足够大。 我从没测量过改造前后的功耗,老实说这对我来说不是大问题,挪威的电价相当便宜。 这台机器被命名为 `hailmary`,取自《[火星救援](https://en.wikipedia.org/wiki/Project_Hail_Mary)》中的飞船。如果你看看上面的 neofetch 输出,会发现它有海量的内存,288 GB,而我几乎没怎么用。我还得琢磨怎么充分利用它。我在考虑给服务器加一块 GPU,用来运行本地大语言模型(LLM)。 ![一台机架式服务器平放在车库阁楼的胶合板地板上,上面放着一台三星显示器、一把 RGB 背光机械键盘和一个游戏鼠标。](https://timharek.no/blog/kaizen-4/server.jpg) *终极服务器设置:直接放在车库阁楼地板上。* ## 新设置 在设置这一切之前,我把所有想保留的数据从 Zimaboard 移了过来:所有媒体(电影和电视剧翻录、有声书)以及照片。 在我自托管的生涯中,我头一次有了一个该死的仪表板来展示我拥有的所有东西! ![一个深色 Glance 仪表板,列出了自托管服务,分组为本地(Mesh)和公共(NetBird),包括 Dokploy、Jellyfin、qBittorrent、Beszel、Immich、Linkding、Grafana、Uptime Kuma 和 Syncthing,全部显示绿色 OK 状态及响应时间,还有一个书签部分。](https://timharek.no/blog/kaizen-4/glance.png) *我的第一个家庭实验室仪表板,运行着 Glance。* 让我带你逐一了解! ### Debian 在家庭实验室里用了两年 NixOS 之后,我想回到我所熟悉的系统。我本可以用 Ubuntu Server,但我想尽可能保持简洁,同时又熟悉。 还记得我在 NixOS 上始终没能设置成功的 cron 任务吗?在 Debian 上,那只是无聊、可靠的 `cron` 而已,工具不再是横亘在自动化备份之间的障碍(更多内容见“剩余事项”部分)。 ### Dokploy 这是我放置所有 Docker 相关东西的地方。我们最近在工作中开始使用它,所以这也是让我自己更熟悉其运作方式的借口。 有一个仪表板来查看所有 Docker 相关的东西,检查某个服务是否在运行、资源使用情况如何,或者是否有东西卡住了,这很有用。现在我既可以在浏览器里操作,也仍然可以使用 Docker 命令行。

相似文章

不安全世界中的安全

Lobsters Hottest

深入探讨 Netstack3 的设计理念,这是 Fuchsia 基于 Rust 的网络栈,在内测期间实现了极低的 bug 数量,现已部署在数百万台设备上,崩溃次数比前代减少了 20 倍。

针对越狱Kindle的更多Tailscale技巧

Hacker News Top

越狱Kindle上的Tailscale已更新,新增代理和TUN模式,使得KOReader等应用可以访问其他Tailscale设备,并默认启用Tailscale SSH。

Manganin:工具至关重要

Lobsters Hottest

Manganin 是一个用 Zig 编写的新 Git 伪造,它通过基于信任的担保树和自托管设计重新构想了源代码管理,从而避免了供应商锁定。