旧NISAを約9年間ガチホした結果がこちら
旧NISAを約9年間ガチホした結果がこちら

NanoClaw × ローカルLLM:導入からモデル切り替えまで完全ガイド
対象読者: AIエージェントに興味があり、ローカルLLMをプライベートに活用したい方
環境: Ubuntu サーバー(NanoClaw稼働)+ローカルネットワーク上のOllama
はじめに
NanoClaw は Claude(Anthropic)をベースにしたエージェントプラットフォームです。
今回は NanoClaw に Ollama(ローカルLLM)を接続し、Claude Sonnet / Opus、gemma4 など複数モデルをボタン一つで切り替える構成を構築しました。
完成する構成
┌─────────────────────────────────────────────────────┐
│ ユーザー │
└──────────────────────┬──────────────────────────────┘
│ メッセージ
▼
┌─────────────────────────────────────────────────────┐
│ NanoClaw プラットフォーム │
│ ┌───────────────────────────────────────────────┐ │
│ │ nclaw1(オーケストレーター) │ │
│ │ Claude Sonnet 4.6 │ │
│ │ │ │
│ │ ・会話・判断・ツール選択 │ │
│ │ ・メモリ / スケジューリング │ │
│ │ ・外部API・Web検索 │ │
│ └───────┬───────────────────────────────────────┘ │
└──────────┼──────────────────────────────────────────┘
│ MCP(ollama-mcp)
├──────────────────────────────────┐
▼ ▼
┌──────────────────────┐ ┌─────────────────────────────┐
│ NanoClaw サーバー │ │ ローカルネットワーク(LAN) │
│ (同一ホスト) │ │ 192.168.1.10:11434 │
│ ┌────────────────┐ │ │ ┌────────────┐ ┌─────────┐ │
│ │ gemma4:e2b │ │ │ │gemma4:e4b │ │gemma4 │ │
│ │ (5.1B) │ │ │ │ (8.0B) │ │:26b │ │
│ └────────────────┘ │ │ └────────────┘ └─────────┘ │
└──────────────────────┘ └─────────────────────────────┘
+ Claude(NanoClaw Pro サブスク)
├─ Sonnet 4.6(デフォルト)
└─ Opus(指定時のみ)
Step 1:ローカルネットワークのOllamaをNanaClawに接続
前提
- Ollama が LAN 上のマシン(例:
192.168.1.10:11434)で稼働中 - 以下のモデルをあらかじめ pull 済み
ollama pull gemma4:e2b
ollama pull gemma4:e4b
ollama pull gemma4:26b
NanoClaw へのMCPサーバー追加
NanoClaw のエージェント(Claude)に対して、以下の設定でOllama MCPサーバーを追加します。
| 項目 | 値 |
|---|---|
| 名前 | ollama |
| コマンド | pnpm dlx ollama-mcp |
| 環境変数 | OLLAMA_HOST=http://192.168.1.10:11434 |
| 追加環境変数 | NO_PROXY=192.168.1.10(プロキシバイパス用) |
ポイント: NanoClaw のコンテナには HTTP プロキシが設定されているため、ローカルアドレスを
NO_PROXYに追加する必要があります。
接続確認:
✅ gemma4:e2b / gemma4:e4b / gemma4:26b / gpt-oss:20b-cloud
Step 2:NanaClawサーバー自体にOllamaをインストール
NanoClaw が稼働している Ubuntu サーバーにも Ollama を入れ、軽量モデルを常駐させます。
インストール手順(SSH接続して実行)
# Ollama インストール
curl -fsSL https://ollama.com/install.sh | sh
# コンテナからアクセスできるよう全インターフェースにバインド
sudo mkdir -p /etc/systemd/system/ollama.service.d
sudo tee /etc/systemd/system/ollama.service.d/override.conf << EOF
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
EOF
# サービス再起動
sudo systemctl daemon-reload
sudo systemctl restart ollama
# モデル取得
ollama pull gemma4:e2b
# 確認
ollama list
NanoClaw への追加MCP接続
コンテナからホストへは host.docker.internal(172.17.0.1)でアクセスできます。
| 項目 | 値 |
|---|---|
| 名前 | ollama-host |
| コマンド | pnpm dlx ollama-mcp |
| 環境変数 | OLLAMA_HOST=http://172.17.0.1:11434 |
| 追加環境変数 | NO_PROXY=172.17.0.1 |
Step 3:モデルの切り替え方
方法①:自然言語で指定する
特別なコマンドは不要です。話しかける際にモデルを指定するだけ。
「
gemma4:e2bで今日の季語を教えて」
「gemma4:26bでこのコードをレビューして」
「Opusで詳細な分析をして」
(何も指定しない → Claude Sonnet がデフォルトで回答)
方法②:ボタンで選択する
「モデル選択して」と言うと、選択ボタンが表示されます。
┌─────────────────────────────┐
│ モデル選択 │
│ 使用するモデルを選んでください │
├─────────────────────────────┤
│ [ Claude Sonnet(デフォルト)] │
│ [ Claude Opus(高精度) ] │
│ [ gemma4:e2b(ローカル軽量) ] │
│ [ gemma4:e4b(LAN 中量) ] │
│ [ gemma4:26b(LAN 高品質) ] │
└─────────────────────────────┘
モデル使い分けの目安
| モデル | 場所 | 向いている用途 |
|---|---|---|
| Claude Sonnet | NanoClaw 内蔵 | デフォルト。複雑な推論・判断・コード |
| Claude Opus | NanoClaw 内蔵 | 最高精度が必要なとき(トークン消費大) |
| gemma4:e2b | NanoClaw サーバー | 軽量・高速・シンプルな質問 |
| gemma4:e4b | LAN(192.168.1.10) | 中程度の品質・プライベートデータ |
| gemma4:26b | LAN(192.168.1.10) | 高品質・詳細な回答 |
まとめ
| 機能 | 実現方法 |
|---|---|
| ローカルLLM接続 | ollama-mcp + MCP サーバー登録 |
| プロキシバイパス | NO_PROXY 環境変数 |
| モデル切り替え | 自然言語指定 or ボタン選択 |
| NanoClaw ホスト上のLLM | host.docker.internal 経由で接続 |
NanoClaw のオーケストレーター(Claude)が司令塔となり、ローカル・LAN・クラウドの複数モデルを状況に応じて使い分けることができます。プライバシー重視のタスクはローカルモデルへ、高精度が必要なときはClaudeへ、と柔軟な運用が可能です。
作成日:2026年5月10日
環境:NanoClaw / Claude Sonnet 4.6 / Ollama / gemma4 シリーズ
2026年4月末時点の評価額(円換算)
2026年3月末時点の評価額(円換算)
入金額
\50,000(クレジットカード)
出金額:無し
投資額
\25,000 野村 つみたて外国株投信 つみたてNISA
\25,000 楽天・全米株式インデックス・ファンド つみたてNISA
配当額:無し
2026年3月末時点の評価額(円換算)
2026年3月末時点の評価額(円換算)
入金額
\50,000(クレジットカード)
出金額:無し
投資額
\25,000 野村 つみたて外国株投信 つみたてNISA
\25,000 楽天・全米株式インデックス・ファンド つみたてNISA
配当額:無し
Raspberry Pi 4 + Claude Code + Discord でメモ蓄積システムを作る
はじめに
Claude Pro を契約したので、Claude Code を使って GitHub プライベートリポジトリにメモを蓄積する仕組みを作った。
Raspberry Pi 4 をバックエンドにすることで、外出先からスマホやPCのDiscordから「メモして」と話しかけるだけでGitHubに保存される環境が完成した。
システム構成

ポイントは Raspberry Pi から外向きに接続するだけで動くこと。ポート開放もVPNも不要。
必要なもの
- Raspberry Pi 4(常時稼働しているもの)
- Claude Pro アカウント
- GitHub アカウント
- Discord アカウント
手順
1. GitHub にプライベートリポジトリを作成
memo という名前でプライベートリポジトリを作成。READMEだけの状態でOK。
2. Raspberry Pi に Claude Code をインストール
curl -fsSL https://claude.ai/install.sh | bash
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
claude --version
3. Claude Code にログイン
claude
ブラウザで認証コードを取得して貼り付ける。Claude Pro アカウントでログインする。
4. Personal Access Token を作成
GitHub にHTTPSでアクセスするためのトークンを作成。
- GitHub → Settings → Developer settings → Personal access tokens → Fine-grained tokens
- Repository access: Only select repositories →
memoを選択 - Permissions → Repository permissions → Contents: Read and write
- Generate token してトークンをコピー(一度しか表示されないので注意)
5. リポジトリをクローン
git clone https://github.com/<username>/memo.git ~/memo
cd ~/memo
ユーザー名とパスワードを聞かれたら、パスワードに先ほどのトークンを貼り付ける。
6. リポジトリ構造を整備
memo/
├── CLAUDE.md # Claudeへの指示書
├── memos/ # 個別メモ(YYYY-MM/YYYY-MM-DD-slug.md)
└── summaries/ # サマリー
CLAUDE.md にメモの保存ルール(ファイル名規則、front matter、コミットメッセージ形式など)を書いておく。
7. Bun をインストール(Channelsプラグインに必要)
curl -fsSL https://bun.sh/install | bash
source ~/.bashrc
8. SSH known_hosts の準備
ssh-keyscan github.com >> ~/.ssh/known_hosts
これがないとプラグインのマーケットプレース追加でエラーになる。
9. Discord プラグインをインストール
Claude Code 内で:
/plugin marketplace add anthropics/claude-plugins-official
/plugin install discord@claude-plugins-official
/reload-plugins
10. Discord Bot を作成
- https://discord.com/developers/applications を開く
- New Application → 名前をつける(例:
MemoBot) - Bot セクション → Reset Token → トークンをコピー
- Privileged Gateway Intents で Message Content Intent を ON
11. Discord サーバーを作成しBotを招待
- + ボタン → サーバー作成
- Developer Portal → 作成したアプリ → OAuth2 → URL Generator
- Scopes:
bot、Bot Permissions:Send Messages - 生成URLをブラウザで開いて自分のサーバーに招待
12. Bot トークンを Claude Code に設定
Claude Code 内で:
/discord:configure <Botトークン>
13. Channels モードで Claude Code を再起動
claude --channels plugin:discord@claude-plugins-official
--channels フラグつきで起動しないと Discord 連携が動かない。
14. ペアリング
Discord で自分のサーバーのメンバーリストから Bot にDMを送る → ペアリングコードが返ってくる。
Claude Code 内で:
/discord:access pair <コード>
15. allowlist モードに固定
/discord:access policy allowlist
これで毎回ペアリングを求められなくなる。
16. systemd サービスとして自動起動設定
ラズパイ再起動後も自動で起動するよう /etc/systemd/system/claude-memo.service を作成する。tmux を使って疑似ターミナルを提供するのがポイント。
[Unit]
Description=Claude Code Discord Channels
After=network-online.target
Wants=network-online.target
[Service]
Type=forking
User=naka
WorkingDirectory=/home/naka/memo
ExecStart=/usr/bin/tmux new-session -d -s claude-memo '/home/naka/.local/bin/claude --channels plugin:discord@claude-plugins-official'
ExecStop=/usr/bin/tmux kill-session -t claude-memo
Restart=on-failure
RestartSec=10
Environment=PATH=/home/naka/.bun/bin:/home/naka/.local/bin:/usr/local/bin:/usr/bin:/bin
Environment=HOME=/home/naka
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable claude-memo
sudo systemctl start claude-memo
動作確認
Discord Bot に DM で「今までのメモをリストして」と送ると、ラズパイの Claude Code が動いてGitHubのメモを読み出して返してくれる。
メモの追加・削除・サマリー作成もすべてDiscord経由でできる。
音声メモ(Whisper連携)
Discord の音声メッセージをそのまま送ると、Whisper が自動で文字起こししてメモに保存できる。
Whisper のインストール
python3 -m venv ~/.venv/whisper
~/.venv/whisper/bin/pip install openai-whisper
Raspberry Pi 4 は CPU で動かすため、tiny または base モデルが現実的。
使い方
Discord で Bot に音声メッセージを送るだけ。Claude Code が自動的に:
- 音声ファイルを受信
- Whisper で日本語文字起こし
- テキストとしてメモに保存・GitHub にコミット
Discord Web ブラウザで使える利点
Discord はWebブラウザだけで音声メッセージの送受信が完結する。アプリのインストールに制限がある職場のPCや共用端末からでも、ブラウザさえあれば音声メモが取れるのが大きなメリット。
トラブルシューティング
/discord:start が Unknown command
/discord:start というコマンドはない。/discord:configure <token> でトークンを設定し、claude --channels plugin:discord@claude-plugins-official で起動するのが正しい流れ。
返信が "channel is not allowlisted" でブロックされる
Issue #1091 の既知バグ。Bash許可などの permission prompt の後、DMチャンネルのキャッシュが再生成される際に recipientId が失われるのが原因。
回避策:
/discord:access
を実行すると即復帰する。公式の修正待ち。
systemd サービスが起動しない(stdin エラー)
Claude Code は TTY(ターミナル)が必要なため、直接 systemd から起動するとエラーになる。tmux を使って疑似ターミナルを用意することで解決する。
SSH host key verification failed
ssh-keyscan github.com >> ~/.ssh/known_hosts
良かったポイント
| ポイント | 内容 |
|---|---|
| ポート開放不要 | ラズパイからのアウトバウンド接続のみ。自宅NAT環境のままでOK |
| API課金不要 | Claude Pro 月額のままで使える |
| デバイスを問わない | スマホ・タブレット・PCのDiscordからどこでもメモできる |
| GitHub に自動保存 | すべてのメモが履歴付きで残る |
| 後からまとめられる | 「今月のメモをまとめて」で月次サマリーが自動生成 |
| 音声メモ対応 | Discord の音声メッセージを Whisper で自動文字起こしして保存 |
| ブラウザのみで完結 | Discord Web 版で動くのでアプリインストール不要。制限のある環境でも使える |
改善したいこと
- iPad の手書きや写真もメモとして取り込めるようにしたい
- 月末に自動でサマリーを生成する仕組み
- タグでの絞り込み検索の改善
まとめ
Claude Pro を契約しているなら、ラズパイ + Discord でいつでもどこでもメモが取れる環境が数千円のハードウェア(既存のもの)と無料サービスだけで作れる。
特に Channels がアウトバウンド接続だけで動くので、家庭用ネットワークのままセキュリティを犠牲にせず外部からアクセスできる。
2026年2月末時点の評価額(円換算)
2026年2月末時点の評価額(円換算)
入金額
\50,000(クレジットカード)
出金額:無し
投資額
\25,000 野村 つみたて外国株投信 つみたてNISA
\25,000 楽天・全米株式インデックス・ファンド つみたてNISA
配当額:無し
2026年1月末時点の評価額(円換算)
2026年1月末時点の評価額(円換算)
入金額
\50,000(クレジットカード)
出金額:無し
投資額
\25,000 野村 つみたて外国株投信 つみたてNISA
\25,000 楽天・全米株式インデックス・ファンド つみたてNISA
配当額:無し