SabaKore

VPSにOpen WebUIを入れて、ブラウザのチャット画面でローカルLLMを使う

Ollamaは、そのままだと黒い画面(ターミナル)でしか使えません。Open WebUIを入れると、ChatGPTのような ブラウザのチャット画面で、会話の履歴を残しながら使えます。ここでは、Dockerで1つのコンテナにまとめる構成を、 外に公開しないやり方で入れます。GPUの無いVPS(CPUだけ)を前提にしています。

1Dockerを入れる

Ubuntuなら、パッケージで入ります(公式の手順で入れても構いません)。 VPSの契約と接続は、Ollamaのインストール手順の1番と同じです。

sudo apt update && sudo apt install -y docker.io

2秘密の鍵を作る

ログイン情報を守るための鍵です。固定して保管しておかないと、コンテナを作り直すたびに全員がログアウトされます。

openssl rand -hex 32

出力された文字列を、次の手順の 鍵の文字列 に入れます。

3Open WebUIとOllamaを起動する

Open WebUIの公式が用意している、Ollamaを中に含む1つのコンテナを使います(CPUのみの構成)。 公式の例と違うのは、-p 127.0.0.1:3000:8080 の部分です。画面を、サーバーの中からだけ開けるようにしています。 Dockerが公開したポートは、ファイアウォールを素通りすることがあるためです (解説)。

sudo docker run -d \
  -p 127.0.0.1:3000:8080 \
  -v ollama:/root/.ollama \
  -v open-webui:/app/backend/data \
  -e WEBUI_SECRET_KEY=鍵の文字列 \
  --name open-webui --restart always \
  ghcr.io/open-webui/open-webui:ollama

-v の2行は、モデルとチャットの保存先です。 外して実行しないでください。データが失われます。起動に時間がかかるときは、sudo docker logs -f open-webui で、「Application startup complete」と出るまで待ちます。

4手元のPCから開く(SSHトンネル)

手元のPCで、次を実行したままにします。

ssh -N -L 3000:localhost:3000 ユーザー名@サーバーのIPアドレス

ブラウザで http://localhost:3000 を開きます。最初の画面で「Create Admin Account」から、アカウントを作ります。 最初に登録した人が管理者になり、そのあとは、新規登録が自動で閉じます。

5モデルを取得して、話しかける

コンテナの中のOllamaに、モデルを取得させます。まずは小さいモデルで試してください (選び方はプラン診断)。

sudo docker exec -it open-webui ollama pull llama3.2:3b

取得できたら、チャット画面でそのモデルを選んで話しかけます。止めるときはsudo docker stop open-webui、 再び動かすときはsudo docker start open-webuiです。

よくある質問

メモリは、どれくらい余計に要りますか

チャット画面のぶんのメモリが、モデルのぶんに上乗せで要ります。当サイトは実測をしていないので、具体的な数字は示せません。余裕を持たせるなら、モデルが載る最小のプランから1段上を選んでください。

もうOllamaを入れてあるのですが、そのまま使えますか

この手順は、Ollamaを中に含む1つのコンテナを使います。すでに入れたOllamaとモデルは共有されないので、チャット画面側でもう一度モデルを取得します。すでに入れたOllamaを使う構成もありますが、Ollamaを外から届く状態にする必要があり、お勧めしません(公式の注意書きより)。

ほかの人にも使わせたい

SSHトンネルは、サーバーに入れる人しか使えません。複数人で使うなら、HTTPSとパスワード認証を付けたリバースプロキシを前に置く必要があります。この場合は、ポートを開けるので、設定を慎重に確認してください。

ToolkITBoxのAIツール・解説と併用する

姉妹サイトの、この記事と相性のいいページです。

コマンドはOpen WebUI公式のクイックスタートをもとにしています(ポートの公開範囲だけを変えています)。バージョンアップで変わることがあるため、うまくいかないときは公式もご確認ください。