大数跨境

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

硬撑15年、仅1台服务器、8GB内存:他用一堆“淘汰” 技术,让50+万人敲下人生第一条Linux命令! 扩展迷AIGC
2026-04-02
7
导读:一个根本“不赚钱”的项目,为什么活了 15 年?


整理 | 郑丽媛
出品 | CSDN(ID:CSDNnews)

当下主流互联网架构的“标准答案”大概是这样的: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/nullhey, 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、fdisk256MB 内存基于写时复制(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

【声明】内容源于网络
0
0
扩展迷AIGC
科技圈一手资讯,实用资源分享,互联网尽在掌握。
内容 5632
粉丝 0
扩展迷AIGC 科技圈一手资讯,实用资源分享,互联网尽在掌握。
总阅读23.6k
粉丝0
内容5.6k