🖥️

クラウドじゃなく、自宅のサーバーに Linux 学習プラットフォームを作り始めた理由

に公開

最初はクラウドで作るつもりだった

「インフラを学べるプラットフォームを作ろう」と決めたとき、真っ先に思いついたのは AWS や GCP でした。セットアップが楽だし、どこからでも使える。スケールも柔軟。周りを見ていても、オンライン学習サービスのインフラはだいたいクラウドです。それが「普通の選択」だと思っていました。

でも、構想を練るうちに、ひとつの疑問がぬぐいきれなくなってきました。

「このプラットフォームで学んだ人は、本物のサーバーを触れるようになるのだろうか?」


クラウドで学べること、実機でしか得られないこと

誤解してほしくないのですが、クラウドを批判したいわけじゃないんです。AWS も GCP も本当に素晴らしいサービスです。

ただ、「学ぶ」という文脈では、クラウドとオンプレミス(自前の物理機器)は、微妙に異なる体験をもたらします。

物理サーバーには、電源ボタンがあります。押すと、ファンが勢いよく回り始めます。ディスプレイには BIOS の文字が流れて、OS が起動するまでの数十秒、静かに待ちます。何かがうまくいかなければ、POST エラーのビープ音が鳴る。電源ランプが点滅して止まる。「あ、ここで何かおかしい」という感覚が、物理的に伝わってきます。

クラウドの場合、そういった感覚はほぼありません。コンソールでボタンを押すと、数秒後に「起動しました」という通知が来る。ものすごく便利です。でも、その間に何が起きているのかは、少し遠い世界の話になってしまう。

これは良し悪しではなく、「実物を知っているかどうか」が、後々の理解の深さに響いてくるという話です。

物理的なサーバーをいじった経験がある人は、クラウドの仮想マシンを見たときに「あれが今ソフトウェアで実現されているんだな」と頭の中でつながります。でも最初からクラウドしか触ったことがないと、そのつながりが来ない。使えてはいるけれど、「なんとなく使えている」状態のまま、気づかないうちに知識の穴が積み重なっていく。

そういう経験を何度か目にして、「実機で学べる場所を作りたい」と思うようになりました。


HPE ML30 を買ってきた

方針が決まっても、「自宅で実機を動かす」はそれなりにハードルがあります。まず、機材が必要です。

いろいろ調べた末に選んだのは、HPE ML30 Gen10。エントリークラスのタワー型サーバーです。HPE の公式サイトから購入しました。

届いたとき、思ったより大きかった。机の横に置くには存在感がありすぎます(笑)。でも、電源を入れて、ハイパーバイザー(Proxmox VE)をインストールして、最初の仮想マシンが起動した瞬間——なんというか、「本物を触っている」感覚がありました。

「これで作ろう」と思いました。


こんな構成を作っています

現在、このサーバーの上に以下のような環境を構築しています。

サーバー / 仮想化

  • Proxmox VE でハイパーバイザーを動かし、複数の仮想マシンを管理
  • TrueNAS + iSCSI でストレージを別 VM として運用
  • 演習用の Linux サーバーを複数台、用途ごとに分けて用意

ネットワーク

  • TP-Link TL-SG108E(1万円くらいのスマートスイッチ)で VLAN を設定
  • 物理スイッチが学習の動線に組み込まれているのがポイントです

外部からのアクセス

  • Cloudflare Tunnel + Raspberry Pi を使い、ポートを外部に開放せずに接続を実現
  • Cloudflare Access の OTP 認証を通過したら、ブラウザ内のターミナルに接続できる

受講者の方は、特別なソフトをインストールしなくてもブラウザだけで演習に入れます。認証を通過したらすぐに Linux のプロンプトが現れます。

ランニングコストは電気代とドメイン代くらいです。クラウドの月額費用はかかっていません。


設計で絶対に守っていること

ひとつだけ、ルールを決めています。

「クラウドシミュレーターで再現できる内容は採用しない」

たとえば、VLAN を学ぶとき。物理スイッチの管理画面を開いて、ポートに Tagged/Untagged の設定を入れます。1万円の安いスイッチでも、タグ VLAN・PVID・トランクポートの概念は本物です。チェックボックスのどれを変えると通信がどう変わるか、実際に確認できます。

パーミッションを学ぶとき。本物の Linux サーバーで chmod を叩きます。教科書には「新規ファイルのパーミッションは -rw-r--r--」と書いてあることが多いですが、Ubuntu の実機でやると -rw-rw-r-- になります。umask の設定がデフォルトで違うからです。「あれ、教科書と違う」と気づく瞬間が、むしろ大切な体験だと思っています。

こういった「実機でしか気づけないこと」を、カリキュラムの随所に散りばめています。

もちろん、物理サーバーを実際に手元で触る体験——ケーブルを抜き差しする感覚や、ラックに搭載するときの重さ——は、このプラットフォームでは完全には再現できません。でも「コマンドを打つと本物の Linux が動く」「設定を変えると本物のスイッチの通信が変わる」という感覚は、できる限り届けたいと思っています。


カリキュラムのボリューム感

コンテンツは 7部39章 / 約48時間 で設計しています。

Part タイトル 時間
1 Linux 基礎 約9h(完成 ✅)
2 ネットワーク基礎 約7h
3 サーバ運用 約6h
4 サーバ構築(Web + DB) 約7h
5 仮想化と Proxmox 約6h
6 ストレージと iSCSI 約6h
7 監視と障害対応 約7h

48時間というのは、かなりのボリュームです。Udemy の人気講座と比べてもかなり多い部類に入ります。でも、「インフラエンジニアとして現場で戦えるラインを目指す」と考えたとき、これくらいは必要だという結論になりました。

このプラットフォームは、Linux やインフラをこれから学びたい方から、ある程度の知識はあるけれど実機を触ったことがない方まで、幅広く使っていただけることを目指しています。

「コマンドラインって何?」という方でも順番に進めていけるよう、Part 1 は Linux の基礎からていねいに設計しました。「lsgrep は知ってるけど、サーバーの前に立つと何をすればいいかわからない」という方にも、もちろんフィットします。CCNA の資格取得とは少し違う軸で、Linux の実機感覚、ネットワークの動作感覚を体で覚えることを目指しています。


作りながら気づいたこと

作り始めてみると、思わぬところで詰まることが多くありました。

TrueNAS の iSCSI 設定がなぜかつながらなくて、原因を調べ続けたら「実はもう動いていた」というオチがあったり。Cloudflare Tunnel でうまく接続できなくて、ログを追っていったら旧チーム名が設定に残っていたせいだったり。章ページに Guacamole を埋め込もうとしたら、Cloudflare Access のセキュリティ設定で X-Frame-Options: DENY が返ってきて弾かれたり。

こういう「うまくいかなかった話」のほうが、振り返ってみると全部大事な学びになっていました。インフラの仕事って、だいたいそういうものだとも思います。設計書どおりにいくことはほぼなくて、実際に触ってみて初めてわかることが山ほどある。

だから、この連載ではうまくいかなかった話も正直に書いていこうと思っています。


これから書いていくこと

この Zenn 連載では、プラットフォームを作りながら経験したことを順番に書いていきます。

  • ML30 を買って Proxmox を入れた話
  • TrueNAS の iSCSI が開通するまで(失敗談あり)
  • 1万円スイッチで VLAN を切った話
  • Cloudflare Tunnel + Access で鍵配布なしの接続を実現した話
  • Claude マルチエージェントで1人 + AI でプロジェクトを回している話

……などを予定しています。

公開目標は 2026年7月頃。現在、Part 1(Linux 基礎 / 8章)が完成していて、Part 2(ネットワーク基礎)の執筆を進めています。

もしよかったら、フォローしていただけると嬉しいです。完成を一緒に待ってもらえると励みになります。


次回: ML30 を買って Proxmox を入れた話


制作の過程は X でも投稿しています。よかったらフォローしてください。

GitHubで編集を提案

Discussion