硬撑15年、仅1台服务器、8GB内存:他用一堆“淘汰” 技术,让50+万人敲下人生第一条Linux命令

CSDN·2026年03月31日 21:01
一个根本“不赚钱”的项目,为什么活了 15 年?

当下主流互联网架构的“标准答案”,大概是这样的:Kubernetes + 微服务 + 自动扩缩容 + 云原生 + 前后端分离 + React/Vue + 分布式数据库……

但有一个项目,却用最“反潮流”的架构硬生生活了 15 年——它叫 Webminal,一个免费在线 Linux 学习平台,至今仍运行在单台 CentOS 服务器、8GB 内存的极简配置上,却服务了全球 50+ 万用户,还扛过了数据中心火灾、多次停电、流量洪峰。

一个跨国组合:五年不见面,用 SSH 做产品

故事要从 2010 年前后说起。那时的 Lakshmipathi,还只是一个普通的印度开发者,在 Windows 办公环境里工作,却想系统地学习 Linux。

但问题很现实:本地装环境麻烦、虚拟机配置复杂,线上教程也大多是“伪终端”。尤其是很多网站上的 Linux 教学,基本就是“点 Run 按钮”,并不是真正的 Shell 体验。

于是 Lakshmipathi 冒出了一个看似简单、却极其关键的想法:

能不能直接在浏览器里,打开一个“真实的 Linux 终端”?

没有“运行按钮”,没有“执行提示”,只有一个纯粹的命令行环境。在里面敲的每一条命令,都像是在一台真正的服务器上执行。这样一来,当用户真正面对一台 Linux 机器时,不再紧张、不再试探,而是已经“练过很多遍”。

Webminal 的雏形,就这样诞生了。

Webminal 并不是 Lakshmipathi 一个人完成的,他还有一位联合开发者,来自荷兰的工程师 Freston。两人相识于 2010 年的一个论坛:LinuxForums.org。

之后那几年,他们做了一件今天看来几乎不可思议的事情:在没有 Slack、没有 Zoom、没有视频会议的情况下,合作开发一个线上平台。

他们的“沟通工具”只有一个:

  • $ screen -x chat
  • $ cat > /dev/null
  • hey, should we add MySQL support?

没错,他们直接在服务器的终端里聊天。直到 2015 年,两人才第一次看到对方的脸。在那之前,他们只是“彼此 SSH 里的一个用户名”。

但正是这样一种极简、甚至有点“原始”的协作方式,构建出了 Webminal 的核心。

一台 8GB 服务器,撑了 15 年

首先,介绍一下 Webminal 的基础设施:一台 CentOS Linux 服务器,8GB 内存。没有容器编排,没有集群,没有自动扩容。

自 2011 年上线以来,这套架构几乎没有本质变化,却撑过了不少“灾难时刻”:

● 2017 年,一篇西班牙技术博客带来单日 1 万用户暴涨;

● 2021 年,数据中心发生火灾,直接丢失 15 万用户账号;

● 荷兰发生过多次断电事故,曾让服务中断;

● 再加上持续增长的用户规模——Webminal 累计服务用户已超过 50 万人。

换句话说,这台 8GB 内存的机器,承载了几十万 Linux 初学者的入门体验。

而如果把 Webminal 的技术栈列出来,可能大多数工程师的第一反应大概是:“这也能用?”

● Python 2.7(没错,就是这么古老)

● 框架:Flask 0.12.5 

● 终端:Shellinabox(早在2017 年就停止维护了)

● Root 实验环境:User Mode Linux(2001 年的老技术)

● 监控:eBPF/execsnoop(整个栈里唯一比较新的组件)

● 数据库:MySQL,运行在那台扛过火灾的服务器上

● 前端:无 React、无 Vue、无 npm,纯 HTML + 内联 CSS

这套组合,几乎违背了过去十年所有“最佳实践”。但 Lakshmipathi 自信表示:“所有技术大会分享都会告诉你这套栈‘完全不合理’,但它就是服务了 50 万用户,稳定运行了 15 年。

为什么选择“老古董”不用新技术?

或许很多人会问:既然是在线 Linux 环境,为什么不用 Docker?Lakshmipathi 给出的答案很直接:因为 Docker 不够“真实”。

在 Webminal 里,用户不仅仅是敲 ls、cd 这种基础命令,而是要做更底层的系统操作,比如磁盘分区(fdisk) 、LVM 管理、RAID 配置、文件系统创建(mkfs)等,这些操作都需要“真实的块设备”。

于是,Lakshmipathi 选择了一项几乎被人遗忘的技术:User Mode Linux(UML)——一种 2001 年由 Jeff Dike 开发、能在用户态运行完整 Linux 内核的技术。

简单来说,UML 让每个用户启动的不是容器,而是一个“完整的 Linux 内核”:每个用户都拥有一个独立 Linux 内核,4 个虚拟块设备(每个 64MB),用于练习 LVM、RAID、fdisk,256MB 内存和基于写时复制(COW)的共享镜像。

当用户输入 poweroff 时,UML 实例直接退出,回到普通 shell,完全隔离、零风险。而 COW 技术又保证了成本可控——即便 100 个用户同时操作,也只增加约 2GB 存储,基础镜像全局共享。

当然,Webminal 也不是没尝试过现代化。Lakshmipathi 直言他们曾尝试用现代化的 WebSocket 终端替换 Shellinabox,结果上线才几小时,用户就反馈白屏、Firefox 兼容异常等问题。

Shellinabox 诞生于 2005 年,虽然老、慢、丑,但它有一个关键优势:几乎可以穿透所有防火墙、代理和企业内网。所以,Lakshmipathi 最后还是切回了 Shellinabox:“有时候,老东西反而才是正确选择。

在整个项目中,唯一称得上“现代”的技术,是 eBPF。Webminal 使用它来实时追踪系统命令执行,并在首页展示一个滚动的“命令流”:ls、gcc、vim……这些不是模拟数据,全部来自当前真实用户的输入,且已做匿名化处理,只展示命令本身,无参数、无路径、无密码。

据 Lakshmipathi 介绍,截至目前,这个首页滚动的实时命令流已经记录了超过 2800 万条命令。

一个根本“不赚钱”的项目,为什么活了 15 年?

事实上,Webminal 最大的“反常识”,不仅是技术,还有它的商业模式——没有广告、用户追踪、风险投资和订阅收入,所有的服务器费用,全部由 Lakshmipathi 自己承担。

“在这个项目上的花费,甚至超过了我个人和家庭的日常开支。我不止一次想过关停它,15 年确实太久了。”Lakshmipathi 坦言,在他失业的那几个月里,看着积蓄不断减少,服务器账单却每月准时到来,他都会想:这个月,要不要把服务器关掉?

但每次他找到新工作后,这个念头就消失了,Webminal 也就又多活了一年。

这些年来,Lakshmipathi 也进行过一些变现尝试,但他申请 YC 被拒、推广付费订阅失败、寻求赞助也无果。原因很简单:Webminal 的核心用户是学生,而这些人,往往连每月 4 美元都付不起。于是这个项目,最终选择了一个最“笨”的方法——继续免费。

已有 50 万人在 Webminal 敲下了人生第一条 ls 命令。他们中有人现在成了系统管理员,有人运营着自己的服务器,甚至有人管理的基础设施规模远超我。”尽管如此,Lakshmipathi 依然坚定:“只要还能帮到哪怕一名学生,Webminal 就会一直运行下去。

不过,他也坦言,如今 8GB 内存已成为 Webminal 的瓶颈,Root 实验环境的并发用户数也受限,希望能将服务器内存升级到 128GB,让更多学生同时使用 Root 环境,便在 GitHub Sponsors 开通了赞助渠道(https://github.com/sponsors/Lakshmipathihmipathi):“哪怕很小的帮助也意义重大。”

如他所说,从 Webminal 的用户评价中,可以看到许多真情实感的反馈:

● “我是一名 Windows 管理员,平时没太多空闲时间,这个网站帮我快速熟悉了 Linux。我甚至在平板上也用它,教程也非常棒,感谢你们的付出。”

● “我是韩国电子工程专业的学生,通过你的网站学习 Linux,收获非常大!”

● “教程太棒了,有些地方还很有趣。网站简直绝了,希望多出内容,继续保持!”

在现在这个强调效率、规模和资本回报的时代,Webminal 的故事似乎有些“格格不入”——但也正因为如此,它才显得珍贵:15 年、单台服务器、8GB 内存、50 万用户,Webminal 拒绝死亡的背后,是一位开发者对技术初心的极致守护。

参考链接:https://community.webminal.org/t/15-years-one-server-8gb-ram-and-500k-users-how-webminal-refuses-to-die/8803

本文来自微信公众号“CSDN”,整理:郑丽媛 ,36氪经授权发布。

+1
4

好文章,需要你的鼓励

参与评论
评论千万条,友善第一条
后参与讨论
提交评论0/1000

下一篇

生产力革命,已经到来

6小时前

36氪APP让一部分人先看到未来
36氪
鲸准
氪空间

推送和解读前沿、有料的科技创投资讯

一级市场金融信息和系统服务提供商

聚焦全球优秀创业者,项目融资率接近97%,领跑行业