ホーム チュートリアル カテゴリ Skills サイトについて
ZH EN JA KO
上級テクニック

OpenClawマルチユーザーとチーム利用管理チュートリアル

· 21 分で読了

はじめに

OpenClaw が個人利用にとどまらず、チーム全体にサービスを提供する必要がある場合、ユーザー管理、権限制御、リソース配分などを検討する必要があります。本記事では、OpenClaw を個人ツールからチームレベルの AI アシスタントプラットフォームにアップグレードする方法をご紹介します。

一、マルチユーザーアーキテクチャの概要

OpenClaw のマルチユーザーアーキテクチャは以下のコアコンセプトに基づいています:

┌──────────────────────────────────────────┐
│            OpenClaw Gateway              │
│                (:18789)                  │
├──────────────────────────────────────────┤
│           ユーザー管理モジュール             │
│  ┌──────┐  ┌──────┐  ┌──────┐           │
│  │Admin │  │User A│  │User B│  ...      │
│  │(管理) │  │(一般) │  │(一般) │           │
│  └──────┘  └──────┘  └──────┘           │
├──────────────────────────────────────────┤
│  共有スキルプール │ プライベートスキル │ モデルクォータ管理 │
├──────────────────────────────────────────┤
│         チャネル層(各ユーザー独立セッション)    │
│  WhatsApp │ Telegram │ Discord │ Slack   │
└──────────────────────────────────────────┘

二、マルチユーザーモードの有効化

2.1 基本設定

// ~/.config/openclaw/openclaw.json5
{
  "multiUser": {
    "enabled": true,
    // ユーザーデータの保存ディレクトリ
    "dataDir": "/var/lib/openclaw/users",
    // ユーザー認証方式
    "authMethod": "token",
    // デフォルトのユーザーロール
    "defaultRole": "user",
    // セルフ登録の許可
    "selfRegistration": false
  }
}

2.2 管理者アカウントの作成

# マルチユーザーモードの初期化
openclaw onboard --multi-user

# 管理者の作成
openclaw user create \
  --username admin \
  --role admin \
  --email [email protected]

# システムが API Token を生成します。大切に保管してください
# Token: oc_admin_a1b2c3d4e5f6...

2.3 一般ユーザーの追加

# 一般ユーザーの作成
openclaw user create \
  --username alice \
  --role user \
  --email [email protected]

# 全ユーザーの一覧表示
openclaw user list

出力例:

┌──────────┬─────────┬──────────────────────┬─────────┐
│ Username │ Role    │ Email                │ Status  │
├──────────┼─────────┼──────────────────────┼─────────┤
│ admin    │ admin   │ [email protected]    │ active  │
│ alice    │ user    │ [email protected]    │ active  │
│ bob      │ user    │ [email protected]      │ active  │
└──────────┴─────────┴──────────────────────┴─────────┘

三、ユーザー分離メカニズム

3.1 会話の分離

各ユーザーの会話履歴は完全に独立しており、相互に閲覧できません:

{
  "multiUser": {
    "isolation": {
      // 会話履歴の分離
      "conversations": true,
      // ユーザー設定の分離
      "preferences": true,
      // カスタムプロンプトの分離
      "systemPrompts": true
    }
  }
}

3.2 データ保存構造

/var/lib/openclaw/users/
├── admin/
│   ├── conversations/
│   ├── preferences.json
│   └── skills/           # プライベートスキル
├── alice/
│   ├── conversations/
│   ├── preferences.json
│   └── skills/
└── bob/
    ├── conversations/
    ├── preferences.json
    └── skills/

3.3 チャネルからユーザーへのマッピング

異なるチャネルのユーザーを OpenClaw の内部ユーザーにマッピングする必要があります:

{
  "multiUser": {
    "channelMapping": {
      "telegram": {
        // Telegram ユーザー ID -> OpenClaw ユーザー名
        "123456789": "alice",
        "987654321": "bob"
      },
      "whatsapp": {
        // WhatsApp 番号 -> OpenClaw ユーザー名
        "+8613800138000": "alice",
        "+8613900139000": "bob"
      },
      "discord": {
        // Discord ユーザー ID -> OpenClaw ユーザー名
        "1234567890": "alice"
      }
    },
    // 未マッピングユーザーの処理方式
    "unmappedUserPolicy": "create_auto"  // auto | reject | guest
  }
}

四、ロールと権限管理

4.1 組み込みロール

ロール 権限 適用シーン
admin すべての権限 システム管理者
manager ユーザー管理 + 設定 チームリーダー
user 通常利用 一般チームメンバー
guest 制限付き利用 一時ユーザー

4.2 権限の詳細一覧

{
  "roles": {
    "admin": {
      "permissions": [
        "user.create", "user.delete", "user.modify",
        "config.modify", "skill.manage",
        "model.all", "channel.manage",
        "stats.view", "logs.view"
      ]
    },
    "manager": {
      "permissions": [
        "user.create", "user.modify",
        "skill.manage", "model.all",
        "stats.view"
      ]
    },
    "user": {
      "permissions": [
        "chat.send", "chat.history",
        "skill.use", "model.allowed",
        "preference.modify"
      ]
    },
    "guest": {
      "permissions": [
        "chat.send"
      ],
      "restrictions": {
        "maxMessagesPerDay": 50,
        "maxConversationLength": 10
      }
    }
  }
}

4.3 カスタムロール

# カスタムロールの作成
openclaw role create developer \
  --permissions "chat.send,chat.history,skill.use,skill.create,model.all"

# ユーザーにロールを割り当て
openclaw user modify alice --role developer

五、モデルクォータ管理

5.1 ユーザー別のクォータ設定

{
  "quotas": {
    "default": {
      "dailyMessages": 200,
      "dailyTokens": 500000,
      "maxTokensPerMessage": 4096,
      "allowedModels": ["claude-sonnet-4-20250514", "gpt-4o-mini"]
    },
    "users": {
      "alice": {
        "dailyMessages": 500,
        "dailyTokens": 1000000,
        "allowedModels": ["claude-sonnet-4-20250514", "claude-opus-4-20250514", "gpt-4o"]
      },
      "bob": {
        "dailyMessages": 100,
        "dailyTokens": 200000,
        "allowedModels": ["claude-sonnet-4-20250514"]
      }
    }
  }
}

5.2 ロール別のクォータ設定

{
  "quotas": {
    "byRole": {
      "admin": {
        "dailyMessages": -1,     // -1 は無制限を表す
        "dailyTokens": -1,
        "allowedModels": ["*"]   // すべてのモデル
      },
      "user": {
        "dailyMessages": 200,
        "dailyTokens": 500000,
        "allowedModels": ["claude-sonnet-4-20250514", "gpt-4o-mini"]
      },
      "guest": {
        "dailyMessages": 20,
        "dailyTokens": 50000,
        "allowedModels": ["gpt-4o-mini"]
      }
    }
  }
}

5.3 クォータ使用状況の確認

# 全ユーザーのクォータ使用状況を表示
openclaw user stats

# 出力例:
# ┌──────────┬──────────┬──────────┬─────────────┐
# │ User     │ Messages │ Tokens   │ Quota Used  │
# ├──────────┼──────────┼──────────┼─────────────┤
# │ alice    │ 156/500  │ 342K/1M  │ 34.2%       │
# │ bob      │ 89/100   │ 178K/200K│ 89.0%       │
# └──────────┴──────────┴──────────┴─────────────┘

# 個別ユーザーの詳細な使用統計を表示
openclaw user stats alice --detail

5.4 クォータ超過時の処理

{
  "quotas": {
    "onExceeded": {
      // 超過時の返信メッセージ
      "message": "本日の使用枠を使い切りました。明日再度お試しください。より多くの枠が必要な場合は管理者にお問い合わせください。",
      // 管理者に通知するか
      "notifyAdmin": true,
      // より安価なモデルへのフォールバックを許可するか
      "fallbackToFreeModel": true,
      "fallbackModel": "gpt-4o-mini"
    }
  }
}

六、共有スキル vs プライベートスキル

6.1 スキルディレクトリ構造

~/.openclaw/
├── skills/                    # グローバル共有スキル
│   ├── translator.SKILL.md
│   ├── code-review.SKILL.md
│   └── meeting-notes.SKILL.md
└── users/
    ├── alice/
    │   └── skills/            # Alice のプライベートスキル
    │       └── my-custom.SKILL.md
    └── bob/
        └── skills/            # Bob のプライベートスキル
            └── data-analysis.SKILL.md

6.2 スキル権限の設定

{
  "skills": {
    "shared": {
      "path": "~/.openclaw/skills",
      // すべてのユーザーが利用可能
      "accessLevel": "all"
    },
    "private": {
      // 各ユーザーに独自のスキルディレクトリ
      "pathTemplate": "~/.openclaw/users/{{username}}/skills",
      "accessLevel": "owner"
    },
    // スキル管理権限
    "management": {
      "createShared": ["admin", "manager"],
      "createPrivate": ["admin", "manager", "user"],
      "deleteShared": ["admin"],
      "deletePrivate": ["admin", "owner"]
    }
  }
}

6.3 チーム共有スキルの例

<!-- ~/.openclaw/skills/team-qa.SKILL.md -->
# チーム Q&A アシスタント

あなたはチーム内部の Q&A アシスタントで、会社のポリシー、フロー、技術仕様に関する質問に回答する責任があります。

## ナレッジベース
- /data/company-docs/ ディレクトリ内のドキュメントを参照
- 最新バージョンのドキュメントを優先的に使用

## 回答規範
- 具体的なドキュメント名とセクションを引用
- 不確かな場合は明確にその旨を伝え、担当者への問い合わせを提案
- 機密情報はグループチャットで公開しない

七、利用統計分析

7.1 統計収集の設定

{
  "analytics": {
    "enabled": true,
    "storage": "sqlite",
    "dbPath": "/var/lib/openclaw/analytics.db",
    "retention": "90d",   // データ保持期間 90日
    "collect": {
      "messageCount": true,
      "tokenUsage": true,
      "modelUsage": true,
      "responseTime": true,
      "skillUsage": true,
      "channelUsage": true
    }
  }
}

7.2 統計レポートの閲覧

# 全体の使用状況概要を表示
openclaw dashboard

# 指定期間の統計を表示
openclaw stats --from 2026-04-01 --to 2026-04-08

# CSV レポートのエクスポート
openclaw stats --export csv --output /tmp/openclaw-stats.csv

7.3 API 経由での統計照会

# ユーザー使用量ランキングの取得
curl -s http://localhost:18789/api/v1/admin/stats/users \
  -H "Authorization: Bearer ADMIN_TOKEN" | jq .

# モデル使用統計の取得
curl -s http://localhost:18789/api/v1/admin/stats/models \
  -H "Authorization: Bearer ADMIN_TOKEN" | jq .

八、チームデプロイのベストプラクティス

8.1 デプロイチェックリスト

□ マルチユーザーモードを有効化し管理者を作成
□ 各チームメンバーのアカウントを作成しロールを割り当て
□ 適切な使用クォータを設定
□ チーム共有スキルを作成
□ チャネルからユーザーへのマッピングを設定
□ 使用統計と監視を設定
□ 利用規範を策定しチームに通知
□ 使用状況とクォータを定期的にレビュー

8.2 セキュリティに関する推奨事項

対策 重要度 説明
API Token の定期ローテーション 90日ごとに交換
監査ログの有効化 すべての管理操作を記録
最小権限の原則 必要な権限のみ付与
機密情報のフィルタリング AI による機密データの漏洩を防止
ユーザーリストの定期レビュー 退職者を速やかに削除
クォータアラート 80% を超えた時点で管理者に通知

8.3 キャパシティプランニング

チーム規模 推奨構成 月額予算の目安
5人以下 1コア 2G VPS $50-100
5-20人 2コア 4G VPS $100-300
20-50人 4コア 8G VPS $300-800
50人以上 クラスタデプロイ $800+

8.4 ユーザー管理コマンドクイックリファレンス

# ユーザーの作成
openclaw user create --username NAME --role ROLE --email EMAIL

# ユーザーロールの変更
openclaw user modify USERNAME --role NEW_ROLE

# ユーザーの無効化
openclaw user disable USERNAME

# ユーザーの有効化
openclaw user enable USERNAME

# ユーザーの削除
openclaw user delete USERNAME

# ユーザー Token のリセット
openclaw user reset-token USERNAME

# ユーザー詳細の表示
openclaw user info USERNAME

# ユーザーの一括インポート
openclaw user import --file users.csv

以上の設定により、OpenClaw を安全で効率的なチーム AI アシスタントプラットフォームに構築でき、すべてのメンバーが AI の強力な能力を享受しつつ、適切な管理と制御を維持できます。

OpenClawは無料のオープンソースAIアシスタント。WhatsApp、Telegram、Discordなど多数のプラットフォームに対応