ローカルネットワークでOllamaを共有する(家族、 チーム)
Ollama をローカルネットワーク上のサーバーとして動かすと、使い方が大きく変わります。1台の GPU を複数のユーザーで共有できます。パートナーは MacBook から、開発者はデスクトップ PC から、子どもはタブレットから、全員が同じデーモンにアクセスするため、30 GB のモデルを重複して保存する必要はありません。このガイドでは、インターネット全体に公開せずに、Ollama をローカルネットワーク上で適切に公開する方法を説明します。
#ローカルネットワーク上でOllamaサーバーを使う理由は?
デフォルトでは、Ollamaは127.0.0.1:11434でのみ待ち受けるため、アクセスできるのはOllamaが動作しているマシンだけです。安全ではありますが、GPUを十分に活用できません。RTX 4090やMac Studio M4 Maxなら、7B〜14BのQ4モデルで3〜5人のユーザーに同時に対応しても、問題なく動作します。
- VRAMを共有する
- 家庭やチーム全体でメモリにロードされるモデルは一つのみ — 冗長なコピーはありません。
- モデルを一元管理する
- 150GBのGGUFファイルをサーバーに一度だけ保存し、ノートPCには一切保存しません。
- バージョンの標準化
- 全員が同じ Qwen 3.5 9B Q4 を使うため、端末ごとの品質のばらつきがなくなります。
- バッテリーの消費を抑える
- ノートPC側では計算を行わず、据え置きのサーバーにHTTP POSTリクエストを送信します。
#前提条件
お使いのマシンで、プライベートかつ無料のChatGPTを1時間で構築 — LM Studio、Ollama、Open WebUI、ご自身のドキュメント、クラウド不要。
- 永久に利用できるオンラインスペース
- PDF + ファイル
- 生涯アップデート
- Ollama インストール済み
- サーバーをホストするマシン(Linux、macOS または Windows)上です。理想的には、GPU が最も優れたマシンです。
- 固定IPまたはローカルDNS
- サーバーは同じIPを維持する必要があります。ルーター側でDHCP予約または静的IPを設定してください。そうでなければ、mDNSによるhostname.localを使用します。
- 信頼できるネットワーク
- WPA2/3を使用する家庭用Wi-Fi、またはチーム用VLAN。共用の公衆Wi-Fiは使用しないでください。
- 管理者権限
- ファイアウォールやシステムサービス(systemd、launchd、services.msc)を変更する場合。
#1. OLLAMA_HOST=0.0.0.0 で Ollama を公開
Ollama は 2 つの重要な環境変数を読み取ります。OLLAMA_HOST はリッスンインターフェースを定義し、OLLAMA_ORIGINS は許可される CORS のオリジンを定義します。サーバーモードに切り替えるには、OLLAMA_HOST を 127.0.0.1 から 0.0.0.0(すべてのインターフェース)に変更します。
#Linux (systemd)
最近のディストリビューションでは、Ollamaはsystemd経由で動作します。サービスの元のファイルではなく、オーバーライドを編集します。こうすることで、パッケージを更新しても設定が保持されます。
開くエディタで、コメント行の間に入れるようにこのブロックを貼り付けます。
ss -tlnp の表示で、Ollamaが127.0.0.1:11434だけでなく、0.0.0.0:11434で待ち受けていることを確認してください。
#Windows
Windowsでは、Ollamaは起動時にユーザー環境変数を読み取ります。適切な方法は、ユーザー環境変数にOLLAMA_HOSTを追加し、タスクバーからサービスを再起動することです(アイコンを右クリック → Quit Ollamaを選択 → 再度起動)。
#2. ファイアウォールでLANからの接続を許可する
Ollamaが0.0.0.0でリスニングしている場合、ファイアウォールはローカルネットワークからのみポート11434を許可する必要があります。インターネット上では11434を公開しないでください:Ollamaにはネイティブな認証機能がありません。
#UFW(Ubuntu、Debian)
192.168.1.0/24を実際のサブネットに合わせて変更してください(ip aで確認できます)。送信元を制限せずにufw allow 11434を設定したままにし、さらにマシンがポート転送で外部に公開されていると、世界中の誰もが匿名でOllamaを利用できる状態になります。
#iptables(UFWなし)
#Windows Defender Firewall
#3. macOSの特徴
macOSでは、OllamaはGUIアプリとして動作(メニューバーにアイコンが表示)し、バックグラウンドでデーモンを起動します。シェル内で定義された環境変数はGUIアプリに反映されません。launchctlを使用するか、アプリ自体を編集する必要があります。
- 01Ollamaを完全に終了するメニューバーのラマのアイコンをクリックし、→「Quit Ollama」を選択してください。ps aux | grep ollamaで、何も動作していないことを確認してください。
- 02launchctlレベルで変数を設定するターミナルでlaunchctl setenv OLLAMA_HOST "0.0.0.0:11434"を実行し、続いてlaunchctl setenv OLLAMA_ORIGINS "*"を実行します。これらの変数は、その後に起動されるすべてのGUIアプリケーションに継承されます。
- 03Ollama.appを再起動アプリケーション → Ollama.app を開いてください。アプリは環境を再読み込みし、0.0.0.0 でリスニングします。
- 04再起動後も設定を保持するlaunchctl setenvで設定した内容は、再起動後には保持されません。永続化するには、~/Library/LaunchAgents/com.ollama.env.plistにLaunchAgentを作成するか(Appleのドキュメントを参照)、起動スクリプトからsetenvを再実行してください。
#4. クライアントを接続する
LAN内の別のマシンから実行する場合、サーバーのIPアドレスがすべてのコマンドおよび設定で localhost に代わって使用されます。
ollama 用の CLI では、クライアント側で OLLAMA_HOST をエクスポートします — サーバー側へのコマンド ollama run pointe を実行します。
- Open WebUI
- Settings → Connectionsで、http://192.168.1.42:11434 をOllama API URLとして追加してください。インターフェースはLAN内の任意のマシンで動作します。
- Continue.dev (VS Code)
- config.json では、ollama プロバイダーの apiBase フィールドが http://192.168.1.42:11434 を指しています。
- LangChain Python
- Ollama(base_url="http://192.168.1.42:11434", model="qwen3.5:9b") — ローカル環境での localhost と同様です。
#5. Nginxによるリバースプロキシ + 基本認証
Ollamaを認証などを付けずにLAN上で公開する形でも家族で使うには十分ですが、チームで使うなら、最低限HTTP Basic認証と簡単なログ記録を追加するのがよいでしょう。Nginxなら20行で実現できます。
重要:この構成では、Ollamaの待ち受けアドレスを127.0.0.1:11434に戻す必要があります(0.0.0.0ではありません)。Nginxは外部からアクセスできるポート8080で待ち受け、IPアドレスとパスワードを確認してから、ローカルのOllamaに転送します。以後、クライアントは http://alice:motdepasse@192.168.1.42:8080 にアクセスします。
#セキュリティに関するベストプラクティス
- ファイアウォールで送信元 IP アドレスに基づいてアクセスを制限する
- 念には念を入れて、Nginxを使っていてもUFW/iptablesのルールは維持してください。Nginxのバグや誤ったバインド設定によって、ポート11434が直接公開される可能性があります。
- 外部からの /api/create を無効にする
- このエンドポイントでは、任意のModelfileを送信できます。Nginxを使用している場合は、location /api/create { return 403; } を追加してください。
- リクエストのログ記録
- Nginxのaccess_logには、誰が何を呼び出しているかが記録されます。サーバーのIPアドレスの漏えいや、設定ミスでリクエストを大量送信しているクライアントを見つけるのに役立ちます。
- ユーザーごとのクォータ
- Ollama には標準では備わっていません。午前 3 時に大規模な生成ジョブを実行する Bob の利用を制限したい場合は、ミドルウェアとして LiteLLM や Open WebUI を検討してください。
- ~/.ollamaをバックアップする
- 中央に集約したサーバーは単一障害点になります。モデルのフォルダは100 GB以上になることがあります。最低限、外部ディスクへバックアップするrsyncスクリプトを用意してください。
#トラブルシューティング
- クライアントから接続すると「Connection refused」が表示される
- Ollamaがまだ127.0.0.1で待ち受けています。サーバー上でss -tlnp | grep 11434を実行して確認してください。127.0.0.1:11434が表示される場合、サービスがOLLAMA_HOST変数を認識していません。systemctl show ollama | grep Environmentで再確認してください。
- Connection timed out
- ファイアウォールがブロックしています。クライアントから nc -zv 192.168.1.42 11434 を実行してみてください。タイムアウトした場合はファイアウォールが原因です。拒否された場合は Ollama がリスニングしていません。
- Open WebUIにおけるCORSエラー
- OLLAMA_ORIGINS=*が設定されていないか、適用されていません。デバッグには、curl -H "Origin: http://autre-machine" -I http://192.168.1.42:11434を実行してください。レスポンスにはAccess-Control-Allow-Originが含まれている必要があります。
- macOS:再起動後に変数が無視されます
- launchctl setenvの設定は再起動後に保持されません。LaunchAgentが必要です。実用的な代替案は、launchctl setenvとopen Ollama.appを実行するスクリプト~/start-ollama.shを用意し、再起動するたびに手動で実行することです。
- 複数ユーザーでの急激な遅延
- Ollama はモデルごとにリクエストをキューで処理します。14B モデルで3人のユーザーが同時にアクセスした場合、3番目のユーザーは待機します。OLLAMA_NUM_PARALLEL=2(環境変数)を設定することで、並列リクエストを2つ可能にできますが、VRAM の使用量が増加します。
- リクエストの合間にモデルがアンロードされる
- デフォルトでは、Ollamaは最後のリクエストから5分後にモデルをメモリからアンロードします。OLLAMA_KEEP_ALIVE=24hを設定すると、モデルをVRAMに保持するよう強制できます。共有サーバーでは極めて重要です。
#さらに詳しく
共有のOllamaサーバーは、複数ユーザーで利用する環境の基盤です。そこからの自然な発展方向は3つあります。
- 共有チャットインターフェースを追加する
- 「Open WebUIとOllama:完全ガイド」では、このサーバーに接続する、複数ユーザー向けのChatGPT風フロントエンドの構築方法を詳しく説明しています。
- Dockerで本番環境にデプロイ
- 「LLMをDocker Composeでプロダクション環境にデプロイする」ガイドでは、TraefikとHTTPSを用いたコンテナ化された同じアーキテクチャが示されています。
- イントラネット用チャットボットへ拡張する
- ガイド「イントラネット上でチーム向けAIチャットボットを導入する」では、SSO認証、モニタリング、会話のバックアップを追加します。
ご意見、誤りのご指摘、補足はありますか?ぜひお知らせください。皆さんにとってより良いガイドにするために役立ちます。