はじめに
この記事は、WSLv2、Podman、Podman DesktopがインストールされているオフラインPC(Windows11Pro)に、Open WebUIを導入する方法を記載したものです。
略語、用語の説明
- WSL: Windows Subsystem for Linux
- VM: Virtual Machine, バーチャルマシーン。WSL上で動作します。
- オフラインPC: インターネット接続のないPC
- オンラインPC: インターネット接続のあるPC
環境
- オフラインPC
- Windows 11 Pro
- WSL version2 インストール済み。
- WSL のディストリビューションは、Ubuntu 24.04を導入済み。
- オフラインPCと同等のオンラインPCがある
- Podman 5.8.0
- Podman Desktop 1.25.1
- Open WebUI 0.8.8
- Ollama 0.17.5
大まかな作業手順
- オンラインPCでの作業:Open WebUIイメージの書き出し
- オフラインPCでの作業:Open WebUIイメージの導入
- オフラインPCでの作業:Open WebUIの設定
1. オンラインPCでの作業: Open WebUIイメージの書き出し
基本的な作業の流れは
コンテナイメージをローカルにpull → コンテナイメージをtar化
# まずは、open-webuiのコンテナイメージをダウンロード
podman pull ghcr.io/open-webui/open-webui:main
# 次に、コンテナイメージをtar化します
podman save -o open-webui-x64.tar ghcr.io/open-webui/open-webui:main
こうして作られたopen-webui-x64.tarをオフラインPCに持ち込みます。
2. オフラインPCでの作業:Open WebUIイメージの導入
# podmanイメージをロードします
podman load -i open-webui-x64.tar
# ロードできたかを確認します
podman images
とりあえず、Open WebUIイメージの導入は完了です。
3. オフラインPCでの作業:Open WebUIの設定
まずは起動してみる。
# open-webuiを起動してみます
podman run --rm -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main
open-webuiが起動した後(起動にしばらく時間がかかります)、ブラウザから起動画面を確認します。
この場合のアクセス先は、http://<VMのIPアドレス>:3000になりますので、注意してください。localhostではありません。
<注意点>
- hostから見たVM(open-webui)は、外部です。
- hostから、VM(open-webui)には、http://localhost:3000 ではアクセスできません。
- hostから、VM(open-webui)へのアクセスは、
http://<VMのIPアドレス>:3000です。
以下では、VMのIPアドレスの調べ方を紹介します。
WSL内におけるVMのIPアドレスの調べ方
open-webuiへの接続に利用します。
# PowershellからVMの名前を調べます
podman machine list
# VMのIPアドレスを表示させる
podman machine ssh virtual-machine-name "ip a"
次に、open-webuiからOllamaへの接続に必要な、オフラインPCのIPアドレスの調べ方です。
オフラインPCのIPアドレスの調べ方
open-webuiからOllamaへ接続する設定の際に、オフラインPCのIPアドレスが必要になります。
ipconfigを利用する場合
# PowerShellから
ipconfig
Get-NetIPAddress を利用する場合
PowerShellで、Get-NetIPAddressと打ち込むと、PCに関連付けられているすべてのIPアドレスが表示されます。その中から、それっぽいものを探します。あるいは、Get-NetIPConfigurationでも良いかもしれません。
open-webuiとOllamaとの接続
<注意点>
- VM(open-webui)から見たhost(Ollama)は、外部です。
- VM(open-webui)から、host(Ollama)へは、http://host.containers.internal:11434 ではアクセスできません。
- VM(open-webui)から、host(Ollama)へのアクセスは、
http://<オフラインPCのIPアドレス>:11434です。
オフラインPCでの作業: Ollamaアプリの設定
settingsから、Expose Ollama to the networkのトグルを調整し、ONにする。
"Allow other devices or services to access Ollama."と表示されていればOK。
VMからOllamaへの接続テスト
# Ollamaとの接続テスト
# "Ollama is running"と表示されればOK
podman machine ssh virtual-machine-name "curl -s http://<オフラインPCのIPアドレス>:11434"
"Ollama is running"と表示されればOKです。
オフラインPCでの作業: ブラウザから操作
- オフラインPCのブラウザから、
http://<VMのIPアドレス>:3000で接続します。 - Open WebUIで、[設定] > [管理者パネル] > [設定] > [接続] と画面を推移していきます。
- [Ollama API] > [Ollama API接続の管理] で[+]を押して、[接続を追加]します。
-
接続タイプ: 外部,URL: http://<オフラインPCのIPアドレス>:11434とし、[保存]します。 - URLの指定には、
http://も必要ですので、注意してください。
これで、open-webuiとOllamaとの接続が確立されたはずです。
以下はおまけです。将来的には別記事にする予定です。
4. オフラインPCでの作業: Kubernetes YAMLからPodmanコンテナを起動する(おまけ)
# Podman Kube Play file for Open-WebUI
# 使用例
# podman kube play ./filename.yaml
# podman kube down ./filename.yaml
# podman kube down --force ./file.yaml # ボリュームも削除 # エラーが発生したら、retry.
apiVersion: v1
kind: Pod
metadata:
name: open-webui-kube
spec:
containers:
- name: container
image: ghcr.io/open-webui/open-webui:main
ports:
- name: http
containerPort: 8080
hostPort: 3000
volumeMounts:
- mountPath: /app/backend/data
name: data
volumes:
- name: data
persistentVolumeClaim:
claimName: open-webui-pvc
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: open-webui-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
上記のyamlファイルを適当な名前で保存します。下の例では、ファイル名をfilename.yamlにしました。
その後、下記のコマンドを実行します。
# 動作開始
podman kube play ./filename.yaml
# 動作終了
podman kube down ./filename.yaml
# 動作終了 + ボリューム削除
# エラーが発生したら、retry.
podman kube down --force ./file.yaml
とりあえず、以上です。