Loading... # 15年单服务器8GB内存服务50万用户——Webminal生存之道 # 一、事件概述 ## 1. 项目背景 Webminal.org 是一个在线 Linux 终端学习平台,让用户通过浏览器直接访问真实的 Linux 终端进行学习。该项目自 2011 年启动,至今已运行 15 年。 ## 2. 核心数据 ### A. 规模数据 - 运行时长:15 年(2011-2026) - 服务用户:500,000 名注册用户 - 服务器配置:单台 CentOS 服务器,8GB RAM - 命令执行统计:超过 2800 万条命令 ### B. 技术特点 - 无 Kubernetes 集群 - 无微服务架构 - 无自动扩容 - 单服务器运行 ## 3. 历史考验 该平台经历了多次重大考验: - 2021 年数据中心火灾(丢失 15 万用户账户) - 荷兰多次停电 - 2017 年西班牙科技博客涌入 1 万名用户 - 创始人之间从未见过面的远程协作 # 二、系统架构 ## 1. 技术栈 ```mermaid graph TB subgraph 用户端 A[浏览器] end A -->|WebSocket/AJAX| B[Nginx] B --> C[Flask 0.12.5] C --> D[MySQL数据库] C --> E[Shellinabox终端] E --> F[共享Linux环境] C --> G[UML Root Labs] G -->|独立内核| H[用户虚拟机] H --> I[虚拟块设备<br/>LVM/RAID/fdisk] C --> J[eBPF监控] J --> K[命令实时统计] ```   ## 2. 技术选型 | 组件 | 技术选型 | 版本/说明 | |------|---------|----------| | 编程语言 | Python | 2.7 | | Web 框架 | Flask | 0.12.5 | | 终端模拟 | Shellinabox | 2005 年发布,2017 年弃用 | | Root 实验室 | User Mode Linux | 2001 年技术 | | 监控 | eBPF | execsnoop(唯一现代技术) | | 数据库 | MySQL | 存储在火灾中幸存 | | 前端 | 纯 HTML + CSS | 无 React/Vue/npm | ## 3. 基础设施迁移历程 ```mermaid graph LR A[2011 Linode] --> B[DigitalOcean] B --> C[AWS] C --> D[GCP] D --> E[OVH] E --> F[IBM Cloud] F --> G[2025 Linode] G -->|循环回到起点| A ```   # 三、核心功能 ## 1. 新版更新 ### A. 现代化 UI - 全新设计的用户界面 - 无 Bootstrap 或 jQuery CDN 依赖 - 自托管字体 - 移动端响应式支持 ### B. Root Lab 提供完整 root 权限的系统管理员实践环境,支持: - fdisk 磁盘分区 - LVM 逻辑卷管理 - RAID 阵列配置 - mkfs 文件系统创建 - systemctl 服务管理 - crontab 定时任务 - firewalld 防火墙配置 - SSH 密钥管理 - awk 与 sed 文本处理 ### C. 实时命令统计 - 首页滚动显示实时命令执行情况 - 基于 eBPF(execsnoop)实时追踪 - 累计执行命令超过 2800 万条 ## 2. Shellinabox 终端 ### A. 技术选择 团队曾尝试用现代 WebSocket 终端替代 Shellinabox,但生产环境仅运行几小时就出现: - 空白屏幕问题 - Firefox 兼容性问题 ### B. 回归原因 Shellinabox 虽然来自 2005 年,界面简陋且速度较慢,但具有以下优势: - 可穿透所有防火墙 - 兼容各种代理服务器 - 支持企业内网环境 ## 3. User Mode Linux 架构 ```mermaid graph TB subgraph UML虚拟机 A[用户空间内核] B[虚拟块设备 sda-sdd] C[256MB RAM] D[Copy-on-Write] end E[主机系统] -->|资源隔离| A A -->|fdisk/LVM/RAID| B A -->|内存限制| C F[Golden镜像] -->|COW共享| D D --> G[100用户~2GB磁盘] H[poweroff] -->|退出UML| E ```   ### A. UML vs Docker 为什么不使用 Docker? | 需求 | Docker | UML | |------|--------|-----| | 虚拟块设备 | 不支持 | 支持 4 个虚拟块设备 | | fdisk 练习 | 无法真实执行 | 完全支持 | | 内核隔离 | 共享主机内核 | 独立内核 | | 实践场景 | 容器化应用 | 系统管理技能 | ### B. 资源分配 每个 UML 实例获得: - 完整的 Linux 内核(非容器) - 4 个虚拟块设备(每个 64MB) - 256MB RAM - Copy-on-Write 写时复制层 ### C. 存储效率 Copy-on-Write 机制使得 100 个并发用户仅需约 2GB 磁盘空间,所有用户共享同一个 Golden 镜像。 # 四、协作模式 ## 1. 创始团队 - 创始人:来自印度 - 联合创始人 Freston:来自荷兰 - 相识平台:LinuxForums.org(2010 年) ## 2. 沟通方式 2010-2015 年期间,两人从未见过面,甚至没有通过 Skype 见过对方的脸。所有协作通过 SSH 连接到服务器的 screen 会话完成: ```bash $ screen -x chat $ cat > /dev/null hey, should we add MySQL support? ``` 没有 Slack,没有 Zoom,没有 Jira 工单,只是两人在终端里打字。 # 五、运营状况 ## 1. 商业模式 ### A. 收入状况 - 零收入 - 无广告 - 无用户追踪 - 无风险投资 ### B. 资金来源 创始人用个人储蓄支付服务器费用。该项目在财务上投入超过个人和家庭开支。 ### C. 尝试过的变现方式 - 申请 Y 创业营:被拒绝 - PayPal 捐赠:效果不佳 - Stripe 付费计划:无法推行 - 付费订阅:目标用户(学生)无法承受每月 4 美元 ## 2. 用户反馈 摘录用户评价: - "我是一名 Windows 系统管理员,这个网站帮助我熟悉了 Linux,甚至可以在平板电脑上使用。" - "我是韩国电子工程专业的学生,通过这个网站学习 Linux,帮助很大!" - "教程很棒,我在某些地方还笑出了声。网站非常棒,请继续制作更多内容!" # 六、经验总结 ## 1. 技术启示 ### A. 稳定性优先 - 被弃用的 Shellinabox 仍能完美运行 - Python 2.7 和 Flask 0.12.5 服务 15 年 - 有时"老技术"就是"对的技术" ### B. 简单架构的价值 - 单服务器易于维护 - 无需复杂的容器编排 - 故障排查相对简单 ### C. 适度现代化 - 在关键组件上使用现代技术(eBPF) - 保持前端轻量级(纯 HTML/CSS) - 避免过度工程化 ## 2. 运营启示 ### A. 专注核心价值 - 教育价值优先于商业价值 - 帮助学生学习 Linux 是核心使命 ### B. 可持续性挑战 - 个人项目的长期维持需要资金支持 - 需要寻找可持续的运营模式 ## 3. 未来计划 创始人正在通过 GitHub Sponsors 寻求支持,目标是: - 从 8GB RAM 升级到 128GB RAM - 支持更多学生同时使用 Root Lab # 七、总结 Webminal 的故事是一个关于坚持、务实和专注技术本质的案例。在 15 年的运行中,它证明了: - 简单的架构可以服务大量用户 - "过时"的技术仍然可靠 - 教育价值可以超越商业利益 50 万人在 Webminal 上输入了他们的第一个 ls 命令。其中一些人已经成为系统管理员,一些人管理着自己的服务器,有些人管理的基础设施甚至比创始人还要多。 只要还能帮助一个学生,Webminal 就会继续运行。 *** ## 参考资料 1. [15 years, one server, 8GB RAM and 500k users - how Webminal refuses to die](https://community.webminal.org/t/15-years-one-server-8gb-ram-and-500k-users-how-webminal-refuses-to-die/8803) 最后修改:2026 年 03 月 31 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏