Please enable Javascript to view the contents

持续学习和关心个人资讯的IT人,为何考虑学点 Self-hosting

 ·  ☕ 4 分钟

ipad 使用运行于树莓派上的 vscode
图:pad 上使用运行于我树莓派上的 vscode 来写 blog

作为一个社会人,生活在不确定性的环境中,我们都注重个人财产的把控。但没多少人认真考虑过个人拥有的资讯的把控。如果你完全相信大厂们如何对待你的聊天记录,相册……且信它们永远保密且保持运营,那么……。否则信息保存和备份在自己手中,才是最可把控的。另外,作为一个爱学习和折腾的程序员,如果没有自己自主的实验环境,知识管理环境,是被动和受限的。这两个问题,“自托管(Self-hosting)” 是解决选项之一。

什么是自托管(Self-hosting)

在开始理论前,来个感性认识。上面的图,是“pad 上访问运行于我树莓派上的 vscode-server”。下面是 hosts 的图:

image-20220702163904268

3 个 Raspberry Pi(其中两台是朋友送的) 和 一台 Dell 低端旧乞丐版服务器 PowerEdge T30(还有一个垃圾铲)。

Raspberry Pi 主要运行:

  • Blog、生活笔记、编写中的书的 git 服务
  • calibre 图书库
  • vscode-server
  • 照片库等
  • 家庭内部 DNS 等服务

PowerEdge T30 主要运行:

  • 5 个 Linux kvm ,架起一个 kubernetes cluster,中安装了 Istio 等
  • 1 个 Windows kvm
  • 1 个 Mac OS kvm

我每天有 4 小时在地铁通勤路上。加上家庭成立后的各项琐事。如何充分利用这些不在显示器和笔记本电脑前时间,保持学习,一直是我关心的问题。有了这个搭建,就可以方便看书和维护 Blog 和新书了。

Self-hosting 定义

如果托管对象是个人叫 Self-hosting :

Self-hosting (web services)

Self-hosting is the practice of running and maintaining a website or service using a private web server, instead of using a service outside of someones own control. For example, someone wishing to write a blog could use hosted blog services. Alternatively, they could install content management system software on their own server to self-host their blog.

Motivation to do so could be as simple as saving costs by combining several services on a single machine or VPS instance, or in most cases the privacy benefits of being more in control – or in complete control – one’s data and computing infrastructure. However, it could also be a hobby to people well-versed in technology.

Accordingly, there’s also a sizeable hobbyist community around Self-hosting, made up of hobbyists, technology professionals and privacy conscious individuals.

自托管是使用个人 Web 服务器运行和维护网站或服务的做法,而不是使用不受他人控制的服务。 例如,希望写博客的人可以使用托管博客服务。 或者,他们可以在自己的服务器上安装内容管理系统软件来自托管他们的博客。

这样做的动机可能很简单,例如通过在单个机器或 VPS 实例上组合多个服务来节省成本,或者在大多数情况下,更多地控制或完全控制一个人的数据和计算基础设施的隐私优势。 但是,对于精通技术的人来说,这也可能是一种爱好。

因此,围绕自托管也有一个相当大的爱好者社区,由爱好者、技术专业人士和有隐私意识的个人组成。

如果托管对象是组织或单位,叫On-premises :

On-premises software

On-premises software (abbreviated to on-prem, and incorrectly referred to as on-premise)[1] is installed and runs on computers on the premises of the person or organization using the software, rather than at a remote facility such as a server farm or cloud. On-premises software is sometimes referred to as “shrinkwrap” software, and off-premises software is commonly called “software as a service” (“SaaS”) or “cloud computing”.

安装并运行在使用该软件的个人或组织的本地计算机上,而不是在远程设施(例如 服务器 IDC 或云。 本地软件有时被称为“shrinkwrap”软件,而非本地软件通常被称为“软件即服务”(“SaaS”)或 “云计算”。

Self-hosting 的优劣

先说劣吧:

  • 技术和时间投入相对直接使用大厂服务多很多
  • 失败会成为习惯,要有备份数据的习惯
  • 学习曲线和折腾

优点:

  • 学习曲线和折腾 - 对,这是优点,你有机会学习到很多,其中总有一天一些用得上。

  • 专注

    为何说,花那么多时间去搭建一个那么不 HA 的环境,还说会让人专注?要知道,连之前最佛系的 “某象笔记”,现在也在 APP 中卖广告了。

  • 自己的方式做自己的事

    程序员已经习惯了用程序员的方式去解决学习和生活上的事。在 vscode 中用 markdown 写生活备忘 note。在 vscode 中用 draw.io 插件去脑图和分析知识。最后,用 git 去记录这一切的历史和分布式增量备份,去到哪 ,git clone 到那。

  • 个人资讯把控

    自己的信息放自己的 sdcard/hard disk。不用担心自己信息被卖去或喂 AI 去。

  • 专用

    很多同学觉得,公司的 Kubernetes Cluster 实验环境不香吗?为何要上自己的?

    • 如果你的实验有风险,会破坏环境吗呢?

    • 实验做到一半,张三李四给你跑个 kubectl delete your_namespace

    • 没有什么比看得到,摸得着更让人想研究和学习了

      这一点,很多老外在 podcast 中已经讨论过。现代新人,一开始接触电脑,就是以手机和 pad 开始的,从来看不到电脑是用什么组成,内存、CPU 长什么样子,文件系统(filesystem) 是什么……。很多个认为 wifi 就是指互联网……

总结

本文不是个 DIY 文章,不会教你如何搭建 xyz。只是想说说,self-hosting 这东西的价值是什么。DIY 的东西,只要你觉得想研究,上网一找一大堆。

在互联网的初期,人们知道如何搭建自己的 DNS 域名、SMTP(email)服务 ……,所有点到点信息流动都是对等的和直接的。现代的 “互联网”,更多是上下行非对称的,更多是对资讯的消费。

但我们毕竟产生了自己专属的资讯,而且,这些资讯的保密性、可控性,对我们很重要。特别是想保持持续学习的程序员。

分享

Mark Zhu
作者
Mark Zhu
An old developer