世界を動かす技術を、日本語で。

15年、一つのサーバー、8GB RAM、50万人のユーザー - Webminalが生き残る理由

概要

  • Webminal.org は2011年から 単一のCentOSサーバー で運用
  • 最新の技術 を使わず、シンプルな構成で 50万人以上のユーザー をサポート
  • サイト全面リニューアルと Root Lab(完全なroot環境) の提供
  • eBPFによるリアルタイムコマンド表示 や独自の仮想化技術を活用
  • 無収益・無料提供 を維持し、教育への貢献を継続

Webminal.orgの歴史と運用哲学

  • Webminal.org は、 8GB RAMのCentOSサーバー1台 のみで運用
    • Kubernetesやマイクロサービス、オートスケーリングは未使用
  • 2011年から現在まで、 15年以上継続稼働
  • 2021年のデータセンター火災や、オランダでの停電、急激なアクセス増加にも耐えた実績
  • 創設者の体験 から生まれた「本物のLinuxターミナルをブラウザで体験できる」学習環境
  • 恐れずLinuxを学べる場所 の実現

サイトリニューアルと新機能

  • 全ページを一新 し、モダンで高速なUIを実現
    • BootstrapやjQuery CDNを排除し、自前フォント・モバイル対応
  • Root Lab :完全なroot権限でシステム管理を練習可能
    • User Mode Linuxを活用し、fdiskやLVM、RAID、mkfs、systemctl等の実践演習
  • ライブコマンドティッカー :eBPF(execsnoop)でリアルタイムにコマンドを可視化
    • 2800万件以上の実行履歴

技術スタックとユニークな選択

  • Python 2.7Flask 0.12.5Shellinabox (2005年製、今も現役)
  • User Mode Linux (UML):Dockerでは不可能な「本物のカーネルとブロックデバイス」を提供
    • 各ユーザーにカーネル、仮想ブロックデバイス(64MB×4)、256MB RAM
    • COWオーバーレイ方式でディスク消費を最小化
  • eBPF/execsnoop による最新のコマンド監視
  • フロントエンドはHTML+インラインCSS。ReactやVue、npmは不使用

ShellinaboxとUMLの選択理由

  • Shellinabox は古いが、全てのファイアウォール・プロキシ環境で安定動作
    • WebSocketベースの新端末では互換性問題発生のため、元に戻した経緯
  • User Mode Linux は2001年登場の技術
    • Dockerでは実現できない「本物のデバイス操作」や「完全隔離環境」を提供

開発と運営の裏話

  • インドのLakshmipathi氏とオランダのFreston氏、 顔を一度も見ずに共同開発
    • すべてのコミュニケーションは SSH+screenセッション で実施
    • SlackやZoom、Jira等のツールは一切不使用
  • クラウド事業者を転々 (Linode→DigitalOcean→AWS→GCP→OVH→IBM Cloud→Linode)
  • 独自開発したIDEや仮想環境、ファイルプール、ttyrec-to-GIF変換など、多様な機能

利用者の声と社会的意義

  • Windows管理者や学生等、幅広い層に支持
    • タブレットからも利用可能
    • チュートリアルや実践型学習に高評価
  • 「初めてlsを打った」ユーザーが50万人 を突破
    • 一部は現在システム管理者や自分のサーバー運用者に成長

運営コストと今後の展望

  • 完全無料・無広告・無追跡 を維持
    • サーバー費用はすべて創設者の自己負担
  • 収益化やVC資金調達は失敗、必要なユーザー層が低価格でも有料化困難
  • サーバー増強のための支援を募集中
    • より多くの学生がRoot Labを同時利用できる環境を目指す
    • GitHub Sponsorsで支援受付中

Webminal.orgが示す学びの本質

  • 最新技術や流行に頼らず、シンプルな構成で本質的な学びを提供
  • 「古いものでも正しい選択」 という信念
  • 一人でも多くの学習者の自信と成長を支える場 として、今後も継続運営予定

Hackerたちの意見

しばらく使ってなかったけど、Google Cloud ShellはLinuxコマンドを学ぶのにいい無料のプラットフォームだよ。https://shell.cloud.google.com

ここでの本当の価値は、セットアップがゼロってことだよね。VMを立ち上げるだけでも初心者にはちょっとハードル高いから、ブラウザシェルは「十分」って感じ。だからこういうツールがずっと残ってるんだろうね。試してみたいな。

それは素晴らしいね!インドの創業者だからだってわかるよ。あの頃はリモートシェルを手に入れるのが本当に大変だったから。インドのデビットカードはオンラインで使えなかったりしてさ。で、下のハードウェアは何なの?クラウドサーバー?それともオンプレミス?最近の世界はすごいよね。Oracle Cloudはたくさん無料で提供してくれるし。でも、もしかしたらこのツールが役立つニッチな場所があるのかも。共有画面のコミュニケーションシステムは本当にぶっ飛んでるよ、ハハハ。

最初はオンプレミスで、Frestonが自宅でホスティングしてたんだ(サーバー代はみんなで分担してたし、Linuxforums.orgで出会った人にお金を送ったことがあって、ネット越しに会ったこともないのに、数年そのフォーラムで知ってたから信じてた)。3年くらい経ってからクラウドサーバーに移行したんだ。主にクレジットがもらえたらインフラを切り替えてたよ:D 数年はLinodeがそのノードをスポンサーしてくれてたけど、買収されちゃった。>共有画面のコミュニケーションシステムは本当にぶっ飛んでる、これはFrestonのアイデアだよ。いつも「ねえLaks、俺が打ってるの見える?」って感じでチャットが始まるのを覚えてる ;)

制約って美しいよね。

UMLは賢い選択だね。2017年にWordPressで在庫管理とシフトスケジューリングシステムを作った時を思い出すよ。時には「間違った」/「古い」ツールが、ちゃんと理解してれば自分にはぴったりだったりするんだよね。UMLは古いけど、ここでは合ってる。15年も経てば、いろんなことを思い出すには十分な時間だよ。

それが全部、たった一つのGithub Sponsorで実現したんだ。[0] https://github.com/sponsors/Lakshmipathi

公平に言うと、8GBのRAMはすごいよね。どうなんだろう、もしかしたら自分は2000年代初頭に取り残されてるのかもしれないけど、2GBのRAMでもまだ贅沢に感じるよ。専用ゲーマーが超高画質のゲームをプレイするためのエキゾチックなRAM量だったのを覚えてるから、単なるウェブサーバーに8GBのRAMはほとんど過剰すぎる気がする。自分のソフトウェアが数百MB以上使ってるのを見ると、ちょっと恥ずかしい気持ちになるよ。もったいないな。

16MBがすごい量だと思われてた頃を覚えてる。そういえば、グラフィックアクセラレーションがオプション扱いだった時代もあったな。

数日前まで8GBのサーバーを使ってたけど、コスト削減のために4GBのサーバーでここ一週間ほど運用してるよ。 :)

ここでの大きな違いは、これは複数のユーザー向けに設計されてるってことだね(1人じゃなくて)。5,000人が同時にそのデバイスを使ってることを想像してみて。メモリの量やオープンファイルハンドル、ネットワーク接続数など、たくさんのユーザーが同時にいると、すごいことになるよ。

コモドール64が登場したとき、64Kはめちゃくちゃ大きかったよね。

何をするかによるね。例えば、3Dテクスチャリングのワークフローには8GBのRAMは全然足りない。4Kのテクスチャをたくさんメモリにキャッシュすることがあるからね。他のことなら、8GBは多いかもしれないけど。

最近、ブラウザのタブが遅くなって、見てみたら、なんと7.6GBのRAMを使ってたんだよね。

オールドスクールなインターネット。正しい形のインターネット。素晴らしい仕事だね、giis。まだ使ったことないし、今まで存在すら知らなかったけど、必要な人にサービスを提供してるのを知って嬉しいよ。こういうのがもっとあってほしいな。

ありがとう、これらの制約から来てるんだ。水平スケーリング(サーバー追加とか)にお金をかけられないから、新しいことを試さざるを得ないんだ。コストを抑えるためにね。上のドキュメントにはいろいろ抜けてることがあるけど、確か、最初はopenvzから始めて、今でもセキュリティはSELinuxに頼ってるし、ユーザーアカウントの作成を既存のテンプレートでext4のクォータに合わせてリマップしたり、柔軟性のためにxfsに移行したりしたんだ。Mysqldbのクォータや制限、学生たちが持ち込むフォークボム、Docker環境の話もあるし、昔のインターネットって感じだね。

User Mode Linux ああ、懐かしいな。netkit(UMLベース)でLinuxネットワーキングを学んだ思い出があるよ。UMLは本当にクールな技術だった。もし誰かが気になってるなら、User Mode LinuxはLinuxカーネルを普通のLinuxプロセスとしてブートさせて、さらにユーザースペースを同じプロセス内で動かすことができるんだ。これは2001年の話。超クールだよ。

これは、誰かがサイドプロジェクトのためにKubernetesクラスターを立ち上げる前に必ず読むべき投稿だね。

そうだね… 一番良かったのは、2Uのボックスにハードウェアを入れて、ラックに並べて、ちょっと電気代とネットワーク代を払うだけで済んでた時代だよね。あの頃は本当に楽だったし、Core 2 Duoが数台あれば、100万人のDAUに1080pの動画をストリーミングできてたからね。もちろん、リソースを無駄にするような高級な共有ホスティングの方が儲かるから、今はそういうモデルになってるんだよね。それで、Cレベルの人たちに「本物の企業はAWSやAzureでホスティングしてる」ってマーケティングして、他の選択肢は「真剣じゃない」って言うわけ。もしコンピュートの運用費が100万じゃないなら、間違ってるってことだよ。