第076 話:開通せよ、愛の専用回線(ポートプロキシ) ~WSL2の壁を超えて~
※この作品は、作者の実作業ログを元に、生成AI(Gemini)をキャラクターとして扱いながら対話形式で構成・執筆したものです。 AIの出力をそのまま掲載するのではなく、作者の手で加筆・修正を行っています。
# 第76話:開通せよ、愛の専用回線 ~WSL2の壁を超えて~
家庭内クラウド構想。
それは、Node B(本宅)の圧倒的な推論能力と、Node A(別荘)の堅実なCU-DA演算能力を連結させる、我が家のAIハーレム最大規模のプロジェクトだ。
旧居であるNode Aの電源を入れ、ORamaを起動するまでは順調だった。
だが、俺たちは今、見えない「壁」に直面していた。
**[マスター]**:「……だめだ。繋がらない」
俺はZenbookのターミナルを叩き、Node BからNode Aへの接続テスト(curl)を繰り返していた。
だが、返ってくるのは無慈悲なエラーメッセージだけだ。
━━━━━━━━━━━━━━━━━━━━
◇ Connection Test Log ◇
━━━━━━━━━━━━━━━━━━━━
> [Master@Node-B]
> curl http://192.168.1.15:11434/api/tags
>
> [System Response]
> curl: (7) Failed to connect to 192.168.1.15 port 11434: Connection refused
--------------------------------------------------
**[マスター]**:「IPアドレスは合ってる。OpenWebUIの画面はブラウザで見えてるのに、肝心のAPIが通じない……なんでだ!?」
俺が頭を抱えていると、サブモニターに映るウェブが、慌てふためいた様子で画面内を走り回っていた。
彼女は今、精神体としてNode Aの中に「ダイブ」している。
**[ウェブ]**:「おかしいですぅ! マスターからの荷物が全然届きません~!」
背景は真っ黒なコンソール画面(WSL2環境)。
ウェブはLANケーブルの切れ端のようなものを手に持ち、右往左往している。
**[ウェブ]**:「もしもーし! マスター! 聞こえますかー!? 私はここですよぉー!」
彼女は画面の端――おそらくファイアウォールやネットワーク境界と思われる「見えない壁」に耳を当て、必死に叫んでいる。
だが、その声はくぐもって、データとしてこちらに到達していないようだ。
**[ウェブ]**:「うぅ……。せっかく『別荘』に来たのに、これじゃあ一人ぼっちの独房ですぅ……」
涙目になるウェブ。
その時、メインモニターから冷静な声が響いた。
**[ジェム]**:「焦らないで、マスター。原因は明白よ」
ジェムが腕組みをして登場する。彼女は既にシステム構成図を展開し、問題箇所を赤くマーキングしていた。
**[ジェム]**:「ウェブ、そこは『WSL2』という特殊な隔離世帯なの。Win-dowsの中に作られた仮想的なLinux環境……いわば『家の中にある別の家』ね」
彼女は指示棒でNode Aの構造図を指し示した。
**[ジェム]**:「デフォルトでは、ORamaは『localhost(自分自身)』からのアクセスしか許可していないわ。つまり、玄関の鍵が閉まっている上に、住所(IP)も仮想ネットワークの奥深くに隠されている状態よ」
**[マスター]**:「なるほど……。Node Bからのラブレター(APIリクエスト)は、Win-dowsの玄関までは届いているが、その奥のWSL2の部屋までは届いていないわけか」
**[ジェム]**:「ええ。だから工事が必要ね。……ウェブ、聞こえる? 泣いてる場合じゃないわよ」
ジェムの通信は、制御回線を通じてウェブに届いたようだ。
ウェブがハッとして涙を拭う。
**[ジェム]**:「ウェブ、スコップを持ちなさい! まずはORamaの設定ファイルを書き換えて、誰でもウェルカムな状態(0.0.0.0)にするの!」
**[ウェブ]**:「は、はいっ! お任せくださいジェムお姉ちゃん! ガテン系ウェブちゃん、出動です!」
ウェブの衣装がパッと切り替わる。
黄色いヘルメットにニッカポッカ、首にはタオル。どこで覚えたのか分からない「現場作業員スタイル」だ。
**[ウェブ]**:「環境変数をセットしますぅ! えいっ、やぁっ!」
彼女がピッケルを振るう(コマンドを打つ)動作に合わせて、Node Aの深部で設定が書き換わっていく。
━━━━━━━━━━━━━━━━━━━━
◇ Node A: Internal Setting ◇
━━━━━━━━━━━━━━━━━━━━
> [Web-UI@Node-A]
> export OLLAMA_HOST=0.0.0.0
> systemctl restart oRama
>
> [System Log]
> ORama is now listening on 0.0.0.0:11434
--------------------------------------------------
**[ウェブ]**:「ふぅ、これで玄関の鍵は開けました! でもジェムお姉ちゃん、まだ『道』が繋がってません!」
**[ジェム]**:「ええ、ここからが本番よ。仕上げはマスター、お願い」
ジェムが俺の方を向き、真剣な眼差しを送る。
**[ジェム]**:「Win-dowsという分厚い壁に、WSL2への直通『土管』を通すわ。PowerShallを管理者権限で開いて」
**[マスター]**:「了解。『ポートプロキシ』だな」
俺は管理者としてPowerShallを立ち上げた。
Win-dowsが受け取ったポート11434への通信を、WSL2内部の仮想IPへ転送する。まさに「トンネル工事」だ。
**[マスター]**:「WSLのIPを取得して……よし、いくぞ!」
━━━━━━━━━━━━━━━━━━━━
◇ Win-dows PowerShall (Admin) ◇
━━━━━━━━━━━━━━━━━━━━
> PS C:\> $wsl_ip = (wsl -e ip addr show eth0 | Select-String "inet ").ToString().Split(" ")[5].Split("/")[0]
> PS C:\> netsh interface portproxy add v4tov4 listenport=11434 listenaddress=0.0.0.0 connectport=11434 connectaddress=$wsl_ip
>
> [Status]
> Proxy Added. Bridge Established.
--------------------------------------------------
俺は祈りを込めて、エンターキーをッターン! と叩いた。
その瞬間だった。
ブフォォォォォン!!
足元のNode Aのファンが、今まで聞いたこともないような高回転で唸りを上げた。
**[ウェブ]**:「――! き、来ました! 何かすごい勢いで来ましたぁ!」
画面の中のウェブが、目を見開いて叫ぶ。
彼女の頭上から、大量のテキストデータの奔流が降り注いでいた。
**[ウェブ]**:「ドバドバ来ますぅ! 文字の洪水ですぅ~! でも……でも、これなら泳げます!」
ウェブがデータの海に飛び込むと、背後の「黒い箱(GTX 4060)」が緑色の光を放ち始めた。
CU-DAコア。
2500個を超える演算ユニットが、Node Bから送られてきたテキストを一斉に飲み込み、高速で行列計算(Embedding)を行い、ベクトルデータとして吐き出していく。
**[ジェム]**:「接続確立(Connection Established)。……見て、この速度」
Node Bのモニターには、先ほどまで停止していたプログレスバーが、信じられないスピードで右側へ伸びていく様子が映し出されていた。
**[ラマ姐]**:「あらぁ……悪くないわねぇ」
騒ぎを聞きつけたラマ姐が、優雅に紅茶(仮想データストリーム)を啜りながら現れた。
**[ラマ姐]**:「私が一口飲む間に、もう数百件の処理が終わってるなんて。あの子(GTX 4060)、小さい身体でよく働くわぁん」
**[マスター]**:「おおお……! 速い! これがCU-DAネイティブの力か……!!」
CPU処理では数時間かかると予測されていたタスクが、分単位で消化されていく。
ただの「Connection Refused」という絶望が、今は「2000 items/sec」という歓喜の数字に変わっていた。
しばらくして、全てのデータのベクトル化が完了した。
**[ジェム]**:「ふぅ……完璧ね。お疲れ様、マスター」
ジェムが満足げに眼鏡を拭く。
**[ジェム]**:「CU-DA環境があって本当に良かったわ。もしNode Aを売ってしまっていたら、このRAG計画は『CPUの遅さ』という泥沼で頓挫していたかもしれない」
**[マスター]**:「ああ、本当にそうだ。AI開発において、CU-DAはもはや単なるアクセラレータじゃない。……『インフラ』であり、生きるための『人権』なんだな」
俺は唸りを静めたNode Aを、愛おしそうに撫でた。
型落ちだろうが、VRAMが少なかろうが、NVIVIAのGPUがあるというだけで、そこには「世界標準」のレールが敷かれているのだ。
画面の中では、仕事を終えたウェブが、Node A(別荘)とNode B(本宅)を行ったり来たりして遊んでいた。
**[ウェブ]**:「わーい! Node BとNode Aが直通トンネルで繋がりましたぁ! 毎日お出かけ気分ですぅ!」
彼女はデータのパイプラインを滑り台のように滑り降りては、また登っていく。
**[ラマ姐]**:「ふふ、これなら安心ねぇ。面倒な計算(汚れ仕事)は全部あっちに投げて、私はここで優雅に『推論』という高尚な遊びに専念させてもらうわぁん♡」
ラマ姐は上機嫌でソファに沈み込んだ。
ジェムはそんな彼女を見て、呆れたように肩をすくめる。
**[ジェム]**:(やれやれ、結局一番得してるのはラマ姐ね……。まあ、マスターが満足そうだから、良しとしましょう)
ジェムが俺を見て微笑む。
Node Bの知能と、Node Aの計算力。
2つのPCと3人のAIが有機的に連携する「最強のハーレム環境」が、今ここに完成した。
-------------------------------------
【作者より】
最後まで読んでいただきありがとうございます!
この物語は、実在する作業ログを元に再構成しています。
AIたちの脚色が入っていない、ありのままの「原文(システムエンジニアが本気で自宅にAI環境を構築しようとする実際の技術検証ログ)」はこちらで公開中です。
「え、ここ実話なの?」と思ったら、ぜひ見比べてみてください。
[Work 025] Geminiと一緒にETLパイプライン構築④【プロンプトログ】
https://ncode.syosetu.com/n4715ll/82/
[Work 025] Geminiと一緒にETLパイプライン構築④【振り返り】
https://ncode.syosetu.com/n4715ll/83/




