
【環境構築】OpenClaw を WSL2 + Discord + OpenAI API でゼロからセットアップするせtせt
- 【環境構築】OpenClaw を WSL2 + Discord + OpenAI API でゼロからセットアップする
- この記事でわかること
- 対象読者
- 前提条件
- 全体構成
- Step 1: Node.js 22 のインストール(Volta 経由)
- Step 2: OpenClaw のインストール
- Step 3: Volta シムの問題を修正する
- Step 4: 初期ウィザードの実行
- Step 5: OpenAI API 認証の設定
- Step 6: Discord Bot の作成と設定
- Step 7: systemd サービスへの環境変数追加
- Step 8: Discord プラグインの有効化とチャンネル追加
- Step 9: ゲートウェイを systemd サービスとして起動
- Step 10: ユーザーペアリングの承認
- Step 11: groupPolicy の設定(サーバー発言を許可)
- Step 12: ワークスペースディレクトリの設定
- Step 13: スキルの追加
- トラブルシューティング
- まとめ
- 参考リンク
【環境構築】OpenClaw を WSL2 + Discord + OpenAI API でゼロからセットアップする
この記事でわかること
-
OpenClaw を WSL2 環境にゼロからインストールする方法
-
Volta でのバージョン管理とシムの問題の対処法
-
OpenAI API を認証プロバイダーとして設定する方法
-
Discord Bot を作成して OpenClaw に連携する方法
-
systemd サービスとして常時稼働させる方法
-
カスタムスキルを作成・追加する方法
対象読者
-
セルフホスト型 AI アシスタントを構築したい人
-
Discord を AI エージェントのインターフェースとして使いたい人
-
WSL2 (Ubuntu) 上での Node.js 開発環境に慣れている人
前提条件
| 項目 | バージョン/条件 |
|---|---|
| OS | WSL2 (Ubuntu 22.04 など) |
| Node.js | 22 以上(22.12.0 以上推奨) |
| npm | 10.x |
| Volta | インストール済み |
| OpenAI API キー | sk-proj-… 形式 |
| Discord アカウント | Bot 作成権限あり |
全体構成
WSL2 (Linux)
├── openclaw (Node.js プロセス / systemd サービス)
│ ├── gateway (Discord ↔ Agent 間の仲介)
│ └── agent/main (OpenAI GPT-4o で動作するエージェント)
├── ~/.openclaw/ (設定・セッションデータ)
│ ├── openclaw.json (メイン設定)
│ ├── auth-profiles.json (API キー)
│ └── agents/main/ (エージェント設定)
└── ~/private/openclaw-playground/ (ワークスペース)
├── AGENTS.md, SOUL.md, USER.md ... (エージェント人格ファイル)
└── skills/ (カスタムスキル)
Discord
└── Bot (トークンで接続) ← → gateway
Step 1: Node.js 22 のインストール(Volta 経由)
# Node.js 22 最新版をインストール
volta install node@22
# npm も合わせてアップデート
volta install npm@10
# バージョン確認
node --version # v22.x.x であること
npm --version # 10.x.x であること
ワークスペースで Node 22 を固定するために package.json を作成します。
mkdir -p ~/private/openclaw-playground
cd ~/private/openclaw-playground
// package.json
{
"name": "openclaw-playground",
"private": true,
"volta": {
"node": "22.22.0"
}
}
Step 2: OpenClaw のインストール
npm install -g openclaw
# インストール確認
openclaw --version
Step 3: Volta シムの問題を修正する
Volta のシムが Node 22 ではなく Node 20 を参照してしまう場合があります。以下のラッパースクリプトを作成して回避します。
# Node 22 のパスを確認
ls ~/.volta/tools/image/node/
# → 22.22.0 が存在すること
# ワークスペースにラッパースクリプトを作成
cat > ~/private/openclaw-playground/openclaw << 'EOF'
#!/bin/bash
exec ~/.volta/tools/image/node/22.22.0/bin/node \
~/.volta/tools/image/node/22.22.0/bin/openclaw "$@"
EOF
chmod +x ~/private/openclaw-playground/openclaw
以降の openclaw コマンドはこのラッパースクリプト経由で実行します。
cd ~/private/openclaw-playground
./openclaw --version # Node 22 で動作することを確認
package.json を読んで使用する Node バージョンを決定しますが、グローバルインストールの shim がシステムの Node を参照してしまうことがあります。Step 4: 初期ウィザードの実行
./openclaw wizard
ウィザードで以下を選択します。
| 質問 | 選択 |
|---|---|
| Gateway mode | local(ローカル起動) |
| AI provider | OpenAI |
| Messaging channel | Discord |
Step 5: OpenAI API 認証の設定
ウィザードの認証設定は TTY が必要で、パイプ経由では動きません。直接ファイルを書きます。
# auth-profiles.json を作成
cat > ~/.openclaw/auth-profiles.json << 'EOF'
{
"profiles": {
"openai:manual": {
"provider": "openai",
"id": "openai:manual",
"token": "sk-proj-YOUR_OPENAI_API_KEY"
}
}
}
EOF
# エージェント用にもコピー
mkdir -p ~/.openclaw/agents/main/agent/
cp ~/.openclaw/auth-profiles.json ~/.openclaw/agents/main/agent/auth-profiles.json
Step 6: Discord Bot の作成と設定
6-1. Discord Developer Portal でボットを作成
-
Discord Developer Portal にアクセス
-
「New Application」→ 名前を入力して作成
-
左メニューの「Bot」→「Add Bot」
-
「Token」をコピー(後で使用)
-
「Privileged Gateway Intents」で以下を ON にする:
-
MESSAGE CONTENT INTENT
-
SERVER MEMBERS INTENT(任意)
6-2. ボットをサーバーに招待
-
左メニューの「OAuth2」→「URL Generator」
-
Scopes:
botにチェック -
Bot Permissions:
Send Messages,Read Message History,Add Reactionsにチェック -
生成された URL をブラウザで開き、サーバーに招待
Step 7: systemd サービスへの環境変数追加
OpenClaw は systemd サービスとして動作するため、API キーを環境変数として渡します。
# サービスファイルを編集
nano ~/.config/systemd/user/openclaw-gateway.service
[Service] セクションに以下を追加します。
Environment="OPENAI_API_KEY=sk-proj-YOUR_OPENAI_API_KEY"
Environment="NOTION_API_TOKEN=ntn_YOUR_NOTION_TOKEN" # Notion スキルを使う場合
Step 8: Discord プラグインの有効化とチャンネル追加
# Discord プラグインを有効化(先にこれをやること!)
./openclaw plugins enable discord
# Discord チャンネルを追加
./openclaw channels add --channel discord
# → Bot Token の入力を求められる。Step 6 でコピーしたトークンを貼り付ける
OpenClaw の設定ファイルに Discord 設定が追加されたことを確認します。
cat ~/.openclaw/openclaw.json | grep -A5 "discord"
Step 9: ゲートウェイを systemd サービスとして起動
# systemd サービスをインストール
./openclaw gateway install
# サービスを起動
systemctl --user daemon-reload
systemctl --user start openclaw-gateway
systemctl --user enable openclaw-gateway # 自動起動を有効化
# 起動確認
systemctl --user status openclaw-gateway
ログを確認するには:
journalctl --user -u openclaw-gateway -f
Step 10: ユーザーペアリングの承認
Discord でボットに DM を送ると、初回はペアリングコードが返ってきます。
OpenClaw: access not configured. Use the pairing code below to pair this account:
XXXXXXXX
このコードを使って承認します。
./openclaw pairing approve discord XXXXXXXX
ゲートウェイを再起動します。
systemctl --user restart openclaw-gateway
再度 DM を送ると、今度は正常に返答が来るはずです。
Step 11: groupPolicy の設定(サーバー発言を許可)
デフォルトでは DM のみ反応し、サーバーのチャンネル発言は無視されます。サーバーでも使えるようにするには:
./openclaw config set channels.discord.groupPolicy open
allowlist のまま放置すると: Guild(サーバー)からのメッセージが完全に無視されます。サーバーで使う場合は必ず open に変更してください。設定を反映するためにゲートウェイを再起動します。
systemctl --user restart openclaw-gateway
Step 12: ワークスペースディレクトリの設定
エージェントが作業するディレクトリを設定します。
./openclaw config set agents.defaults.workspace /home/user/private/openclaw-playground
これで、ボットが ls や pwd などを実行したときに ~/private/openclaw-playground をルートとして動作します。
ワークスペースには以下のファイルが自動配置されます。
| ファイル | 役割 |
|---|---|
| AGENTS.md | エージェントの行動ルール |
| SOUL.md | エージェントの人格・価値観 |
| USER.md | ユーザー情報(手動で更新) |
| TOOLS.md | ツール・デバイス情報 |
| IDENTITY.md | エージェントの自己認識 |
| MEMORY.md | 長期記憶(メインセッションのみ読み込み) |
Step 13: スキルの追加
カスタムスキルはワークスペースの skills/ ディレクトリに配置します。
スキルの構造
skills/
└── my-skill/
├── SKILL.md # 必須: 発動条件と手順
└── references/ # 任意: 詳細リファレンス
└── details.md
SKILL.md のフォーマット
---
name: my-skill
description: このスキルが何をするか、いつ使うかを明確に書く。「〇〇して」と言われたら使用する。
---
# スキル名
## 手順
1. ステップ1
2. ステップ2
...
スキルの確認
./openclaw skills list
# → ✓ ready で自分のスキルが表示されれば成功
スキルのソースが openclaw-workspace になっていれば、ワークスペースから正しく読み込まれています。
トラブルシューティング
Bot が何も返答しない(サーバーで)
原因: groupPolicy が allowlist になっている
./openclaw config set channels.discord.groupPolicy open
systemctl --user restart openclaw-gateway
openclaw: command not found または Node バージョンエラー
原因: Volta シムが Node 20 を参照している
# ラッパースクリプト経由で実行
cd ~/private/openclaw-playground
./openclaw --version
Bot に DM すると「access not configured」が返ってくる
原因: ユーザーペアリングが未完了
./openclaw pairing approve discord <コード>
systemctl --user restart openclaw-gateway
OpenAI API エラー(401 Unauthorized)
原因: API キーが systemd サービスに渡されていない
# サービスファイルを確認
grep OPENAI ~/.config/systemd/user/openclaw-gateway.service
# 追加されていない場合は編集して再起動
systemctl --user daemon-reload
systemctl --user restart openclaw-gateway
ボットを追加したのにサーバーに表示されない
原因: Bot の Intents が有効になっていない
Discord Developer Portal → Bot → Privileged Gateway Intents → MESSAGE CONTENT INTENT を ON にして、ゲートウェイを再起動。
まとめ
-
OpenClaw は Node.js 22 以上が必須。Volta でバージョン管理する場合はシム問題に注意
-
認証は
auth-profiles.jsonを直接作成するのが確実 -
systemd サービスに
OPENAI_API_KEYを環境変数として渡すのを忘れずに -
サーバーで使う場合は
groupPolicy: openに設定する -
カスタムスキルは
workspace/skills/スキル名/SKILL.mdに配置するだけで自動認識される -
Discord で「記事化して」などと話しかけると、対応するスキルが自動的に発動する
参考リンク
-
OpenClaw 公式ドキュメント
-
OpenClaw GitHub
-
Discord Developer Portal
-
OpenAI API Keys
-
Volta - JavaScript Tool Manager
最新記事
- 【設定・環境構築】OpenNext でNext.js SSGサイトをCloudflare Workersにデプロイする完全ガイド
2026/3/19
- 【実装】Notion calloutブロックをNext.jsでカラフルなUIコンポーネントとして表示する
2026/3/19
- 【トラブルシューティング】Cloudflare Pages → Workers 移行で遭遇したEdge Runtime問題集
2026/3/19
- 【実践】Next.js 13→16メジャーアップグレードの全記録 — 破壊的変更と対応策
2026/3/19
- 【自動化】Gemini Imagen APIでブログのeyecatch画像を自動生成してR2にアップロードする
2026/3/19
- 【実装】Notion APIでブログシステムを構築する(Next.js 13 App Router × SDK v5)
2026/3/19
- 【移行ガイド】microCMSからNotion APIへブログCMSを完全移行する
2026/3/19
- 【トラブルシューティング】本番デプロイで遭遇した問題と解決策まとめ
2026/3/15
- 【環境構築】Next.js × Cloudflare Workers の本番環境を一から構築する
2026/3/15
- 【設定・環境構築】Neon → Prisma Postgres 移行とローカル開発環境の構築
2026/2/26


