python, uvをインストールされていないオフライン環境のPC上で、Open WebUIをuv上で利用したい人に向けた記事です。英語では、Open WebUI on uv with ollama in offline PC です。なお、Ollamaは既に稼働済みとします。
基本は「オンラインPC上でuv, python, Open WebUI関連パッケージ を集めて、オフラインPCへ持ち込んで設定する」という運用になります。
この方法では、プロジェクトフォルダのPATHが変わると動作しませんので、 オンラインPCとオフラインPCとで同じPATHにプロジェクトフォルダを置く 必要があります。
基本方針
色々な方法があると思いますが、この記事では、次のようにしました。
- プロジェクトフォルダはオンラインPCとオフラインPCで同じPATHにする必要があります。
- Open WebUIのためのフォルダを
C:\open-webuiに作成します。 - プロジェクトフォルダを
C:\open-webui\proj-owuとします。 -
uv.exeはプロジェクト外(ここではC:\bin)に置く。 - Pythonはプロジェクト内(ここでは、
C:\open-webui\proj-owu)に置く。 - 実行は
uv run open-webuiとする。 - Open WebUIのデータは、プロジェクト外(
C:\open-webui\data)に置く。 - embedding engine は、プロジェクト外 (
C:\open-webui\huggingface)に置く。 -
ffmpeg.exeはプロジェクト外(ここではC:\bin)に置く。 - ユーザー環境変数の設定をする。UNIX風だが不適切な書き方をすると、
- PATH=$PATH:'C:\bin'
- DATA_DIR=C:\open-webui\data
- HF_HOME=C:\open-webui\huggingface
環境について
ソフトのバージョン
- Windows 11 Pro 25H2
- Open WebUI: v0.9.5
- uv: v0.11.13
- Python: v3.11.9
オンラインPC上の作業
まずはオンラインPC上の作業です。
フォルダ作成と環境変数設定 on オンラインPC
下記のフォルダを作成します。
バージョンアップ時の管理しやすさを考慮し、データフォルダ等を設定しました。
環境変数は、WindowsOSの設定ウィザードから設定できます。
| フォルダパス | 変数 | 説明 |
|---|---|---|
C:\bin |
PATH |
uvやffmpegのbinaryを置きます |
C:\open-webui\data |
DATA_DIR |
Open WebUIのデータを置きます |
C:\open-webui\huggingface |
HF_HOME |
embedding engine (all-MiniLM-L6-v2)を置きます。 |
C:\open-webui\proj-owu |
プロジェクトファイルです。名前は proj-owu にしましたが、任意の名前でOKです。 |
- オンラインPCでは、初回起動時にembedding engineが Hugging Face のサイトからダウンロードされ、
HF_HOMEで定義されたフォルダに保存されます。 - オフラインPCでは、初回起動前からembedding engineを準備しておきます。
- プロンプトで変数を確認するコマンドは次の通り。
$env:DATA_DIR
uvをインストールする on オンラインPC
- ネット接続できる端末で、対象アーキテクチャの uv を取得する。
uv の公式リポジトリのリリースページへ https://github.com/astral-sh/uv/releases
x64 Windows ならuv-x86_64-pc-windows-msvc.zipをダウンロードする。 - Hash値の確認
Get-FileHash C:\path\to\fileでチェックサムを表示させ、問題ないかをチェックする。 - 解凍する。
-
C:\binにuv.exeなどの実行ファイルを置く。 - 環境変数ウィザードからユーザー環境変数の
PATHにC:\binを追加する。(既にしていればここでは不要) - PowerShellで
uv --versionとし、バージョン情報が表示されれば完了です。
ffmpegのインストール on オンラインPC
ffmpeg は、主に音声ファイルの処理と動画の扱いのために使用されます。
ffmpeg からダウンロードし、解凍して C:¥bin に ffmpeg.exe を置きます。
パッケージはessential と full がありますが、essential の方で十分です。
PowerShellで、ffmpeg -version でバージョン情報が表示されれば、OKです。
なお、テキストのみの利用でしたら、起動時に毎回メッセージは出ますが、ffmpegはなくても利用可能です。
Pythonの取得 on オンラインPC
- pythonのダウンロードサイト https://www.python.org/downloads/ にアクセスする。
- Windows embeddable package のzipをダウンロードする。
- open-webuiで利用するおすすめは、Python 3.11.9です。この場合のファイルは、
python-3.11.9-embed-amd64.zipです。 - 解凍してプロジェクトフォルダ(ここでは、
proj-owu)に入れる。
プロジェクトフォルダ内でのコマンド操作 on オンラインPC
PowerShellなどで、次の操作を行う。
# uvの初期化
uv init --bare --python python-3.11.9-embed-amd64
# uvの仮想環境作成
uv venv --python python-3.11.9-embed-amd64
.venv/pyenv.cfg の home を相対パスに書き換える
適当なエディタで、該当部分を
home = python-3.11.9-embed-amd64
と書き換える。
続けて、PowerShellなどで、次の操作を行う。
# パッケージの追加
uv add --link-mode=copy open-webui
ここで好きなパッケージを追加しても構いません。
huggingface フォルダの調整 on オンラインPC
デフォルトの embedding engine(all-MiniLM-L6-v2) を HF_HOME で指定されたフォルダに置きます。
実際には、オンラインPC上で open webuiを初回起動させた時に embedding engine が自動ダウンロードされます。
初回起動後、 embedding engine がおさめられている、HF_HOME で指定したフォルダ(ここでは、 C:\open-webui\huggingface フォルダ)をまるごと圧縮して、オフラインPCに持ち込みます。
(もしも、HF_HOME を設定していない場合は、~/.cache/huggingface にあります。)
後ほど、オフラインPC上で解凍し、オフラインPC上のhuggingfaceフォルダ(HF_HOMEで指定したフォルダ、ここでは、オンラインPC上のC:\open-webui\huggingface )と置き換えます。
オフラインPCに持ち込むもののまとめ
- uv:
uv-x86_64-pc-windows-msvc.zip - ffmpeg:
ffmpeg-git-essentials.7z(別名の場合あり) - embedding engine:
huggingface.zip - プロジェクトフォルダ:
open-webui\proj-owu(ファイル数が多いので、圧縮した方がよい)
オフラインPC上の作業
ここからはオフラインPC上の作業です。
フォルダ作成と環境変数設定 on オフラインPC
オンラインPCと同様に、下記のフォルダを作成します。
環境変数は、WindowsOSの設定ウィザードから設定できます。
| フォルダパス | 変数 | 説明 |
|---|---|---|
C:\bin |
PATH |
uvやffmpegのbinaryを置きます |
C:\open-webui\data |
DATA_DIR |
Open WebUIのデータを置きます |
C:\open-webui\huggingface |
HF_HOME |
embedding engine (all-MiniLM-L6-v2)を置きます。 |
C:\open-webui\proj-owu |
プロジェクトファイルです。 |
uvをインストールする on オフラインPC
- オンラインPCでダウンロードしたuv (ここでは、
uv-x86_64-pc-windows-msvc.zip)を持ち込み、解凍します。 -
C:\binにuv.exeなどの実行ファイルを置く。 - 環境変数ウィザードからユーザー環境変数の
PATHにC:\binを追加します。(既にしていればここでは不要) - PowerShellで
uv --versionとし、バージョン情報が表示されれば完了です。
ffmpegのインストール on オフラインPC
ffmpeg は、主に音声ファイルの処理と動画の扱いのために使用されます。
ffmpeg からダウンロードし、解凍してC:¥bin に ffmpeg.exe を置きます。
パッケージはessential と full がありますが、essential の方で十分です。
PowerShellで、ffmpeg -version でバージョン情報が表示されれば、OKです。
なお、テキストのみの利用でしたら、起動時に毎回メッセージは出ますが、ffmpegはなくても利用可能です。
バッチファイルの作成
start_openwebui.bat のような名前を付けて、プロジェクトフォルダ内にバッチファイルを作成する。
- 最小限のバッチ
uv run open-webui serve
- ログオン時に設定用のバッチ
@echo off
uv run open-webui serve
- 環境変数設定付きバッチ
set DATA_DIR=C:\open-webui\data
set HF_HOME=C:\open-webui\huggingface
uv run open-webui serve
- プロンプト画面を出さないバッチ
Start-Process "uv run open-webui serve" -WindowStyle Hidden
タスクスケジューラ設定
- 「タスクスケジューラ」を検索して開く。
- 「基本タスクの作成」→名前「Open WebUI Startup」。
- トリガー「ログオン時」。
- アクション「プログラムの開始」→
- Program/script:
cmd.exe - Arguments:
/c "C:\open-webui\proj-owu\start_openwebui.bat" - Start in:
C:\open-webui\proj-owu
- Program/script:
- 「最高の特権で実行」「ユーザーがログオンしていなくても実行」をチェック。
とりあえず、私の場合、これで利用できるようになりました。お疲れ様でした。