OpenClawのインストール|Docker|Windows

Personal AI Assistant の OpenClawについて話題にはなっているが、暴走の危険性が大きいため、利用するのを控えていた。 最低限の安全策を実施した上で利用する方法が出てきたので、Docker on Windows の環境で構築して利用してみました。 この記事ではインストール及びDockerfile等の整備までを記載します。

OpenCraw の公式手順は以下です。 https://docs.openclaw.ai/start/getting-started

1. 環境構築

1.1. 前提条件

  • Windows11

1.2. Docker / コンテナのインストール

  • 以下サイトからインストーラをダウンロードしてインストールします https://docs.docker.com/desktop/setup/install/windows-install/

  • Microsof Store から [docker desktop] と検索してインストールしても構いません。 Microsoft Store

  • 以下からdocker で利用する node のイメージファイルを入手します

    • 以下のURLにアクセスし、Recent Tags から[slim] を選択し、[Run in Docker Desktop] のボタンからイメージをダウンロードできます https://hub.docker.com/_/node
    • コンテナの名前を入力する画面では、[Cancel]ボタンをクリックします docker image node

1.3. docker の起動

  • powershell を起動し、以下のコマンドを実行(ポート転送付きでコンテナを作成)
> docker run -it -p 15789:15789 -p 15791:15791 node:slim node

 ※この起動シェルのコマンドが中止されると、コンテナが終了してしまいます。   画面はこのままにしておき、 別のPowershellからコンテナに接続します。

  • 以下のコマンドを実行し、コンテナのインスタンス名を調べます
> docker ps 
  • 以下のコマンドを実行し、インスタンスに root ユーザとしてログインします
> docker exec -it -u root <docker container name> /bin/bash 

1.4. openclaw のインストール

  • 必要パッケージのインストール
# apt-get update && apt-get install -y curl socat  iproute2 clamav clamav-daemon cron systemd vim 
  • openclaw のインストール & 起動
# npm install -g openclaw@latest 
# openclaw gateway 
  • ポート転送設定(Linux側)
# socat TCP-LISTEN:15789,fork TCP:127.0.0.1:18789 & 
# socat TCP-LISTEN:15791,fork TCP:127.0.0.1:18791 & 
  • ポート転送設定の確認
    • ポート転送設定が反映されていることを確認
# ss –a 
~~~~
tcp               LISTEN             0                  5                                    0.0.0.0:15789                                0.0.0.0:* 
tcp               LISTEN             0                  5                                    0.0.0.0:15791                                0.0.0.0:* 

1.5. OpenClaw のセットアップ

  • Windows host側のPowershellから以下コマンドを実行し、node ユーザでログイン、セットアップします。
> docker exec -it -u node festive_hamilton /bin/bash 
  • 初期設定を実行します。表示されるガイダンスに沿ってAPI Keyなどの入力を実施します。ChatGPTへのログインでも利用できます。
$ openclaw onboard --install-daemon 
  • 2回目以降でコンフィグを編集する場合は、以下のコマンドで実施します。
    • リセットして最初から
    $ openclaw reset
    $ openclaw onboard --install-daemon 
    
    • リセットせずに設定変更のみ
    $ openclaw configure
    

1.6. 認証情報の確認

  • ブラウザからの接続に必要な認証情報を以下のコマンドで確認します
cat /home/node/.openclaw/openclaw.json | grep "token" 
  • 出力内容
"mode": "token", 
"token": "4****************************d" 

2. 接続確認

2.1. OpenClawへの接続

  • http://localhost:15789/?token=<tokenの値> の形式でブラウザに入力してアクセスすることで、  OpenClawのコンソール画面に入れます。tokenの値が認証情報になっているので、user/passによるログイン認証等はありません。 openclaw-web-console

3. その他設定

3.1. セキュリティ設定

  • openclaw は再帰的にエラー処理やチャットの内容を実現するために必要なタスクを分解して処理する性質上、必要以上にサーバ環境を破壊したり、問題のあるソフトウェアのインストール、外部環境への攻撃を行ってしまう可能性があります。そのため、対策として権限の管理及びマルウェア対策を実施します。

    • 権限管理
      この手順ではopenclawをnodeユーザで起動していますが、root権限のないユーザで操作させることで、一定のガードレールになります。

    • 危険なパッケージインストールの防御

      $ sudo npm config set registry https://npm.flatt.tech 
      $ sudo pnpm config set registry https://npm.flatt.tech 
      $ sudo yarn config set registry https://npm.flatt.tech 
      
    • マルウェア対策

      root 権限で以下コマンドを実施します

      $ sudo apt-get install -y clamav clamav-daemon 
      $ sudo freshclam 
      $ sudo mkdir /var/run/clamav/ 
      $ sudo chown -R clamav:clamav /var/run/clamav 
      $ sudo clamd & 
      $ sudo apt-get install –y vim 
      $ sudo vi /etc/cron.d/e2scrub_all 
      

      cron の設定

      $ sudo cat /etc/cron.d/e2scrub_all 
      
      30 3 * * 0 root test -e /run/systemd/system || SERVICE_MODE=1 /usr/lib/x86_64-linux-gnu/e2fsprogs/e2scrub_all_cron 
      10 3 * * * root test -e /run/systemd/system || SERVICE_MODE=1 /sbin/e2scrub_all -A -r 
      5 * * * * clamscan -r --bell -i /home/node/.openclaw /tmp --log=/var/log/clamav/daily.log 
      
  • 参考URL

    1. https://flatt.tech/takumi/features/guard
    2. https://note.com/zephel01/n/n67de10dbb333