0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Open WebUIをオフライン環境のwindowsで利用するため、Podman上のコンテナイメージを設定する

0
Posted at

はじめに

この記事は、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

大まかな作業手順

  1. オンラインPCでの作業:Open WebUIイメージの書き出し
  2. オフラインPCでの作業:Open WebUIイメージの導入
  3. オフライン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

とりあえず、以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?