これは何?
AITuberKitをWindowsPC(GPUあり)で Docker Desktop を使ってローカルで試した記録です。個人的なDockerの学習を兼ねています。
AITuberKit とは
pixivのChatVRMをフォークして開発された、AIキャラクターと音声チャットできるWebアプリを構築できるオープンソースのツールキットであり、Next.jsアプリです。ライセンスは以下のとおりとなっています。
- 無償利用
- 営利目的以外での個人利用、教育目的、非営利目的での使用は無償で利用可能です。
- 商用ライセンス
- 商用目的での使用に関しては、別途商用ライセンスの取得が必要です。
2026年7月にPRTIMESの記事があがっています。
開発者はニケちゃんという方ですが、2025年11月に開発停止が宣言されているので、その点ご留意ください(クリティカルな不具合の修正、商用ライセンス販売等は継続となっています)。
確認環境
- Windows 11 Pro(25H2)
- NVIDIA GeForce RTX3060(12GB)ドライバインストール済み
- WSL2有効化済み
- Docker Desktop 4.81 インストール済み
- Git インストール済み
Docker Desktop は下記のとおり一定規模以上の組織での商用利用は有償ですので、ご留意ください。
Commercial use of Docker Desktop in larger enterprises (more than 250 employees OR more than $10 million USD in annual revenue) requires a paid subscription.
前提知識
-
キットの性質上、バックエンドに自然言語対話サービス、音声合成サービスを必要としますが、これらの構築を Docker Compose に任せます。ここではローカルで ChatGPT のようなことができる ollama とずんだもんで有名な VOICEVOX を利用します
-
「Docker上でGPUを使うには、NVIDIA Container Toolkit が必要なのでは?」と思うかもしれませんが、Docker Desktop が橋渡しをしてくれるので、不要となっています
(参考:Windows版Docker DesktopにおけるGPUサポート)
セットアップ手順
1. レポジトリのクローン
git clone https://github.com/tegnike/aituber-kit.git
cd aituber-kit
ここで取得したバージョンはv2.59.0でした。
2. 設定ファイル(.env)の作成と更新
cp .env.example .env
- 環境変数を設定します。設定は
compose.yamlでも行えますが、compose.yamlの方が変更コストが重いので.envの方で設定します(個人で試す分にはあまり関係しませんが…) - サーバー側秘匿キーのAPI利用制御である
AITUBERKIT_SERVER_SECRET_ACCESS_MODEをunprotected「従来互換。公開URLでは非推奨」に設定していることに特に注意してください
-NEXT_PUBLIC_SELECT_LANGUAGE="en"
+NEXT_PUBLIC_SELECT_LANGUAGE="ja"
-AITUBERKIT_SERVER_SECRET_ACCESS_MODE="disabled"
+AITUBERKIT_SERVER_SECRET_ACCESS_MODE="unprotected"
-NEXT_PUBLIC_SELECT_AI_SERVICE="openai"
+NEXT_PUBLIC_SELECT_AI_SERVICE="ollama"
-NEXT_PUBLIC_SELECT_AI_MODEL="gpt-4o-2024-11-20"
+NEXT_PUBLIC_SELECT_AI_MODEL="gemma4:e2b"
-NEXT_PUBLIC_LOCAL_LLM_URL=""
+NEXT_PUBLIC_LOCAL_LLM_URL="http://ollama:11434"
-VOICEVOX_SERVER_URL="http://localhost:50021"
+VOICEVOX_SERVER_URL="http://voicevox:50021"
-NEXT_PUBLIC_VOICEVOX_SPEAKER="46"
+NEXT_PUBLIC_VOICEVOX_SPEAKER="0"
3. compose.yaml の作成
- 元々
docker-compose.ymlがありますが、compose.yamlを作ってやればこちらが優先されます - コンテナイメージに latest を使っているのは再現性の面でよくないかもしれませんが、とりあえずこれで
services:
app:
build: .
ports:
- '3000:3000'
volumes:
- .:/app
- /app/node_modules
env_file:
- .env
command: npm run dev
depends_on:
- ollama
- voicevox
ollama:
image: ollama/ollama:latest
container_name: ollama
volumes:
- ollama_data:/root/.ollama
restart: unless-stopped
gpus: all
voicevox:
image: voicevox/voicevox_engine:nvidia-latest
container_name: voicevox
restart: unless-stopped
gpus: all
volumes:
ollama_data:
4. Docker Compose で起動
Docker Desktop を起動したのち、レポジトリのディレクトリから compose を実行します。
docker compose up -d
コマンドの意味は「compose.yaml に定義された、コンテナ群を作成・起動し、バックグラウンドで実行する」です。
しばらく待つと、Docker Desktop の Containers のところが以下のようになります。
5. 言語モデルの取得
ollama のコンテナ環境に言語モデルを取得します。
gemma4 のうち軽量なエッジモデルを選択します。
docker exec -it ollama ollama pull gemma4:e2b
コマンドの意味は「Dockerコンテナ ollama の中で ollama pull gemma4:e2b コマンドを実行し、ダウンロードの進捗を対話的に表示する」です。
6. ブラウザアクセスと設定、動作確認
あとはブラウザでアクセスすれば、音声対話可能になります。自分は Chrome で試しました。なお、初回の応答には時間がかかります。
うまくいかない場合は Webアプリの「設定」内容や、Docker Desktop の Containers からログを確認しましょう。また、AITuberKit には充実したドキュメントサイトがあります。昨今であれば、表示されたメッセージ、遭遇した現象、疑問に思った内容を生成AIに聞いた方が早いかもしれません。
7. コンテナ群の停止
サービスを停止する場合は、Docker Desktop を終了させればよい気がしますが、コマンドで止める場合は以下のとおりです。
docker compose stop
upと対応するdocker compose downだと、コンテナをすべて削除してしまいますので。
