1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UbuntuでQwen3-4Bをローカル実行してOpen WebUIから使えるようにする

1
Posted at

はじめに

Ubuntu環境でLLMをローカル実行し、同一LANにおいてブラウザからChatGPTのように利用できる環境を構築しました。

ついでにDocker操作についてだいぶ忘れていたので、Dcoker関連については少しだけ丁寧に説明していきます。

使用した環境は以下の通りです。

  • Ubuntu
  • Ollama
  • Qwen3-4B(テストのため最軽量)
  • Docker
  • Open WebUI

最終的には、同じLANに接続されたiPhoneからもアクセスできるようにしました。

構成は以下のようになっています。

iPhone
   ↓ LAN
Ubuntu
   ├─ Open WebUI(Docker)
   │      ↓
   └─ Ollama
          ↓
       Qwen3-4B

1. Ollamaのインストール

まず、LLMをローカルで実行するためにOllamaを使用しました。

Ollamaは、ローカル環境でLLMを実行するためのソフトウェアです。

インストールには以下のコマンドを使用します。

curl -fsSL https://ollama.com/install.sh | sh

インストール後、

ollama --version

で確認したところ、今回はOllama 0.33.3でした。


2. Qwen3-4Bを実行する

Ollamaを使ってQwen3-4Bを起動します。

ollama run qwen3:4b

初回はモデルがダウンロードされます。

今回使用したモデルは以下のような構成でした。

  • パラメータ数:4.0B
  • 量子化:Q4_K_M
  • サイズ:約2.5GB

起動後、ターミナルから質問を入力すると回答が返ってきました。

これで、ローカル環境でQwen3-4Bを実行できることを確認できました。


3. OllamaのAPIを確認する

OllamaにはAPIが用意されているため、HTTP経由でモデルを利用できます。

インストールされているモデルは、

curl http://localhost:11434/api/tags

で確認できます。

今回は以下のようにQwen3-4Bが表示されました。

{
  "models": [
    {
      "name": "qwen3:4b"
    }
  ]
}

また、

curl http://localhost:11434/api/version

でOllamaのバージョンを確認できます。


4. Open WebUIを導入する

ここまででLLM自体は動作しましたが、ターミナルからではなく、ブラウザから利用したかったためOpen WebUIを導入しました。

Open WebUIはLLMそのものではなく、Ollamaなどをブラウザから操作するためのWebインターフェースです。

今回はDockerを利用してOpen WebUIを動かしました。

Dockerとは

Dockerは、アプリケーションを「コンテナ」と呼ばれる隔離された環境で動かすための仕組みです。

今回の場合、

Ubuntu
│
├─ Ollama
│
└─ Docker
     └─ Open WebUI

という構成になります。

Open WebUIをUbuntuへ直接インストールする代わりに、Dockerコンテナの中で実行しています。


5. Open WebUIを起動する

以下のコマンドでOpen WebUIのコンテナを起動しました。

docker run -d \
  -p 3000:8080 \
  --add-host=host.docker.internal:host-gateway \
  -v open-webui:/app/backend/data \
  --name open-webui \
  --restart always \
  ghcr.io/open-webui/open-webui:main

それぞれの設定について簡単に説明します。

-p 3000:8080

Ubuntu側の3000番ポートと、Dockerコンテナ内の8080番ポートを接続します。

Ubuntu :3000
     ↓
Docker :8080
     ↓
Open WebUI

そのため、Ubuntu自身のブラウザから、

http://localhost:3000

でOpen WebUIにアクセスできます。

-v open-webui:/app/backend/data

Open WebUIのデータをDocker Volumeに保存します。

コンテナを作り直した場合でも、データを保持できるようにするためです。

--restart always

Ubuntuを再起動した場合などにも、コンテナを自動的に起動する設定です。

--name open-webui

コンテナにopen-webuiという名前を付けています。

そのため、

docker ps

でコンテナの状態を確認できます。


6. DockerからOllamaに接続する

Open WebUIを起動してみると、最初は利用できるモデルがありませんでした。

Ollama自体は正常に動いています。

curl http://localhost:11434/api/tags

を実行するとQwen3-4Bが確認できます。

しかし、Open WebUIはDockerコンテナの中で動いています。

ここで重要なのが、

Dockerコンテナから見たlocalhostと、Ubuntuから見たlocalhostは同じではない

という点です。

Ubuntuから、

localhost:11434

にアクセスするとOllamaに接続できます。

一方、Dockerコンテナ内からlocalhost:11434へアクセスすると、Dockerコンテナ自身を指します。

そこで、DockerコンテナからUbuntu側へ接続するためにhost.docker.internalを利用します。


7. Ollamaの待ち受け設定を変更する

最初に、

docker exec open-webui curl http://host.docker.internal:11434/api/tags

を実行したところ、接続に失敗しました。

原因は、Ollamaがlocalhostからの接続だけを受け付ける設定になっていたためです。

そこで、Ollamaのサービス設定を変更します。

sudo systemctl edit ollama

開いたファイルに以下を追加します。

[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"

保存したら、Ollamaを再起動します。

sudo systemctl daemon-reload
sudo systemctl restart ollama

その後、再び、

docker exec open-webui curl http://host.docker.internal:11434/api/tags

を実行すると、Qwen3-4Bを確認できました。

これでDocker上のOpen WebUIから、Ubuntu上で動作しているOllamaへ接続できるようになりました。


8. Open WebUIからQwen3-4Bを使う

Open WebUIをブラウザで開き、モデル一覧を確認すると、Qwen3-4Bが利用できるようになりました。

最終的な内部構成は、

ブラウザ
   ↓
Ubuntu :3000
   ↓
Docker :8080
   ↓
Open WebUI
   ↓
Ollama :11434
   ↓
Qwen3-4B

となっています。

これで、ターミナルからではなく、WebブラウザからQwen3-4Bを利用できるようになりました。


9. iPhoneからアクセスする

さらに、同じLANに接続されたiPhoneからも利用できるようにしました。

Ubuntu PCのIPアドレスは、

hostname -I

で確認できます。

例えば、

192.168.1.23

だった場合、iPhoneのブラウザから、

http://192.168.1.23:3000

へアクセスします。

これで、iPhoneからもOpen WebUIを利用できました。

通信の流れは、

iPhone
   ↓ Wi-Fi
Ubuntu PC :3000
   ↓
Docker
   ↓
Open WebUI
   ↓
Ollama :11434
   ↓
Qwen3-4B

となります。

なお、RTX 3080はネットワーク上の接続先ではなく、Ubuntu PCに搭載されているGPUとしてLLMの計算を担当しています。


まとめ

今回は、Ubuntu上にQwen3-4Bのローカル実行環境を構築し、Open WebUIから利用できるようにしました。

最終的な構成は以下です。

iPhone / PC
     ↓
Open WebUI
     ↓
   Ollama
     ↓
 Qwen3-4B
     ↓
    GPU

今回の構築を通して、

  • OllamaによるローカルLLMの実行
  • Ollama API
  • Dockerのポートフォワーディング
  • Dockerコンテナからホストへの通信
  • LAN内からWebサービスへアクセス

などを実際に触ることができました。

Ollamaがlocalhostからの接続だけを受け付ける設定になっている点に少し詰まりましたが、接続周りについて勉強する良い機会になりました。

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?