113
94

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIをいつでもどこでも動かそうとしたら、気づけば自宅インフラ沼にはまっていた話 【ミニPC/Proxmox/Tailscale】

113
Posted at

3行要約

  • Claude CodeなどのAIエージェントをいつでもどこでも動かしたくて、ミニPCを購入した。
  • 気づけばProxmoxを導入し、LXCコンテナで環境を分割し、TailscaleでVPN網を構築していた。
  • いつの間にか自宅インフラエンジニアになり、最高のAIエージェント動作環境が完成した。

はじめに

「AIエージェントを、いつでもどこからでも使いたい」

そう思ったことはありませんか?

私の場合、2025年12月のある日、Claude Codeのレートリミットと格闘しながらふと疑問に思いました。「帰省先でもClaude Codeを使いたいけど、どうすれば?」

答えはシンプルでした。「自宅に省電力なミニPCを置いて、自分だけのプライベートクラウドを作る」

しかし現実は甘くありません。セキュアなアクセス、リソースの効率化、データの同期……一つ解決するたびに新しい欲求が生まれ、気がつけばAIを動かすよりインフラ構築に熱中する羽目になったのです。

この記事では、AIコーディングエージェントを快適に使いたかった私が、どのようにして自宅インフラの沼にハマり、最終的にどのような環境を手に入れたのかを綴ります

(※具体的な構築手順は省略しているので、同じ環境を作りたい方はこの記事をAIに丸投げしてみてください)

本記事に登場する技術スタック

技術 解説
ミニPC 今回の主役。Intel N100搭載、16GBメモリ、512GB SSDの省電力・高コスパ機。
Proxmox VE オープンソースの仮想化管理プラットフォーム。ブラウザから直感的に操作可能。
LXC Linuxコンテナ。仮想マシン(VM)より軽量・高速で、Dockerよりシステム全体を管理しやすい。
Tailscale 複雑な設定なしでNAT越えができるメッシュVPN。外出先からの安全なアクセスの要。
Subnet Router 特定端末を「橋渡し役」にすることで、自宅ネットワーク全体をVPN網に広げられる。Tailscale未導入の機器にもアクセス可能に。
Exit Node Tailscaleの機能。インターネット通信の「出口」を自宅に設定。外出先でも自宅回線経由で安全に通信できる。
Syncthing オープンソースの分散型ファイル同期ツール。中央サーバーを持たずP2Pで同期できる。
AdGuard Home ネットワーク全体に適用できる、DNSレベルの広告・トラッキングブロッカー。

1. ミニPCの購入

  • 概要: AWOWミニpc Win 11 pro (Amazonで購入)
  • スペック: Intel N100 CPU (4コア/4スレッド) / メモリ16GB / SSD 512GB
  • 価格: 27,299円 (購入時)

常時稼働させても電気代が気にならず、かつ安価で、ちょっとした開発サーバーとしては十分なスペックです。

メモリは16GBにしましたが、ぶっちゃけ今の時代、並列でエージェントを稼働させかつビルドを行うなどすれば一瞬で枯渇します。メモリはあればあるだけよかったなとちょっとだけ後悔。

こいつを自宅の「ルーター収納ケース」の上に置き、物理的なセッティングは完了しました。

ちなみに、最近のメモリ不足やOpenClawブームなどの影響で品切れや高騰が起きているようなので注意してください。私の購入したミニPCも既に品切れでした。


2. Proxmoxの導入

購入したミニPCにはWin 11 proが入っていたのですが、当然これは取っ払い、Linuxを入れる予定でした。
何を入れようかといろいろ調べた結果、 Proxmox VE に出会いました。

Proxmox VE (Proxmox Virtual Environment)とは

Proxmox VEは、Debian Linuxをベースとしたオープンソースの仮想化管理プラットフォームです。一言で言えば、「仮想マシン(VM)とコンテナを同じ土台で管理できる、無料のVMware ESXiやHyper-V」のようなものです。

Web UIからの直感的な操作が可能で、KVM(カーネルベース仮想マシン)による完全仮想化と、LXC (Linux Containers)によるコンテナ仮想化の両方をサポートしているのが最大の特徴です。VMwareなどの商用製品と比べると、コストパフォーマンスが圧倒的に高く、個人ユーザーでもエンタープライズ級のインフラを構築できます。

個人的には、WebUIがめちゃくちゃかっこいいのがポイントでした。

↓こんな感じで、各コンテナの状態や設定などをわかりやすいUIで見ることができます。
ミニPCのIPアドレス&ポート8006番のURLで、別デバイスからアクセスすることができます。

Proxmox

導入も非常に簡単で、ISOファイルをUSBに焼いてインストールするだけ。ものの数分で仮想化の土台が完成しました。

今思えば、ここが底なし沼への入り口でした。


3. LXCコンテナで環境を分割する

Proxmoxを導入した後は、用途に合わせてLXCコンテナを立ち上げました。VMではなくLXCを選んだのは、起動が圧倒的に速く、ミニPCの限られたリソース(メモリ16GB)を節約できるからです。

LXC(Linux Containers)とは

LXC(Linux Containers)は、ホストOSのカーネルを共有しながら、プロセス・ファイルシステム・ネットワークを分離して動かす「OSレベル仮想化」の仕組みです。VM(仮想マシン)より軽量で起動も速く、省リソースなサーバー運用と相性が良いのが特徴です。Dockerが「アプリ実行単位」の管理に強いのに対し、LXCは「小さなLinuxサーバー単位」で扱いやすい、という違いがあります。

現在の構成は以下のようになっています。ホスト含め、すべてのコンテナにTailscaleを入れています。(後述で説明)

コンテナID OS 役割 主な中身 ネットワーク
LXC 100 Ubuntu 24.04 メインの開発用サーバー Node.js, uv, Claude Codeなど諸々
Syncthingもこちら
DHCP
LXC 101 Devian 12.12 ネットワーク系全般 Tailscale (Exit Node × Subnet Router),
AdGuard Home
192.168.0.201/24 (Static)
LXC 102 Ubuntu 24.04 AI APIサーバー 自作AIエージェントの実行環境
systemdで常時稼働
192.168.0.202/24 (Static)

ちなみに、これらのコンテナは定期バックアップを取ることも可能です。


4. TailscaleとAdGuard Homeが作る最強のネットワーク

ホスト含む全コンテナと手元の端末(スマホ、タブレット、デスクトップPC)に Tailscale というVPNサービス導入しました。

Tailscaleとは

Tailscaleは、高速で安全な「WireGuard」という技術を利用した、設定不要のメッシュVPNサービスです。一言で言えば、「面倒なインフラ管理を全自動化し、あらゆるデバイスを安全なプライベート網で結ぶ魔法のツール」です。

従来のVPN接続といえば、ポート開放や動的DNS(DDNS)の設定、証明書の配置など、専門知識が必要な手順が数多くありました。Tailscaleはそのすべてを不要にします。インストールしてログインするだけで、NAT越えやファイアウォールの壁を超えて、すべてのデバイスがプライベートなネットワーク上で直接通信できるようになります。

個人的にも便利すぎて感動しましたね。「え、これでいいの?」ってなりました。

さらに今回、全通信の入り口となるLXC 101のコンテナを Subnet Router(サブネットルーター) および Exit Node(出口ノード) として設定しました。これらを設定することで、Tailscaleの利便性はさらに跳ね上がります。

Subnet Router(サブネットルーター)とは?

Tailscaleをインストールした端末(今回の場合はLXC 101)を「橋渡し役」にして、その端末が繋がっている自宅のローカルネットワーク全体にアクセスできるようにする機能です。

  • メリット:シームレスなローカル接続
    • 本来、Tailscaleで通信するには通信したい「すべての機器」にアプリをインストールする必要があります。しかし、この機能を使えば、Tailscaleを入れていない自宅のネットワーク機器(NASやIoT家電、他の仮想マシンなど)にもアクセス可能になります。
    • 外出先から192.168.0.1などをブラウザで叩くだけで、自宅ルーターの管理画面に直接アクセスして設定変更するといった離れ業も可能になります。

Exit Node(出口ノード)とは?

外出先にある端末のすべてのインターネット通信を、特定のTailscale端末(今回は自宅のLXC 101)経由で行うようにする機能です。インターネットへ向かう「出口」を自宅に設定するイメージです。一般的に思う「VPN」がこれになるのかなと思います。

  • メリット:どこからでも安全なインターネット通信
    • カフェやホテルのフリーWi-Fiは、通信内容を盗み見られるリスクがあります。しかし、Exit Nodeをオンにすれば、通信はすべて暗号化された状態で一旦「自宅」を通り、自宅の回線からインターネットへと抜けていきます。
    • これにより、どんなに怪しいWi-Fiに繋いでいても、自宅の安全な回線を使っているのと全く同じセキュリティレベルでインターネットを利用できます。
    • 海外からでも自宅の回線経由でインターネットに出るため、国内限定のWebサービスなども普段通りに利用できます。

AdGuard Homeとの連携による最高の副産物

ついでに、この通信の要となるCT 101には、DNSベースの広告ブロッカーである AdGuard Home を同居させました。

これにより、「TailscaleをONにしている間は、外出先のスマホでもWeb広告がすべて消え去る」という最高の副産物を得ました。(ちなみにExit NodeをONにしなくてもTailscaleがONなら広告ブロックは効きます。)

ルーターのポート開放などの危険で面倒な設定は一切不要です。TailscaleとAdGuard Homeの組み合わせにより、どこにいても安全で、快適で、シームレスな最強のプライベートネットワーク環境が完成しました。

5. Syncthingでシームレスなファイル同期

インフラが整ったところで、次はデータの問題です。
私は以前から、「Obsidian」というマークダウンでメモを管理するツールを使っていたのですが、これらをどうやってミニPC・各端末間で同期するかという悩みが生まれました。

ここで活躍したのが Syncthing です。

Syncthingとは

Syncthingは、オープンソースのピアツーピア(P2P)型ファイル同期ツールです。一言で言えば、「クラウドサービスを介さず、デバイス同士が直接通信してファイルを同期できるツール」です。

GoogleドライブやDropboxなどのクラウドストレージとは異なり、データは第三者のサーバーを経由しません。すべての通信はTLSで暗号化され、データは自分のデバイス内にのみ残ります。また、LAN内での直接転送を優先するため、自宅ネットワーク内での同期は非常に高速です。

運用は、**「ホストOS側に原本を置き、コンテナにはマウントポイント(mp0)で共有する」**というアプローチをとりました。

メインの開発サーバーである LXC 100でSyncthingを動かし、ホストOS側に用意した /srv/syncroot というディレクトリを、mp0(マウントポイント)でコンテナ内に共有します。

これには以下のようなメリットがあります。

  • ホストOS側で一元管理: 同期ルートを1つだけ(/srv/syncroot)用意すれば、複数のコンテナから参照できる
  • バックアップが簡単: ホストOS側のディレクトリをバックアップするだけで、すべての同期対象が保護される
  • 柔軟な拡張: 新しい同期対象を増やすとき、pct setコマンドでコンテナ設定を変更する必要がない

この構成により、

  • スマホで書き留めたObsidianのメモが即座にコンテナへ同期され、LXCコンテナ上のAIエージェントが常に最新のコンテキストを読み込める
  • コンテナ内のClaudeCodeに書かせたObsidianメモが、即座にスマホに同期される

という完璧なサイクルが完成しました。

今はこれだけですが、Syncthingの可能性はかなり大きいだろう思っており、さらなる面白い活用法を模索中です。


6. そして最高のインフラへ

インフラが完成したことで、どこにいても、手元の端末のスペックに依存せず、常に自宅の「最高の環境」にアクセスできるようになりました。インフラ構築の沼は深かったですが、それに見合うリターンを得られたと確信しています。具体的には、以下のような「最高の体験」が日常になっています。

どこからでもClaude Codeや開発環境がサクサク動く

  • お布団の中であれ、帰省先であれ、いつでもどこでもスマホやタブレットから自宅のミニPCにアクセスし、コーディングエージェントを回すことができます。(※ちなみにTermuxというAndroidアプリを使っています。ただUI周りでいろいろ気になるところが出てきてしまい、後日「自分専用のターミナルアプリ」を自作することになります)

フリーWi-Fiでも「自宅の安全圏」&広告なしの快適ブラウジング

  • カフェや帰省先のWi-Fiに繋ぐ際も、TailscaleのExit Nodeをオンにすれば通信がすべて自宅経由になり、セキュリティの不安がゼロになります。おまけにAdGuard Homeが効いているため、スマホでもPCでも煩わしいWeb広告が根こそぎ消え去るという無敵状態です。

ObsidianとAIエージェントのリアルタイムな連携

  • 出先でスマホからObsidianにふと思いついたアイデアをメモすると、Syncthingが瞬時に自宅サーバーへ同期してくれます。そのメモをコンテナ上のAIに読み込ませて処理し、出力結果がまたスマホへ同期されるという、シームレスな「自分だけのAI拡張頭脳」が手に入りました。

新しい環境を「秒」で構築・破壊できる自由

  • 「新しいツールや技術をちょっと試したい」と思った時、出先からでもProxmoxのカッコいいWeb UIを開き、数クリックで新しいLXCコンテナを立てられます。ホスト環境を汚すことなく、何度でもスクラップ&ビルドできる砂場(サンドボックス)環境があるのは想像以上に快適です。

おわりに:OpenClawブームと、Mac miniへの一つのアンサー

最初は「AIエージェントをいつでも動かしたい」という、ほんの些細な思いつきでした。

AIを活用しようとすると、必ず「コンテキスト(データ)の管理」と「実行環境の制限」という壁にぶつかります。それを自力で解決しようとした結果が、この過剰で最高な自宅インフラです。

現在界隈では「OpenClaw」などの何でもできるAIエージェントが大きな話題になっています。「これを動かすためにMac miniを買うべきか?」という議論も盛んです。

しかし私は、この年末の激闘のおかげで、「OpenClawをいつでもどこからでも叩ける、常時稼働のセキュアな専用サーバー」 を、すでに3万円で手に入れていました。

もちろん、ローカルでゴリゴリにLLM自体を推論させるならMac miniや強いGPUが必要でしょう。しかし、APIを叩きながらエージェントを自律稼働させる環境(ワークスペース)としては、この「ミニPC + Proxmox + Tailscale」というヘッドレスな構成は、コスパ最強の一つの最適解なのではないでしょうか。

付録1. 構築中に起きたいろんなトラブル

インフラ構築中、いろいろと沼にハマったのでそのうちのいくつかを共有します。このあたりはGeminiにしつこく教えてもらいながら解決しました笑

トラブル1. ネットワーク不通・名前解決エラー (DNS/Gateway)

  • 症状: CT 101で apt update や ping 8.8.8.8 が通らない。

  • 原因: ProxmoxのGUIで固定IPを設定した際、IPv4/CIDR の末尾のサブネットマスク(/24)を書き忘れていた。これにより、自分と同じネットワーク範囲が認識できず、ゲートウェイ(ルーター)へパケットが届かなかった。

  • 解決策: 一旦DHCPに設定してルーターから正しい情報を取得し疎通を確認。その後、改めて正しいCIDR表記 (192.168.0.201/24) で固定IP化。

トラブル2. LXCコンテナ内でTailscaleが起動しない(TUNデバイス不在)

  • 症状: コンテナにTailscaleをインストールし、tailscale up を実行したところ、「TUNデバイスが見つからない」という旨のエラーが出てVPNに接続できない。

  • 原因: ProxmoxのLXCはセキュリティの観点から、デフォルトでホストマシンのネットワークリソース(/dev/net/tun)への直接アクセスを遮断しているため。また、この設定はProxmoxのWeb GUI上からは変更できない。

  • 解決策:
    Proxmoxホスト本体のシェル(root@pve)から、該当コンテナの設定ファイル(/etc/pve/lxc/100.conf)をテキストエディタで直接編集する。

トラブル3. AdGuard Homeの管理画面にアクセスできない

  • 症状: 初期設定完了後、http://100.x.y.z:3000/ にアクセスできなくなった。

  • 原因: ポート3000番は初回セットアップウィザード専用。設定完了後は標準のHTTPポート(80番)に移行する仕様。

  • 解決策: URL末尾の :3000 を外し、IPアドレスのみでアクセスすることで解決。

付録2. 学んだことまとめ

もともとインフラめっちゃ詳しいって感じではなかったのですが、この環境構築体験を通して多くのインフラの概念を勉強することができました。GeminiとChatGPTにはお世話になりました。AIが無かったら絶対にできてないです。

  • OSレベルの仮想化アーキテクチャと、ホスト・コンテナ間におけるカーネル共有機構

  • コンテナ環境特有の権限分離と、ホストマシンのリソース割り当て制御

  • ホストOSとコンテナ間におけるBind Mountを用いたディレクトリ共有とパーミッション管理

  • デフォルトゲートウェイとルーティングテーブルの制御を利用した、トラフィックの出口(通信経路)の変更

  • CIDR記法に基づく正確なサブネットマスクの計算と、静的IPアドレスの設計・割り当て

  • DNSシンクホールの仕組みを利用した、ネットワークレベルでのドメイン名前解決の制御

  • systemdを用いたプロセス管理と、自作アプリケーションのデーモン化・自動起動制御

  • 中央サーバーに依存しない、暗号化P2P通信を利用したセキュアなデータ同期アーキテクチャ

  • CLI環境でのネットワークトラブルシューティングと、設定ファイル直接編集による低レイヤーな権限バイパス

113
94
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
113
94

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?