川島商店街のランダムウォーカー

リーマンショック以前個別株で痛手を負ったアラフォーがインデックス投資を行う。備忘録的なブログ

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.internal172.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月末時点の評価額(円換算)

ポートフォリオ 4月末
VOO ¥12,453,254
HDV→VTIにスイッチ ¥5,452,883
大和-iFree NYダウ・インデックス(2024年1月売却) -
ニッセイ外国株式(旧NISA) ¥4,829,225
大和-iFreeS&P500→東電にスイッチ(2024年1月売却) -
野村つみたて外国株式(新旧つみたてNISA合計) ¥4,822,213
楽天全米株式(VTI)(新旧つみたてNISA合計) ¥3,815,367
eMAXIS Slim 先進国株式インデックス(NISA成長投資枠) ¥9,566,621
eMAXIS Slim 全世界株式(除く日本)(2024年1月売却) -
SBI V S&P500インデックスF(2024年1月30万円売却) -
無リスク ¥240,560
合計 ¥41,180,123
前月比 ¥3,159,801
   
iDeco Slim 先進国株式 ¥2,735,984

 

 

入金額

\50,000(クレジットカード)

出金額:無し

投資額

\25,000 野村 つみたて外国株投信 つみたてNISA

\25,000 楽天・全米株式インデックス・ファンド つみたてNISA

配当額:無し

 

2026年3月末時点の評価額(円換算)

2026年3月末時点の評価額(円換算)

ポートフォリオ 3月末
VOO ¥11,533,269
HDV→VTIにスイッチ ¥5,057,201
大和-iFree NYダウ・インデックス(2024年1月売却)
ニッセイ外国株式(旧NISA) ¥4,466,115
大和-iFreeS&P500→東電にスイッチ(2024年1月売却)
野村つみたて外国株式(新旧つみたてNISA合計) ¥4,415,305
楽天全米株式(VTI)(新旧つみたてNISA合計) ¥3,459,369
eMAXIS Slim 先進国株式インデックス(NISA成長投資枠) ¥8,848,012
eMAXIS Slim 全世界株式(除く日本)(2024年1月売却)
SBI V S&P500インデックスF(2024年1月30万円売却)
無リスク ¥241,051
合計 ¥38,020,322
前月比 -¥1,035,584
   
iDeco Slim 先進国株式 ¥2,441,420

 

 

入金額

\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でアクセスするためのトークンを作成。

  1. GitHub → Settings → Developer settings → Personal access tokens → Fine-grained tokens
  2. Repository access: Only select repositories → memo を選択
  3. Permissions → Repository permissions → Contents: Read and write
  4. 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 を作成

  1. https://discord.com/developers/applications を開く
  2. New Application → 名前をつける(例:MemoBot
  3. Bot セクション → Reset Token → トークンをコピー
  4. Privileged Gateway IntentsMessage Content Intent を ON

11. Discord サーバーを作成しBotを招待

  1. ボタン → サーバー作成
  2. Developer Portal → 作成したアプリ → OAuth2 → URL Generator
  3. Scopes: bot、Bot Permissions: Send Messages
  4. 生成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 が自動的に:

  1. 音声ファイルを受信
  2. Whisper で日本語文字起こし
  3. テキストとしてメモに保存・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月末時点の評価額(円換算)

ポートフォリオ 2月末
VOO ¥11,798,681
HDV→VTIにスイッチ ¥5,172,807
大和-iFree NYダウ・インデックス(2024年1月売却) ¥0
ニッセイ外国株式(旧NISA) ¥4,619,341
大和-iFreeS&P500→東電にスイッチ(2024年1月売却) ¥0
野村つみたて外国株式(新旧つみたてNISA合計) ¥4,568,073
楽天全米株式(VTI)(新旧つみたてNISA合計) ¥3,541,442
eMAXIS Slim 先進国株式インデックス(NISA成長投資枠) ¥9,151,420
eMAXIS Slim 全世界株式(除く日本)(2024年1月売却) ¥0
SBI V S&P500インデックスF(2024年1月30万円売却) ¥0
無リスク ¥204,142
合計 ¥39,055,906
前月比 ¥449,743
   
iDeco Slim 先進国株式 ¥2,572,712

 

入金額

\50,000(クレジットカード)

出金額:無し

投資額

\25,000 野村 つみたて外国株投信 つみたてNISA

\25,000 楽天・全米株式インデックス・ファンド つみたてNISA

配当額:無し

 

2026年1月末時点の評価額(円換算)

2026年1月末時点の評価額(円換算)

ポートフォリオ 1月末
VOO ¥11,755,818
HDV→VTIにスイッチ ¥5,139,214
大和-iFree NYダウ・インデックス(2024年1月売却)  
ニッセイ外国株式(旧NISA) ¥4,551,316
大和-iFreeS&P500→東電にスイッチ(2024年1月売却)  
野村つみたて外国株式(新旧つみたてNISA合計) ¥4,453,186
楽天全米株式(VTI)(新旧つみたてNISA合計) ¥3,485,939
eMAXIS Slim 先進国株式インデックス(NISA成長投資枠) ¥9,016,596
eMAXIS Slim 全世界株式(除く日本)(2024年1月売却) ¥0
SBI V S&P500インデックスF(2024年1月30万円売却) ¥0
無リスク ¥204,094
合計 ¥38,606,163
前月比 -¥90,835
   
iDeco Slim 先進国株式 ¥2,514,654

 

入金額

\50,000(クレジットカード)

出金額:無し

投資額

\25,000 野村 つみたて外国株投信 つみたてNISA

\25,000 楽天・全米株式インデックス・ファンド つみたてNISA

配当額:無し