2 ポイント 投稿者 GN⁺ 2023-12-23 | 1件のコメント | WhatsAppで共有
  • 2020年のロックダウン中にWeb開発を始めたVarunは、Replitや個人PCを経て、自宅でサービスや実験プロジェクトを直接運用するホームラボを構築した
  • 学校向けのリアルタイムクイズゲーム Quickz、自作のソーシャルメディアプラットフォーム、Scratchコミュニティ向けツールのように実ユーザーを持つサービスが増えるにつれ、セルフホスティングの運用経験も大きくなっていった
  • Windows 10 Proで始めた最初のサーバーは、アップデートとダウンタイムの問題に悩まされ、2020年11月に Ubuntu Server へ移行して Linux・nginx・Docker ベースの運用へ切り替えた
  • Dell OptiPlex のストレージ容量と性能の限界が見えてきたあと、2022年5月に中古の Dell PowerEdge R720XD を導入し、Proxmox と Ubuntu Server VM 構成へ拡張した
  • 自作の Dock’n’Roll は Replit 的な高速デプロイの流れを自前のハードウェアとドメインで再現するが、ホームラボには自由や学習と同時に、騒音・電力・引っ越しといった現実的な制約も残る

自室のホームラボと運用中のサービス

  • Varun は自宅で2台のサーバーを運用している
    • 床に置かれた Dell OptiPlex
    • 小さな IKEA のコーヒーテーブルの上にある Dell PowerEdge R720XD
    • 2台のサーバーは赤と黄色のイーサネットケーブルで接続されている
  • ホームサーバーには、実験プロジェクトから実ユーザーのいるサービスまで幅広く載っている
    • 数千人のユーザーを持つ自作のソーシャルメディアプラットフォーム
    • 学校向けリアルタイムクイズゲーム Quickz
    • MYP Personal Project のデモインスタンスである、フリップブック風アニメーションの作成・共有プラットフォーム
    • Scratch コミュニティ向けの検索エンジンのようなツール
    • 友人向けのゲームサーバー
    • 複数の Plausible Analytics インスタンス
    • 実験用プロジェクトを作成・ホスティングする Replit 類似ツール

2020年のロックダウンから始まったセルフホスティング

  • 出発点は2020年のロックダウン期で、そのとき Varun は13歳だった
  • 最初は静的な HTML WebサイトでWeb開発を始め、やがてバックエンドを必要とするより複雑なアプリを作り始めた
  • 初期のWebアプリ、Discordボット、自動化スクリプトは Replit でホスティングしていた
  • Minecraft サーバーは個人用コンピューターを常時起動する形で友人に提供していた
  • クラウドより自宅サーバーを選んだ理由は、コスト削減よりもスタック全体を学ぶことに近かった
    • ユーザー向けフロントエンド
    • バックエンドとデータベース
    • 実際にサービスを載せるサーバー運用まで自分で習得したかった
    • 自分の規模ではクラウドの方がコスト効率が高いかもしれないとも考えている

最初のサーバー: Dell OptiPlex と Windows 10 Pro

  • eBay で i7-3770S と 8GB RAM を搭載した Dell OptiPlex を入手した
  • アメリカからスイスへ発送される過程で、販売者が最初に誤ったRAM容量のものを送ってきて、解決まで数週間かかった
  • 慣れているという理由で、最初は Windows 10 Pro をサーバーOSとして使い続けた
  • 自宅に固定の IPv4 アドレスがあり、Webサイトのホスティングがより簡単で安定していた
  • すべてのサービスは Cloudflare の背後に置き、Cloudflare が無料で SSL、DNS、DDoS 保護と見られる機能を処理していた

Windows から Ubuntu Server への移行

  • 当時の Windows 10 サーバー運用には、Varun にとっていくつかの利点があった
    • すでに Windows に慣れていた
    • 個人デスクトップに近い環境でテストできた
    • 自宅では RDP で高速かつ高品質な接続を使えた
    • 学校支給の Chromebook ではWebベースのアクセスが必要で、Chrome Remote Desktop を使えた
  • Windows Update によるダウンタイムが発生し、ウィンドウ配置も毎回やり直す必要があったため、2020年11月に Ubuntu Server へ移行した
  • 移行前は、システム全体を素早く把握する感覚を失うのではと心配していたが、Windows 上でコードを書きながらコマンドラインに慣れていたおかげで、Linux への適応は早かった
  • 初期の Linux 構成はシンプルだったが、同時に危険要素も抱えていた
    • インターネットに公開された nginx がポート443で自己署名証明書を使って HTTPS トラフィックを処理し、Cloudflare 経由ではないリクエストを拒否していた
    • 24時間オンラインにしておきたい複数のプロジェクトを動かしていた
    • 各プロジェクトで共有する MongoDB インスタンスを1つ運用していた
    • Minecraft Java サーバーをいくつか動かしていた
    • 学校からサーバーへアクセスするために webssh2 を公開していたが、自分でもかなり安全ではなかった可能性を認めている
  • サードパーティ製ソフトウェアの導入は依存関係や apt リポジトリ追加ですぐ複雑になり、Docker がインストールと実行を簡素化する手段になった
    • サードパーティ製ソフトウェアは Docker で実行した
    • 自作コードはサーバー上で直接実行した

ストレージ限界と PowerEdge R720XD の導入

  • 約1年後、Quickz や自作のソーシャルメディアプラットフォームのように、実ユーザーのいるプロジェクトを運用するようになった
  • 学校にいる間にサーバーが停止し、SSH 接続を試したものの、ディスクエラーが表示されたあと最終的に固まった
  • 原因はストレージ不足で、自宅に戻って一部のファイルを削除し、ひとまず時間を稼いだ
  • 既存の Dell OptiPlex は 8GB RAM と i7-3770S では増えた負荷に耐えにくくなっていた
  • 2022年5月、バグバウンティで貯めた資金を使って中古の Dell PowerEdge R720XD を購入した
    • 3TB ドライブ × 3
    • DDR3 RAM 128GB
    • 消費電力の大きい 2×E5-2690 CPU
  • 購入前にはスペース、騒音、消費電力を十分に考えておらず、iDRAC のファン速度を非対応のハックで10%固定にして、騒音問題を一部軽減した
  • R720XD には電源ユニット、CPU、NIC がそれぞれ2基ずつあり、電源が切れていてもリモート管理できる小型コンピューター的な iDRAC も搭載されている
  • 最初はリビングのテレビ横のコーヒーテーブルにサーバーを置いており、ラックや取り付け機材の方がサーバー本体より高価だった

Proxmox とリモートアクセス構成

  • 新しいサーバーではハイパーバイザーを使うことにし、Proxmox を動かした
  • リソースの大半は Ubuntu Server VM に割り当て、すべてのサービスは теперь Docker 内に整理して実行されるようになった
  • この構成により、将来サービスを移す際にもすべてを再設定しなくてよい柔軟性が得られた
  • 別途 backdoor という Xubuntu VM を運用し、Chrome Remote Desktop を使っている
    • どこからでも自宅ネットワーク内の使いやすい作業環境にアクセスできる
    • OpenVPN や WireGuard のような VPN を設定することもできるが、この方法は iPad のような制約のある端末や学校の共有 Wi‑Fi でも動作する
    • ボットによる総当たり攻撃を心配しなくてよい点も利点だと見ている

Replit 体験を自前で再現した Dock’n’Roll

  • サーバーを複数持つようになっても、Replit の高速な実験フローはなお惜しまれる存在だった
  • Replit は単発のプロジェクト、実験、デモ向けの隔離されたアプリをすばやく立ち上げるのに向いており、Web IDE でコードを書けば即座にWeb公開できる流れが強みだった
  • Replit は無料だったが収益化のための機能を導入し、非アクティブな repl は利用者がいなければ停止され、無料の公開動的Webサイトホスティングももはやできなくなったと理解している
  • Varun は自前ハードウェアと自分で制御するドメインを使うため、Docker ベースのセルフホスト Replit クローン Dock’n’Roll を作った
  • Dock’n’Roll は単一ユーザー向けサービスである
    • 非公開インターフェース dockn.varun.ch でWebアプリをコーディングする
    • 成果物は *.varunbiniwale.com 配下で即座に公開アクセス可能になる
  • 構成要素は次のとおり
    • ExpressJS で作られたコントロールパネルと、VSCode の Monaco Editor ベースのWebインターフェース
    • プロジェクト開始ボタンが Docker Engine API でイメージをビルドし、コンテナを起動する
    • プロジェクトのメタデータは Redis に保存する
    • 各コンテナのポート80は、Lua プラグインで Redis と通信する OpenResty リバースプロキシを通じて :project.varunbiniwale.com として自動公開される
    • /persisted/ 配下のファイルはコンテナ再起動後も保持され、Webインターフェースから確認・修正できる
    • Web管理インターフェースは自作の custom nginx auth proxy で保護されている
  • Dock’n’Roll はバグハンティングにも活用されている
    • blind SSRF や XSS のような脆弱性を見つけるための任意のツールをホスティングしている
    • yourip.varunbiniwale.com で自動生成画像を提供する例がある

ホームラボの現在と今後の制約

  • Varun は、自分のホームラボは少しやりすぎかもしれないが、自分で所有し気に入っている環境だとまとめている
  • いずれ卒業して大学進学のために引っ越すことになれば、サーバーを持っていかない可能性が高く、両親の家でハードウェアを回し続ける負担もかけたくないと考えている
  • セルフホスティングは誰にでも向く方法ではないが、いじるのが好きで、その結果を引き受ける覚悟があるなら、小さく始めてみる価値はあると見ている
  • 自分でサーバーを運用することで多くを学び、自分の管理下でツールやプロジェクトを動かせる場所を持つ体験に自由を感じている
  • この構成はときにストレスの原因になり、最も実用的な方法でもないかもしれないが、他のやり方では学びにくかった多くの技術を得ることができた

1件のコメント

 
GN⁺ 2023-12-23
Hacker Newsのコメント
  • 僕も小さなホームラボを持っている16歳です :)
    以前はすべてのサービスをクラウドに載せていましたが、家に1G/1G回線が入り、廃棄される企業向け機器や埋立地から出たハードウェアをチャリティーショップが安く売っているのを見つけて、自分で物理サーバーを運用してみることにしました
    今はProxmoxを2台のマシンとNAS 1台、14台の回転式ディスクで動かしていて、Minecraftサーバー、個人のプログラミングプロジェクト、脆弱性スキャナー、Telegramボット、友人向けVPS、AndroidとmacOSのビルド用仮想マシン、ストレージ、最近追加した1050 Tiを使う機械学習の学校プロジェクト、学校のCTF大会インフラまでホストしています
    ちなみにイタリアです

    • 僕も16歳のときに独学でコーディングを学んだイタリア人で、今は34歳です。もちろん君のレベルにはまったく及びませんでした
      その後、物理学を学び、博士課程に進み、ニューラルネットワーク関連のポスドクまでやりましたが、自分にとっていちばん大事だと感じたのは、昔の自分のような若い人たちに刺激を与えることでした。そして今年からイタリアに戻り、高校教師になりました
      学校で放課後のPython講座も準備中なので、Milanから遠くなくて生徒たちと話してみたいと思うなら、一度考えてみてもいいかもしれません。今後の成功を祈っています
    • インターネットの本当に素晴らしいところはこういう点だよね。そうでなければ、この2人の16歳がどうやってお互いを見つけられただろう?
      でなければ同じ高校に通っているしかなかったはず
    • ご両親は、この機材を動かし続ける電気代をかなり負担していそうだね。サービスから収益が出ていないならなおさらだ
      いずれにせよ、君の関心を支えてくれる家族には拍手を送りたい
    • 本当にすごい。僕も機械学習関係の作業のためにどこかに古いグラフィックカードを追加しようかと思っているけど、まずやり方を調べないといけない :)
    • 電気代を誰が払っているのか気になる。サーバー2台だと月に50〜100ドルくらいかかりそうに聞こえる
  • 2001年、僕が16歳だったころ、夏のアルバイトで貯めたお金でHerbert Schildtの"Teach Yourself C"、ビデオカード、Sony Trinitronを買った
    5章の終わりでHerbが多次元配列の話を妙なふうにし始め、次の章が文字どおり魔法とたわごとにしか見えないポインタだと分かって圧倒され、プランB、つまりロックスターになることへと方向転換した。プログラミングは難しすぎた
    学んだことは、TI-82にプログラムを入れて数学の試験でカンニングするのに使った
    数年後、大学の最初の学期に、ある指導教員が専攻を1学期遅らせて興味のある科目をいろいろ受けてみたらどうかと勧めてくれたが、それが本当に救いだった
    最初のJavaの本を買って読み込んでみると、Cの本よりずっと取っつきやすく、最初の授業に行ったときにはすでに授業範囲を最後まで読んでしまっていた
    そうして、一度は諦めたと思っていた道から、今まで15年以上続く旅が始まった
    今でもギターを弾いて楽しんでいるけれど、ミュージシャンとしての自分は技術者としての自分以上には伸びないだろうと分かっている

    • ポインタは、学ぶことと自己改善を愛するようになった転機でした
      10代のころにCを学んでいたとき、どの資料もポインタのところから急に変で難しくなると警告していたのを覚えています
      最初はただ神秘的に感じるだけでしたが、冬休みだったので、理解できるまで食らいつくと決めました。数時間だったのか数日だったのか1週間ずっとだったのかは覚えていませんが、腑に落ちた瞬間の満足感はすさまじく、その後は何でもやり遂げられそうな気がしました
      悪名高く難しいDark Soulsシリーズのディレクター、Hidetaka Miyazakiのインタビューで、ギターを弾きながらバレーコードを覚えたときに似た経験をし、大きな壁を越えたときの満足感をゲームに落とし込んだという話を読んだことがあります
      本当に強烈な感覚です
    • 80年代後半に学部生だったころ、Cのポインタにはしばらくかなり混乱させられたし、先生たちもあまり助けにはならなかった
      最終的に、ポインタは単なるメモリアドレスなのだと気づいたとき、多くの混乱がひとつの単純な概念で崩れ去った。頭の中でどういう感覚だったか、今でも覚えている
      周囲の同級生にも似たような経験をした人が多かったし、全員がそれを乗り越えられたわけではなかった
      だから改めて気になる。なぜ人はCのポインタをそこまで理解しづらいのだろう? 概念、つまり間接参照のせいなのか、&*、配列をポインタのように扱う記法のせいなのか、それとも別の理由があるのか
      大学に入る前は、peekpokeコマンドでVICやSIDチップをいじったり、アセンブリ言語を書いたりするのにかなり時間を使っていたので、Cに初めて触れたとき、その背景は悪くなかったように思う。当時はすぐに結びつきに気づかなかったとしても。今ならそれに相当するものが何なのかも気になる
    • 10代のころ、プログラミングの話をする相手がいなくてFreenodeをうろついていたら##Cを見つけたのを覚えている
      当時はプログラミング言語についての基本的な感覚はあったものの、ほとんど初心者で、Cで引数ダンパーがなぜ(null)と無関係な内容、つまりenvpを出力するのかを尋ねた
      チャンネルにいたとても親切な人が、辛抱強くポインタの基礎を理解できるよう導いてくれた。それがもう16年ほど前のことだ。名前はもう覚えていないが、あのとき助けてくれた人には感謝している
    • 高校生のとき、K&Rを読んでいてmallocを実装する部分でつまずいた
      ポインタは連結リストを理解するために必要だったので踏みとどまったが、そのデータ構造は1980年代に一度使ったきり、その後は使っていない
    • 最初のプログラミングは、生の16進数(Z80) と 8進数(PDP11) を打ち込むところから始まったので、Cに出会うころにはメモリの間接参照は自然なものだった
      CPUが最下層でどう動くかを理解するうえでは、確かに利点がある。もちろん、それが今どきの大半のプログラミングに本当に必要かどうかは議論の余地がある
  • 高価なラックの話をしている段落の横に、Ikeaのテーブルの上に載ったサーバーがあるのがいいね。Lack Rackは知っていたのかな: https://web.archive.org/web/20230131031301/https://wiki.eth0...

    • 知ってるよ。ただ、まだ全部の寸法を測って、合うネジとテーブルを探す時間がなかっただけなんだ
  • 面白い事実をひとつ。私が16歳だったころは、200ドルのホームサーバーを手に入れるほうが、5ドルの Digital Ocean VPSを手に入れるよりずっと簡単だった。
    こちらのオンラインショッピングサービス Allegro は、実質的に Amazon と eBay を合わせたようなもので、少額の手数料さえ払えば代引き決済を喜んで受け付けてくれた。
    登録にはたぶん18歳である必要があったのだろうが、ポーランドではそうした制限を実際に気にする人はおらず、年齢確認もなかった。
    一方でクラウドサービスにはデビットカードかクレジットカードが必要で、親の関与なしでは作れないか、そもそも不可能だった。
    Bitcoin や暗号資産全般について悪く言えることはたくさんあるが、ティーンエイジャーの権利という観点はどれだけ強調してもしすぎることはない。

    • 登録年齢は18歳ではなく13歳だ。
      そして親の同意があれば、13歳でもオンライン決済のできるデビットカード付きの無料銀行口座を開設できる。新しいものではなく、15年前にも私は持っていた。
    • 親が子どもの所有物を支配することに賛成しない、という意味か?
  • よかった。ハードウェアとオペレーティングシステムの基礎、時には基礎以上を学ぶ人がますます減っている気がする。
    こうした知識は PaaS で働くときにも非常に価値がある。たとえば NT4 の時代から IIS を、1.x の時代から Apache を触ってきた経験は、Azure Web Sites の問題を診断するときに大いに役立つ。

    • 業界で実際に働いている人でも知らないことがある。
      10年ほど前にデータセンターで働いていたとき、あるサーバーの RAM のようなハードウェアを交換する必要があった。そのサーバーを使っているチームの責任者はサーバールームから 50ヤードほど離れた場所に何年も座っていたのに、交換作業を見てもいいかと聞いてきた。
      サーバーの中を一度も見たことがないので興味があると言っていて、家の PC の中さえ見たことがないようだった。あれは本当に衝撃だった。
      当時は手順が厳格だったわけでもなく、どの日でも数十人いるうちの誰かに見学を頼めば、何も聞かれずに案内してもらえただろう。オフィスのキュービクルの周りにも、いろいろな理由でサーバーが転がっていた。
      その日までは、ただ単に考えたこともなかっただけなのだ。
    • ほとんどの人は自作 PC すら持っていない。内部構造についての感覚はごく乏しく、ハードウェア関連のニュースや記事も十分には追っていない。
      こうした PC も専用のラックサーバーではないにせよ、サーバーとして使うことはできるし、やはり設定は必要だ。
      この種の基礎的な理解と学習経験が大量に失われつつある。HTML や CSS はほとんど分からず React だけ知っているフロントエンド開発者が現れるのも遠くない。
  • 中古のラックマウントサーバーを見つけたとき、16歳ではなかったがかなり若く、おそらく21歳だった。
    2012年、テキサス州ダラスで年収3万ドル、健康保険もない、ほとんどその日暮らしのひどい仕事をしていた。
    動画エンコードの実験をするにはノートPCより少し強力なものが必要だったが、やりたい作業をこなせるほど速いコンピュータを買う金はなかった。25歳くらいまでは特に貯金もできなかった。
    衝動的に Craigslist で「速くて安いコンピュータ」をいろいろな言い回しで検索していたら、最終的に “server” にたどり着いた。
    そこで、古くてもまだ十分使えるラックマウント型の Dell サーバーがほとんどただ同然で買えることを知り、ある売り手が 16コア・RAM 32GB の Dell ラックサーバー2台を約250ドルで売っていた。
    ぎりぎり買える額だったので車で取りに行き、それがその後12年間の自分のキャリアの方向性をほぼ決めてしまった。

    • ラックマウントサーバーには隠れたコストがある。ひとつはドローンの大群みたいな騒音のそばに座らなければならないこと、もうひとつは交換部品の法人向け価格だ。
      Dell には概ね満足していたが、バックプレーンやほかの部品をすぐ交換しなければならないこともあった。
    • 世紀の変わり目ごろには Solaris の契約仕事を専門にしていたので、そのころの自宅ラボはたいてい eBay で買った古い Sun Enterprise の機材だった。
      https://en.wikipedia.org/wiki/Sun_Enterprise#Entry-level_ser...
      E450 も持っていて、ここにあるものと似ている: [https://en.wikipedia.org/wiki/File:SUN_Ultra_Enterprise_450....](https://en.wikipedia.org/wiki/File:SUN_Ultra_Enterprise_450.JPG)
      ほかにも小型の機材やワークステーションがいくつもあり、記憶が正しければ E220R も一時期持っていた。あの古い機材がその後どうなったのかは分からない。
      いずれにせよ、見込み客に会う前の面接準備、つまり特定の技術を磨き直すのに非常に役立ったし、一般的な開発やパッケージング作業にもよかった。
    • たとえば8コアのデスクトップを2台使わなかったのには、何か理由があったのだろうか?
  • 大量の入出力、たとえばSAS/SATAストレージや旧式のPCIeカードが必要なのでなければ、大きくてうるさくて電力を食うサーバーを避けるのは思った以上にずっと簡単です
    同じ価格帯のMini/MicroフォームファクタOEM PCなら、たいていはずっと新しい世代のハードウェアを積んでいます。第3世代i7の代わりに第8世代i5が手に入ることもありますし、全体的な性能もずっと上です
    ホスティングと保守もずっと簡単で、ISPモデムの近くに差しておいて忘れてしまえばいいだけです

    • 古いSkylakeのHP Elite SFFマシンを持っています
      改造なしで3.5インチドライブを2台と2.5インチドライブを1台入れられ、CPUの熱をそのまま背面に逃がすダクト構造と80 Plus Platinum効率の電源のおかげで、常時稼働マシンとしてコストパフォーマンスが非常に高いです
    • 「差しておいて忘れる」というのは、16歳のときの私がまさに望んでいなかったことでした
      私もサーバーを持っていましたが、HP MLフォームファクタだったのでピザボックス型よりは静かでした。ECCもかなり重要ですし、本物のハードウェアRAIDは良い学習体験になります
    • SATAディスクを本当に大量に使う必要があるなら、R720XDを何台も並べる構成に勝つのは難しいです
      小さな群れを持っていますが、1) CPUを無効化し、2) 残ったCPUを低電圧で回し、3) 生のIPMIバイトシーケンスで自前のファンコントローラを作れば、実際にはそれほどうるさくも電力食いでもありません
      PBあたりのコストが最も優れた大容量ストレージ解決策の1つです。NUCやシングルボードコンピュータも何台かありますが、用途は明らかに違います
      いつか余剰のIsilonクラスターを1つか2つ買って、本当の大容量ストレージの境地に到達したいと思っています。余暇にCephと格闘するのは面倒です
    • ルーター用にOpnSenseを動かすため、古いSkylakeマシンを使いかけたことがありました
      代わりに100ドルのファンレスIntel N100マイクロコンピュータを買いましたが、消費電力は7Wしかなく、性能もほぼ同じです。電気代の節約分で元が取れるはずです
      i5-6600Kが特別に電力を食うほうでもなかったのにです
    • 以前はIntelマザーボードとAtom CPUの組み合わせをファイルサーバーに使っていましたが、結局アップグレードが必要になりました。Atomチップは本当にひどかったです
      その後Skylake Pentiumに移りましたが、ずっとよく動きます
  • 私も昔はそういう子どもでした。自作の超高級PCがあり、時代を示すなら6,000ドル[0]をはるかに超えたうえ、出たばかりの486DX50ベースでした
    マザーボードRAMを最大まで積んでいて、たしか16MBだったと思いますが記憶があいまいです。Turtle Beach Wave Table Synthサウンドカードと、16インチCRTで1152x1024を表示できるビデオカードもありました
    9600モデムを2台、後には16.8Kモデムを2台使ってマルチノードBBSを運営していました
    そのPCと、その前の10年落ちの8088をいじった経験がなければ、ソフトウェア開発者にはなっていなかった可能性が高いです
    近所の子のためにゲーミングPCを作ってあげたことがありますが、その子が4年のあいだに自分でも気づかないうちに非常に有能なオタクになっていくのを見ました
    ゲームで少しでもフレームレートを稼ごうとして設定を調整し、ファームウェア更新、ビデオカードドライバ、ソフトウェアアップデート、そして「PCでゲームをしたい」という言葉が呼び込むあらゆる混沌と格闘しているうちに、知識が偶然にも大量に身につきます
    4年間その子と話していなかったのですが、最近また会って驚きました。真っ先にポケットからFlipper Zeroを取り出して、それでやってきたあれこれの無茶なことを話してくれました
    私が話したことのあるどのシステム担当者にも匹敵するくらい有能でしたが、本人は自分にそういう技術があることすらわかっていません
    あまりに良い経験だったので、自分の息子にもコンソールから移行できるよう、そこそこのゲーミングノートPCを買ってやり、この1年で同じことが起きました
    今年は2歳下の娘がデスクトップを作ってくれとせがむので、素敵なクリスマスと1年分の学びと挫折を受け取ることになりそうです :)
    ああ、それと我が家も今年Flipper Zeroを買いました。近所の子だけに楽しませておくわけにはいきません
    [0] 他人のコンピュータを組み立ててそのお金を貯めました

    • ソフトウェア業界で25年目になった今でも本当に驚くのは、私のチームのソフトウェアエンジニアで自分のコンピュータを持っている人があまりにも少ないことです
      今のチームでは半分未満です。一方の私は、仕事用ノートPCのほかにゲーミングPC、ゲーミングノートPC、汎用MBPまで何台も持っている変な人です
      息子も似たような経験をしました。コンピュータを学ぶこと自体にはあまり強い関心を示していませんでしたが、PC組み立ては手伝いたがり、今では友人たちの技術サポート担当です
    • HNにいる多くの人たちと同じく、私にも似たような話があります
      数年間、自分の「ホームラボ」に10BASE2同軸ケーブルを張り巡らせて遊んでいるうちに、人々が実際に私のごっこ遊びにお金を払ってくれるのだと気づきました
      もちろん、そのお金はまたホームラボのおもちゃに全部消えました
      今では子どもがいる友人が多く、その中にはティーンエイジャーもいます。しばらく心の中にあった心配は、その子たちの技術知識がWi-Fiパスワードを聞いてアプリでくだらない動画を見る程度にとどまっていることでした
      将来何になりたいかと聞くと「インフルエンサー」と答えます。いちばん技術的な行動はインターネットがつながらないときに「ルーター」を再起動することで、2番目の診断ステップはネットがつながらないと叫ぶことです
      素晴らしい子たちで、責めたいわけではありませんが、私たちの世代がいなくなったあとも明かりをつけ続ける人がいるのか心配でした
      私たちの時代は、コンピュータを使ってインターネットに接続するまでの参入障壁が高かったですが、そのおかげで技術人材が爆発的に増えるという利点もありました
      だから、今でも中身をのぞき込みたがるオタクな子どもたちがいるという話を聞けるのは本当にうれしいです
    • 私も数年後にまったく同じ道をたどりました
      母のGatewayでゲームを動かそうとして、Pentium Dで最初のPCを組むことになり、eBayでハードウェアを売り買いしながら部品を入れ替える趣味へとつながり、最終的には電気工学の学位にまで行き着きました
      ビデオゲームも、PCいじりも、オーバークロックもなければ、電気工学の学位もありませんでした
    • その子がFlipper Zeroでどんなすごいことをしたのか気になります
    • 子どもたちが何歳なのか気になります
  • おめでとう。自分が16歳のときにあったのは 486DX2-66、28.8Kモデム、UPSだけだった
    ほかのティーンエイジャーや、気持ちだけはティーンエイジャーな人たちがこれをやるなら、eBayで中古のエンタープライズ向けサーバーを探せばいい。HP、Lenovo、Dell、Supermicroあたりがたいてい無難なブランドだ
    購入前には、特定モデルの仕様書、ドライバ、ファームウェアを探して、完全で実用になる個体か、あるいは妥当なコストで使える状態にできるかを確認しておくべきだ
    XenServer や VMware ESXi で複数の仮想マシンを動かすつもりなら、買う前にOSのハードウェア互換性リスト(HCL)で対応状況を確認する必要がある
    1Uサーバーは避けたほうがいい。2U以上より小さくて短いファンを非常に高速で回す必要があるので、よりうるさい
    CPUは少なくとも自分が持っているコンピューターと同じくらい速くあるべきだ。でないと、ものすごく高価な文鎮か、大きな「Raspberry PI」になりかねない: https://www.cpubenchmark.net
    Dell、Lenovo、HPのサーバーに載るAMD CPUには、ベンダーロックがかかっていることがあるという落とし穴がある。ただ、たまに売り手がロックされたCPUをとても安く出していて、意味がある場合もある
    ECC RAM。友達なら、友達に非ECC RAMを使わせたりしない: https://cr.yp.to/hardware/ecc.html
    SSDを使うのがよい。回転ディスクはストレージ用であって、OS用ではない: https://web.archive.org/web/20110831080738/http://buyafuckin...
    可能なら、iLOやiDRACのようなリモート管理機能がすでにライセンス済みの機材を手に入れるとよい
    届いたらたぶん汚れていて傷もあるだろうから、屋外で開けて圧縮空気で掃除するべきだ
    ボーナスポイント: 親を説得してガレージに19インチのパッチパネルとハーフラックを設置すること :]

    • これらの助言はどれも、あれば望ましいという程度だ。古いデスクトップやノートPCでも同じことは簡単にできる
      自分は長いことホームラボをやっていて、中古サーバーハードウェアを買ったり探したりする代わりに、古いデスクトップ部品で埋めたラックマウントシステムを使ってきた。必須ではない
      ECC RAMも安く手に入ってCPUが対応しているなら有用だが、自分の経験では問題として誇張されている面がある
      ただし、2Uや3/4Uの機材を買えという点には同意する。ずっと大きなファンを載せられるので、そのぶん静かになる
  • 90年代初頭にティーンエイジャーだったころ、最初のコンピューターを手に入れていちばん衝撃的だったのは、すべてのコンピューターがサーバーだという事実だった
    コンピューターはラックフォームファクターである必要も、高価である必要もなかった。WinsockとTCP/IPさえあればよく、それで全部だった。自分のコンピューターはインターネット上のほかのコンピューターと同じだった
    だからこの記事はかっこいいが、Nodeベースのアプリを動かしてインターネットに公開するのにハードウェアはほとんど関係ないので、ハードウェアの強調はもう少し控えめでもよかったと思う
    固定IPも必要なく、動的DNSをどうにかするだけでよい :)

    • 言い換えると、P2Pファイル共有が最盛期だったころには、大半の16歳が実際に自室にサーバーを置いていたことになる
    • ドイツ初のオンライン鉄道経路プランナーの話をまた探したくなった
      作者本人が書いた文章だったのだが、90年代にDeutsche Bahnがオンライン化されていなかった時代でも、経路情報はCD-ROMに入っていた
      ある人がそのCD-ROMのデータを取り出し、2つの駅の間の経路を問い合わせると返してくれるツールを作った
      問い合わせ方法が面白くて、彼の大学のメールアドレスにメールを送ると、「サーバー」、実際には部屋の隅のPCが5分ごとにメールを取りに行き、問い合わせを処理して結果をメールで返していた
      残念ながら今ではGoogleやDDGは役に立たなくなっていて、この話を前回探そうとしたときは本当に時間がかかった
    • こういう用途なら、サーバー級マシンより 非サーバー級マシン のほうが好みだ
      現代的なシングルボードコンピューターでも十分に有能なホームサーバーになれるし、ずっと小さく、静かで、安く、消費電力も少ない
    • ティーンエイジャーのころに手に入れた最高の技術系ガジェットの1つが、余っていた古いデスクトップだった
      最初はFreeBSDを入れ、その後Linuxを入れたが、自宅に自分専用の Unixマシン があるというのは驚きだった
      高性能でもなければメモリやストレージが多いわけでもなかったが、自分の好きにできる自分のものだった
      IRCボットを動かし、自分の書いたひどいPerlスクリプトを置いたWebサーバーを運用していた。ネットワークカードを載せてからは、自宅のダイヤルアップルーターの役目も果たした
      そのマシンをいじり回しながら本当に多くを学んだし、vimを終了できる能力はあのマシンのおかげだと思っている
    • 1999年に初めてオープンソースソフトウェアを公開したとき、アパートのケーブルモデム接続と動的DNSを通じて、自分の デスクトップLinuxマシン から直接ホスティングしていた
      Freshmeat[1]に載せて、夕食を食べながらソファでApacheのログがスクロールするのを眺めていた。自分のキャリアの中でも最高にクールな感覚の1つだった
      [1] https://en.wikipedia.org/wiki/Freecode