つまずき(共有ノード)
- グローバルな既定パスへ複数プロジェクトが書き込み、キャッシュとスキル状態が汚染される。
- 単一ログしかなく、監査でプロジェクト境界を引けない。
- 広いスコープのトークンを共用し、流出時の影響面が全会社・全キューに広がる。
設定・ログの判断表
先に方針を決めてからディスクに落とします。
| 観点 | 設定サブツリー | ログ独立ボリューム | ログ同一巻のサブパス |
|---|---|---|---|
| 隔離の強さ | 高(パスで明確) | 高(quotaと境界) | 中(権限とローテ) |
| 運用負荷 | 低 | 中 | 低 |
| 向く場面 | 常に必須 | マルチテナント・課金 | 小さめチーム・コスト重視 |
手順1 ディレクトリとPOSIX権限
team_alpha / proj_ios を例に、プロジェクトと同名のグループを軸にします。
sudo dseditgroup -o create proj_ios 2>/dev/null || true
sudo mkdir -p /srv/openclaw/team_alpha/proj_ios/{config,logs}
sudo chown -R root:proj_ios /srv/openclaw/team_alpha/proj_ios
sudo chmod 0750 /srv/openclaw/team_alpha/proj_ios/config
sudo chmod 0770 /srv/openclaw/team_alpha/proj_ios/logs
チェック:namei -l /srv/openclaw/team_alpha/proj_ios/config で各段が drwxr-x--- かつグループ proj_ios であること。
手順2 設定ルートと状態ディレクトリの固定
LaunchAgentやshellラッパで、実行ユーザのホーム直下へ戻らないよう明示します(変数名は既存テンプレに合わせて調整可)。
export OPENCLAW_CONFIG_ROOT=/srv/openclaw/team_alpha/proj_ios/config
export OPENCLAW_STATE_DIR=/srv/openclaw/team_alpha/proj_ios/config/state
install -d -m 0750 -g proj_ios "$OPENCLAW_STATE_DIR"
テンプレ配布や秘密の注入は環境テンプレ記事に従い、本項は実行時のルートだけを固定する層です。
手順3 ログの切り方(サブパスか別ボリューム)
サブパスの典型:
export OPENCLAW_LOG_DIR=/srv/openclaw/team_alpha/proj_ios/logs
install -d -m 0770 -g proj_ios "$OPENCLAW_LOG_DIR"
# logrotate: プロジェクト別ファイル、保持14〜30日を目安
別ボリュームでは、マウント先を上記 logs にし、chgrp proj_ios したうえでストレージ帳票でボリューム単位のquotaを取ります。
手順4 最小権限トークン
用途ごとにトークンを分割し、通知送信用とビルド状態の参照にスコープを閉じます。ローテーション手順はチャネルアラートとトークンローテーションを流用できます。
sudo install -m 0440 -g proj_ios secrets/proj_ios/notify.token \
/srv/openclaw/team_alpha/proj_ios/config/secrets/notify.token
sudo stat -f "%Sp %g" /srv/openclaw/team_alpha/proj_ios/config/secrets/notify.token
手順5 チェックポイントと排错
リリース前後に以下を走らせ、失敗したら設定ルートと補助グループから戻します。
python3 - <<'PY'
import os
root = os.environ["OPENCLAW_CONFIG_ROOT"]
assert os.path.commonpath([root, "/Users"]) != "/Users", "home fallback"
PY
find "$OPENCLAW_LOG_DIR" -maxdepth 1 -type f -name '*.log' -ls
test -w "$OPENCLAW_LOG_DIR" && echo "log_dir_writable"
他プロジェクトのツリーにログが出る場合は OPENCLAW_LOG_DIR の継承を疑い、Permission denied ならプロセスの補助グループに proj_ios が入っているか確認します。
採用しやすい閾値
- 設定ツリーはディレクトリ 0750、秘密ファイル 0440。サービス用ユーザは自プロジェクトのグループだけに入れる。
- テキストログは 14〜30日保持、単一ファイル 約200MB超でローテーション。
- トークンはメッセージ送信と状態参照に必要なscopeのみ。リポジトリ設定系は既定で閉じる。
補足FAQ
問 CIと人手が同じノードのとき?
答 CI用に別サブツリーと読み取り中心のトークンを用意し、Runnerラベルとパス接頭辞を一致させ、config/state への書込を避けます。
問 ホームへのシンボリックリンクは?
答 非推奨。namei -l が複雑化し、監査上も実体が見えにくくなります。
次の一手
チェックポイントをリリース票に貼り、キューやフェイルオーバー記事と突き合わせてください。OpenClawの目次はOpenClaw 特集ページ。ホーム・ヘルプ・ブログ一覧はログイン不要で参照できます。