こんばんは。torippy1024です。
本日は、何番煎じかわかりませんが、オープンソースLLMであるOllmaとオープンソースWeb UIであるOpen WebUIを使ってセルフマネージドチャットツールを構築し、これらの実行状態をsplunkで監視してみます。
(どっちかというとsplunkでLLMの稼働監視を行うことが目的です)
構成図
というわけで構成図です。
ラボなのでインスタンスは一つでもいいかなあと思いつつ、まあせっかくなのでサーバーを分離して構築してみました。
HTTPSでなくHTTPとなっています。
Open WebUIの手前にngixなどを入れたりいろいろやりようはあると思うのですが、今回は平文でアクセスしてしまうことにします。
前提条件
各サーバーのスペックやセキュリティグループは以下の通りです。
Ollamaサーバーは、LLMを使ってみるのだからGPU搭載のサーバーにしましたが、とりあえず動くか試すだけであればGPUなしのサーバーでも動くと思います。
| サーバー名 | AWSインスタンス | ストレージ | OS | セキュリティグループ |
|---|---|---|---|---|
| Ollamaサーバー | g4dn.xlarge | 80GB gp3 | Deep Learning Base AMI with Single CUDA (Ubuntu 24.04) | ローカル端末からのSSH(22/tcp),open-webuiサーバーからの11434/tcpインバウンド通信を許可 |
| Open-WebUIサーバー | t3.medium | 30GB gp3 | Ubuntu Server 24.04 LTS (HVM) | ローカル端末からのSSH(22/tcp)およびHTTPインバウンド通信を許可 |
設定手順
特筆すべき作業はそんなにないです。
コマンドと簡単な意味だけ記載していきます。
(まーただぶっちゃけもう手順やコマンドを調べるどころか、適当な指示を出すだけでClaude Codeが勝手に設定を完了させてくれる時代なので、わざわざこれをみて人手でやる必要があるのかとか思うところはありつつ)
Ollamaサーバーへの作業
apt更新
sudo apt update
sudo apt upgrade -y
GUIドライバ確認(Deep Learning Base AMI (Ubuntu 22.04)を選択した場合はすでにインストール済みのはず)
nvidia-smi
通常OSを選択してしまった場合など、GUIドライバがない場合は以下でドライバをインストール
sudo ubuntu-drivers devices
sudo ubuntu-drivers autoinstall
sudo reboot
Ollamaインストール
(https://docs.ollama.com/linux に書かれているコマンド一発でインストールできます。すごいですね)
curl -fsSL https://ollama.com/install.sh | sh
ollama -v
sudo systemctl status ollama
ollama pull llama3.2
ollama list
テスト(それぞれローカル、API、プロンプトを指定してテストを実施。初回実行時にはやや時間がかかることに注意)
ollama run llama3.2 "hello"
curl http://localhost:11434/api/tags
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"prompt": "Hello",
"stream": false
}'
IPアドレス制限範囲とログ出力追加変更
(デフォルトでは127.0.0.1アクセスのみであるのでこれを変更し、splunkで監視するためのログを/var/log/ollama配下に追加出力するよう指定)
sudo mkdir /var/log/ollama
sudo chown ollama:ollama /var/log/ollama
sudo chmod 755 /var/log/ollama
sudo mkdir /etc/systemd/system/ollama.service.d
sudo vi /etc/systemd/system/ollama.service.d/override.conf
以下のように変更
(AWS側のセキュリティグループでアクセス制限するため、OLLAMA_HOST=0.0.0.0を指定)
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_DEBUG=INFO"
StandardOutput=append:/var/log/ollama/ollama.log
StandardError=append:/var/log/ollama/ollama.log
再起動と確認
sudo cat /etc/systemd/system/ollama.service.d/override.conf
sudo systemctl daemon-reload
sudo systemctl restart ollama
sudo systemctl enable ollama
ポート11434でlistenしていることを確認
ss -tlnp | grep 11434
ログの確認
sudo journalctl -u ollama
cat /var/log/ollama/ollama.log
GPUが使用されていることの確認(念のため、プロンプトを投げて処理中に利用率が変化することを確認)
nvidia-smi
OpenWebUIサーバーへの作業
apt更新
sudo apt update
sudo apt upgrade -y
docker導入
(https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository そのまんま)
# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
docker実行(usermodでログインユーザーにdocker実行権限を付与してから起動していることに注意してください)
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker "$USER"
sudo systemctl status docker
sudo systemctl start docker
docker実行テストと実行確認
docker run hello-world
docker ps -a
環境変数の設定(OLLAMA_BASE_URLにOllamaサーバーの内部IPを指定することに注意)
echo "WEBUI_SECRET_KEY=$(openssl rand -hex 32)" >> ~/.open-webui.env
echo "OLLAMA_BASE_URL=http://<Ollamaサーバーの内部IP>:11434" >> ~/.open-webui.env
echo "AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL=false" >> ~/.open-webui.env
echo "SCARF_NO_ANALYTICS=true" >> ~/.open-webui.env
echo "DO_NOT_TRACK=true" >> ~/.open-webui.env
echo "WEBUI_ADMIN_EMAIL=admin@example.com" >> ~/.open-webui.env
echo "WEBUI_ADMIN_PASSWORD=password" >> ~/.open-webui.env
cat ~/.open-webui.env
chmod 600 ~/.open-webui.env
Open Web UI起動
docker run -d \
-p 80:8080 \
--add-host=host.docker.internal:host-gateway \
--env-file ~/.open-webui.env \
--name open-webui \
--restart unless-stopped \
-v open-webui:/app/backend/data \
ghcr.io/open-webui/open-webui:main
稼働確認
docker ps
docker logs open-webui --tail 30
ブラウザでアクセス(HTTP通信であることに注意してアクセス)
http://<Open WebUI EC2のIP>
admin@example.com/passwordでログインし、モデルからレスポンスが得られれば成功です。
(備考)環境変数を編集する時などに使う停止コマンド
docker stop open-webui
docker rm open-webui
(備考)open-webuiを更新するときのコマンド
docker stop open-webui
docker rm open-webui
docker pull ghcr.io/open-webui/open-webui:main
docker run
Open WebUIのデータ保管先(バックアップ取得時はこちらをコピー)
docker volume inspect open-webui
sudo ls -la /var/lib/docker/volumes/open-webui/_data
上記でOpen WebUI+Ollamaによるセルフマネージド生成AIチャット環境が完成しました。
次に、この環境をsplunkで監視する設定を入れてみます。

