Raspberry Pi 4で作る!OpenClaw+Discord+Gemini Flashセットアップガイド
自分の覚えも兼ねたセットアップ手順です。
1. OSインストールとヘッドレス設定
1.1 Raspberry Pi OS Lite (64-bit) を選んだ理由
OpenClawは内部でブラウザエンジンを動かすため、OS側のリソース消費は最小限に抑えたいところ。そこで選んだのが「Raspberry Pi OS Lite (64-bit)」です。
- Lite版: デスクトップ環境(GUI)を入れないので、メモリ消費がぐっと減ります。空いたメモリはOpenClawのエージェント処理に
- 64-bit: 最近のNode.jsやDockerイメージは64-bit環境に最適化されていて、計算効率が向上します。
1.2 ヘッドレス・セットアップ(Raspberry Pi Imagerでカンタン)
モニターもキーボードも繋がない「ヘッドレス」で設定するのが、現代のラズパイ流。Raspberry Pi Imagerを使えば、書き込み時にいろんな設定を仕込めます。
- OSの選択: 「Raspberry Pi OS (other)」→「Raspberry Pi OS Lite (64-bit)」を選びます。
- 設定のカスタマイズ: 右下の歯車アイコンをクリックして、以下の項目を事前に入力します。
- ホスト名:
openclaw-pi.localなど、分かりやすい名前を。 - SSHを有効にする: 「パスワード認証」を選んでおけばOK。
- ユーザー名とパスワード: セキュリティのため、デフォルトは避けましょう。
- Wi-Fi設定: 接続するSSIDとパスワードを入力(有線LANを使う場合は不要)。
- ロケール: タイムゾーンを
Asia/Tokyo、キーボードレイアウトをjpに。
- ホスト名:
- 書き込み: SDカードに書き込んだら、ラズパイに差して電源オン。これで自動的にネットワークに繋がります。
初回起動までちょっと待って、ssh user@openclaw-pi.local またはipアドレスでログインできれば成功です。
2. 各種キーとBotの準備
OpenClawを動かす前に、脳(Gemini)と耳と口(Discord)の準備を済ませておきましょう。
2.1 Gemini APIキーの取得
OpenClawの頭脳となるGeminiを利用するためのAPIキーを取得します。
- Google AI Studio にアクセスします。
- Googleアカウントでログインします。
- 左上のメニューから「Get API key」をクリックします。
- 「Create API key」をクリックし、任意のプロジェクト名を付けます。
- 生成されたAPIキーをコピーして、安全な場所に控えておきます。このキーは後で使います。
2.2 Discord Botの作成とトークン取得
次に、Discord経由で指示を出すためのBotを準備します。
- Discord Developer Portal にアクセスします。
- 「New Application」をクリックし、適当な名前(例:
OpenClaw-Pi)を付けて作成します。 - 左メニューの「Bot」を選択し、以下の設定を行います。
- 「Reset Token」ボタンを押してトークンを発行し、必ずコピーして控えます(この画面を閉じると二度と表示されません)。
- 「Privileged Gateway Intents」の中の「MESSAGE CONTENT INTENT」をONにします。これがないとBotがメッセージ内容を読み取れません。
- 左メニューの「OAuth2」→「URL Generator」で以下を選択します。
- Scopes:
botにチェック - Bot Permissions:
Administrator(推奨)または最低限必要な権限(メッセージ読み取り・送信など)
- Scopes:
- 下の方に生成されたURLをブラウザで開き、自分のDiscordサーバーにBotを招待します。
2.3 チャンネルIDの取得
Botが反応する特定のチャンネルIDを控えます。
- Discordの左下、ユーザー設定(歯車アイコン)→「詳細設定」→「開発者モード」をONにします。
- Botを動かしたいテキストチャンネルを右クリックし、「チャンネルIDをコピー」を選択して控えます。
これで準備完了です。控えたもの: - ✅ Gemini APIキー - ✅ Discord Botトークン - ✅ Discord チャンネルID - ✅ (後で使う)Discord Developer Portal の「Application ID」
3. システム最適化(OSレベル)
SSHでログインしたら、まずはOSを最新にし、メモリ周りをチューニングします。
3.1 OSの最新化
sudo apt update && sudo apt upgrade -y
3.2 メモリ最適化(zRAMの導入)
なぜ必要か?
OpenClawを安定稼働させるにはメモリ管理が重要です。普通のスワップはSDカードに書き込むため遅く、カードの寿命も縮めます。そこでzRAMの出番です。zRAMはメモリの一部を圧縮してスワップ領域として使う仕組み。SDカードへのアクセスを激減させ、システム全体のレスポンスが向上します。
以下のコマンドで導入します:
# zram-tools のインストール sudo apt install zram-tools -y # 設定ファイルを推奨値で作成(lz4圧縮、メモリの50%を割り当て) echo -e "ALGO=lz4\nPERCENT=50\nPRIORITY=100" | sudo tee /etc/default/zramswap # サービスの有効化と起動(再起動後も自動起動します) sudo systemctl daemon-reload sudo systemctl enable zramswap.service sudo systemctl start zramswap.service
これで、物理メモリの半分が圧縮スワップとして使えるようになります。Raspberry Pi 4 2GBなら約1GBの圧縮スワップが確保され、体感できるレベルでサクサクに。
4. 実行環境の構築(Docker)
4.1 Dockerを使う理由(セキュリティ面の重要性)
OpenClawは外部のAIと連携し、時にはPC内のファイルにアクセスしたり、コマンドを実行したりします。もし悪意のあるスクリプトがOpenClaw経由で動いてしまったら…考えるだけでも怖いですよね。
Dockerには「隔離(アイソレーション)」という機能があります。Dockerコンテナの中で動くOpenClawは、まるで透明なケースに入っているようなもの。コンテナ内部で何か起きても、ホストOS本体や他のファイルには簡単にアクセスできません。
- コンテナが乗っ取られても、ホストOSは無事
- 実験的なプラグインを試すのも安心
- もし壊れてもコンテナごと削除して再構築すればOK
OpenClawを本格的に運用するなら、Dockerは「あったほうがいい」ではなく「必須」です。
4.2 Dockerインストール
公式スクリプトで一発インストールします。
# Dockerインストールスクリプトの実行 curl -sSL https://get.docker.com | sh # dockerグループの作成とユーザー追加(Docker操作権限) sudo groupadd docker || true sudo usermod -aG docker $USER # 設定反映のため、一度ログアウトするか再起動 # ここでは再起動せず、新しいグループを有効にするため以下のコマンドを実行 newgrp docker
注意: newgrp docker を実行すると、現在のシェルでグループが反映されます。もしくは一度ログアウト(exit)して再度SSH接続してください。
4.3 ディレクトリ構成と docker-compose.yml の作成
作業ディレクトリを作り、Docker Composeファイルを用意します。
mkdir -p ~/openclaw/data cd ~/openclaw nano docker-compose.yml
以下の内容をコピー&ペーストし、GEMINI_API_KEY を先ほど控えたものに書き換えます。
services: openclaw: image: ghcr.io/openclaw/openclaw:latest container_name: openclaw restart: always environment: - GEMINI_API_KEY=あなたのGeminiAPIキー - OPENCLAW_MODEL=google/gemini-2.0-flash-exp # 無料で使えるGemini Flash! # Node.jsのヒープメモリ上限を制限(Raspberry Pi 4 2GBは1024MB推奨) - NODE_OPTIONS=--max-old-space-size=1024 deploy: resources: limits: memory: 1536M volumes: - ./data:/home/node/.openclaw
ポイント:
- Raspberry Pi 4のメモリは2GBなので、余裕を持って制限をかけています。
- max-old-space-size=1024 でNode.jsのヒープを1GBに制限。
- memory: 1536M でコンテナ全体のメモリを1.5GBに制限(残りはOSや他プロセス用)。
保存は Ctrl+O、Enter、Ctrl+X で終了します。
5. OpenClawの起動とDiscord連携設定
5.1 初回起動
docker compose up -d
しばらく待って、docker ps でコンテナが Up になっていればOKです。
5.2 公式CLIによるDiscord設定(Configure)
ここが一番大事なポイント。環境変数で無理やり設定してはエラー地獄になりましたので、公式ツールを使うのが絶対に安全です。
docker exec -it openclaw npx openclaw configure
対話型ウィザードが始まるので、以下の順に進めます:
- Sections: 矢印キーで
Channelsを選び、Enter。 - Channel:
discordを選び、Enter。 - Settings: 以下の項目を順に設定します。
Enabled:Yesを選択。Token: 先ほど控えたDiscord Botトークンを入力。Application ID: Discord Developer Portal の「General Information」にある「Application ID」を入力。Channel IDs: 控えておいたチャンネルIDを入力。
- 設定後、
Continueで戻り、最後にSave and Exitを選択して終了します。
5.3 再起動して反映
docker compose restart openclaw
これで、Discordの指定チャンネルでBotに話しかけると、OpenClawが反応するようになります。
6. 診断と自己修復(Doctor)
もしDiscordでメッセージを送っても反応がない場合(401エラーやID解決失敗など)は、以下の診断コマンドを実行してください。
docker exec -it openclaw npx openclaw doctor --fix
権限の自動修正やトークンの有効性チェックを公式ロジックでやってくれるので、まずはこれを試すのが近道です。
7. 運用の教訓(厳守事項)
何度か試行錯誤した結果、以下のポイントを守ればRaspberry Pi 4 2GBでも安定稼働することが分かりました。 Raspberry Pi 3 1GBでもチャレンジしていますが、何かと重たいです。
- Lite版を貫く: GUIを入れないことで、OpenClawの処理能力を最大化。
- ヘッドレス運用: メンテナンスはSSHで完結。リソースをOpenClawに集中させる。
- 公式ツール優先:
GEMINI_API_KEY以外は必ずnpx openclaw configureで設定する(環境変数で無理やり書かない)。 - 一次ソースを確認: 設定の正解は
~/openclaw/data/openclaw.jsonの中身。これを見れば全て分かります。 - メモリ制限は適切に: Raspberry Pi 4 2GBなら
--max-old-space-size=1024がちょうどいい塩梅。 - Dockerの隔離を信じる: 何かあってもコンテナを破棄すればOK。この安心感が大事。
8. さあ、あなただけのAI秘書を育てよう
これでセットアップは完了です。あとはあなたの発想次第。
「毎朝7時に天気予報を教えて」 「週末の予定をまとめて送って」 「指定したキーワードのニュースが来たら、翻訳して通知して」
最初は簡単な指示から始めて、チャットで相談しながらできることを増やしていく。ひところよりも値上がりしたとはいえRaspberry Pi 4は1万円前後。Mac Miniの10分の1くらいのコストで、あなただけのAI秘書が手に入ります。
あなたも「大人の春の自由研究」に、AI秘書との新しい生活を始めてみませんか?
それでは、ローコスト&セキュアなAI秘書ライフを!