【ローカルLLM】ゲーミングPCをAIサーバー化:スマホでアクセスできる Ollama+OpenWebUI環境の作り方【Docker】
こんにちは!
最近、ローカルLLM(大規模言語モデル)で遊んでいますか?
「自分のPCでAIを動かすのは楽しいけど、PCの前に座っていないと使えないのが不便……」
「リビングのソファで、iPadやスマホから自分のAIとお喋りしたい!」
そんなふうに思ったことはありませんか?ありますよね?
そう、あるんですよ(圧)
今回は、自宅のハイスペック Ubuntu PCを「AIサーバー」にして、家のWi-Fi(LAN)内ならスマホやノートPCからどこでもアクセスできる環境を作ってみましょう。
ターミナルでDockerの操作が少しありますが、コピペで進められるように解説しますので、Docker初心者の方もぜひチャレンジしてみてください!
今回作る環境のイメージ
今回使うのは以下の2つの主役です。
- Ollama: AIの「脳みそ」部分。LLMを動かすエンジン。
- Open WebUI: AIの「顔」部分。ChatGPTのような使いやすい画面を提供してくれます。
これらをDockerという箱に入れて動かし、Nginxという案内役を使って、家の中の端末からアクセスできるようにします。
準備(前提条件)
まず、作業を始める前に以下の準備が必要です。
必須環境
すでに以下の2つはインストール済みでしょうか?
- NVIDIA ドライバ: GPUがちゃんと認識されていること。
- Docker Desktop または Docker Engine: これがないと始まりません。
まだの方は、以下の記事を参考にセットアップしてください!


追加で必要なもの:NVIDIA Container Toolkit
Dockerの中からGPU(グラボ)を使うために、NVIDIA Container Toolkitが必要です。これがないと、AIがCPUで動いてしまい動作が激重になります。
以下のコマンド等でインストールし、Dockerを再起動しておく必要があります。
bash sudo apt install -y nvidia-container-toolkit
sudo systemctl restart dockerDocker Composeファイルの作成
ここからが本番です。
「Ollama」と「Open WebUI」をまとめて起動するための設計図(docker-compose.yml)を作ります。
適当なフォルダ(例: my-ai-server)を作り、その中に docker-compose.yml という名前でファイルを作成して、以下をコピペしてください。
version: '3.8'
services:
# --- AIの脳みそ: Ollama ---
ollama:
image: ollama/ollama:latest
container_name: ollama
# 自分のPC内(127.0.0.1)からしか見えないようにロックします
ports:
- "127.0.0.1:11434:11434"
volumes:
- ollama_data:/root/.ollama
restart: always
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
# --- AIの見た目: Open WebUI ---
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
# こちらも自分のPC内(127.0.0.1)の3000番ポートに限定公開
ports:
- "127.0.0.1:3000:8080"
environment:
# Dockerの中でOllamaと通信する設定
- OLLAMA_BASE_URL=http://ollama:11434
volumes:
- open-webui_data:/app/backend/data
restart: always
depends_on:
- ollama
volumes:
ollama_data:
open-webui_data:💡 こだわりポイント
設定の中に 127.0.0.1:3000:8080 という記述があります。
これは「このPC自身(localhost)からしかアクセスできないようにする」という設定です。いきなり全開放せず、あとで紹介するNginxを通して安全に接続するためにこうしています。
起動してみよう
ファイルができたら、その場所で以下のコマンドを実行します。
sudo docker compose up -d(-d は「バックグラウンドで静かに動いててね」という意味です)
よく使うコマンド集
Docker初心者の方のために、よく使うコマンドを置いておきます。
動いているか確認する
sudo docker ps -a STATUS 出力結果が Up になっていれば成功です!
基本の停止方法(おすすめ)
コンテナを停止し、さらにコンテナ自体を削除します(データは消えません)。
次回起動するときに設定変更などがきれいに反映されるため、通常はこちらを使います。docker-compose.yml があるディレクトリで以下を実行すればOK。
sudo docker compose down一時停止(コンテナを残す)
docker-compose.yml があるディレクトリで以下を実行します。
sudo docker compose stop再開するときは
sudo docker compose startで素早く復帰できます。(sudo docker compose up -d でもOK)
3. ホスト側 Nginx の設定
今のままだと、PCの中からは使えますが、スマホからは繋がりません。
そこで、WebサーバーのNginxを使って「外(LAN内)からのアクセスを、Docker内のOpen WebUIへ転送する」設定を行います。
設定ファイルの作成
/etc/nginx/sites-available/openwebui-server というファイルを作成し、以下を記述します。(openwebui-server のところは何でもよいです。)
server {
listen 80;
server_name _; # 特定のドメインやホスト名がない場合はこれでOK
location / {
# ホスト自身(127.0.0.1)で動いているDockerのポート3000へ転送
proxy_pass http://127.0.0.1:3000;
# 重要:AIの文字がパラパラ出る(Streaming)ために必要
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 誰からアクセスが来たかの情報を正しく伝える
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# AIの生成が遅くてもタイムアウトしないように時間を延ばす(300秒)
proxy_read_timeout 300s;
}
}ファイアウォール(UFW)について
セキュリティのため、UFWなどのファイアウォールを使って「家のWi-Fi(LAN)からのみ許可」する設定をおすすめします。
(例:自宅のIP帯域が 192.168.1.x の場合)
sudo ufw allow from 192.168.1.0/24 to any port 80 proto tcpこれで、外部の知らない人からのアクセスを防ぎつつ、家族や自分の端末からはアクセスできるようになります。
詳しくは以下の記事で解説しているのであわせてこちらも読んでみてください!
(Raspberry Pi用に書いてますが、Ubuntuでもやり方は同じです)

設定を反映させる
書き終わったら、Nginxにこの設定を読み込ませて再起動します。
# 設定を有効化(シンボリックリンク作成)
sudo ln -s /etc/nginx/sites-available/openwebui-server /etc/nginx/sites-enabled/
# 書き間違いがないかチェック
sudo nginx -t
# Nginxを再起動
sudo systemctl restart nginx4. いざ、スマホからアクセス!
さあ、準備完了です!
スマホやタブレットのブラウザを開いて、PCのIPアドレスを入力してみましょう。
(※初回はアカウント作成画面が出ますが、これはあなたのローカル環境に保存される管理者アカウントです)
http://192.168.x.x (あなたのPCのIPアドレス)
これで、トイレの中でも布団の中でも、ハイパワーなPCのGPUを使ってサクサクAIと会話ができるようになりました!
ぜひ、快適なローカルLLMライフを楽しんでくださいね。
