惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Blog — PlanetScale
Blog — PlanetScale
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Vercel News
Vercel News
B
Blog
腾讯CDC
P
Proofpoint News Feed
Google DeepMind News
Google DeepMind News
N
Netflix TechBlog - Medium
L
LangChain Blog
F
Fortinet All Blogs
T
The Blog of Author Tim Ferriss
人人都是产品经理
人人都是产品经理
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
D
DataBreaches.Net
Stack Overflow Blog
Stack Overflow Blog
The Cloudflare Blog
Last Week in AI
Last Week in AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
T
Tailwind CSS Blog

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
教你如何用一台废弃电脑搭建All in One Home Server - 少数派
2022-05-26 · via 少数派

起因

许多自带电脑上班的程序员或多或少都会遇到这样的窘境——公司发放的傻大黑粗跟你自购的顶配轻薄全能本相比无论是在重量上还是性能上都可以说是捉襟见肘,如果你有幸和我一样公司发的是i5 8G 128GSSD的所谓12寸商务办公本,有着瞎眼的72% NTSC色域和1366 * 768 分辨率的先进屏幕,且有着五年一换的更新机制,你一定不知道要拿它怎么办。

说句老实话,放在办公室当开发环境的服务器我都嫌占空间,我的主力机多开个虚拟机都比它流畅.jpg。

但就这么放着又有点可惜,在办公室的抽屉里躺了三年,每次过年过节都要提心吊胆它在办公室会不会电池鼓包自燃。再说它有雷电接口,有千兆网口,配置还算过得去。

等会儿?千兆网口?

于是我决定把它带回家,取代家里的R4S软路由和两台树莓派3B+组成的容器集群,折腾一个低配版All in One。

前期准备工作

如果你和我一样,打算长期24 * 7将笔记本开着运行家庭服务,首先我建议你要先把电池下掉,以免长期低温烘烤使得电池鼓包,这是非常危险的,尤其在家庭环境中更是如此。

虽然把电池下掉有着这样那样的缺点,早期的Macbook有着无电池保护机制,会自动降低系统性能(并不清楚最新的是否也如此);而像绝大多数的商务本在某些固件更新之前会检测电池是否接入,所以你在下掉电池前最好将各种固件都升级到最新的稳定版,再进行拆机操作。

拆掉的电池

在拆掉了电池之后要记得把这玩意儿拿远点,你可以像我一样选择不丢必要的时候接回来进行固件更新,但千万不要把这玩意儿放房间里。

此外为了维护方便,我选择不装后盖的螺丝,这样随时可以拆开上内存条或者换SSD。

卸了电池的后果👆,无法进行固件更新

之后我给电脑装上了人民喜闻乐见的Ubuntu,并进行了忽略合盖操作的设置。

大致准备工作到此结束,接下来准备进入正文。

部署应用

K3s

由于这次拆机我顺便上了一条闲置的8G内存条,所以比起在树莓派上简单地运行docker应用,我有充足的底气要进行瞎折腾,准备部署Rancher进行容器编排管理,因此第一件事,我们要装上Rancher官方力推的K3s。

看这个命名想必你也能明白,其实这就是K8s的轻量版,我们这次采用高可用外部数据库的安装方式,将MySQL数据库定时备份到树莓派上,这样就算主机本身需要重装,也不会影响到我们的使用。

对于这个安装方式,我只能说Rancher官方提供的中文文档已经相当完备完善且傻瓜了,甚至推出了AutoK3s这样的工具防呆,在这样的背景条件下再多写一个字我都觉得自己在水字数,废话不多说,直接上链接!

K3s使用外部数据库实现高可用安装:https://docs.rancher.cn/docs/k3s/installation/ha/_index/

AutoK3s使用教程:https://docs.rancher.cn/docs/k3s/autok3s/k3d/_index

看链接你就知道都是官方文档,无毒可食用。

对于Rancher来说,最简单的安装方法就是在高可用的K3s Cluster上进行安装,这就相当于打地基。

Rancher

Rancher的安装同样有着相当完善的官方文档,虽然最新2.6版本的官翻还没出来,但是你依旧可以放心大胆的参照2.5的步骤执行操作。

Rancher高可用安装指南:https://docs.rancher.cn/docs/rancher2.5/installation/install-rancher-on-k8s/_index

首先需要注意的是Rancher需要你有一个https证书,当然如果你自己本身有一个当然皆大欢喜,如果只是内部使用,你可以使用cert-manager来颁布证书,这样的缺点无非是你用Chrome访问页面的时候需要在警告页面手动输入 thisisunsafe 字样来进入管理后台界面。

Rancher的访问同样要求你设置一个自定义域名,对于家用环境,我选择简单粗暴在路由器的host配置设置一个home.rancher.xx的域名映射到主机。

输入thisisunsafe之后就成功进入页面啦~
在Rancher管理后台,你可以查看节点资源的使用状态

我都跑了些什么

Nginx

首先当然是一个家庭应用的入口,Nginx,通过配置不同的host域名访问不同端口的应用,这样就省的一个一个输入ip+端口访问啦。

当然有人看到这里还是一头雾水,为什么我不能直接docker run -p 80:80 nginx:latest 来运行呢?

首先当然是为了好玩,其次通过Rancher编排容器化应用在多节点扩容缩减和负载均衡方面有着天然的优势,其次对于熟悉了这套部署流程的人来说,无论部署什么都是信手拈来,效率很高。在应用运行的同时可以直观感受资源的占用情况,这是简简单单的docker run无法比拟的。

方便进行多节点scale操作
服务发现端口配置
ingress入口暴露

Redis + MySQL

我自己开发的一些应用基本都采用Redis做快速缓存,所以在跑测试Demo的时候都会用到这个Redis环境。

当然数据库服务也是不可或缺。

Gitlab

一个私有化部署的git仓库。

DockerHub

如果你需要做一个家庭容器化环境的管理,一个私有化的镜像仓库是必须的。

DDNS + 内网穿透

外网访问回家庭开发环境的神器,同时为了安全,我开了路由器的防火墙,只开放了自定义端口入网规则。

软路由各种插件的管理端

由于你们都懂的原因,这里就不细说是什么应用了。在这里我也得承认我标题党了,其实说要All in One,但我还是没放弃软路由,因为实在是没必要,而且小巧一台摆在弱电箱正好,非得折腾一个笔记本去替换属实是画蛇添足,但我将上面应用的访问入口和管理页面都管控到这台主机上了,由这台主机作为家庭服务的总入口,也算是重新定义All in One了吧。

写在最后

当然其实这套环境的重点还是在于有了Rancher + 容器化,你就拥有了无限自定义的可能,搭建一套这样的家庭容器化环境其实并不是折腾的结束,相反,真正的折腾才刚刚开始,敬请期待我之后一些天马行空的想法吧。