🌐 【Windows】Ollamaをローカルネットワークからアクセス可能にする方法（環境変数GUI & CORS設定版）

### **はじめに**

[前回の記事](https://qiita.com/FumiyaHr/items/640186ed9e76b95a5dd9)（または他の情報）を参考に、Windows PCにOllamaをインストールし、ローカル環境でLLMを動かせるようになった皆さん、素晴らしいです！

ローカルで動かすことでプライバシーが守られ、オフラインでも利用できるメリットがありますが、さらに一歩進んで「**同じローカルネットワークに繋がっている別のPCやデバイスから、そのOllama環境を利用したい**」と考えることもあるでしょう。例えば、ノートPCでセットアップしたOllama環境を、より高性能なデスクトップPCから利用したり、スマホアプリからアクセスしたり、チーム内で共有したりといったケースです。

この記事では、既にOllamaがインストールされているWindows PC（以降、**OllamaサーバーPC**と呼びます）を、ローカルネットワークからアクセス可能にするための設定方法を解説します。環境変数の設定はWindowsのGUIを通して行い、クロスオリジンリソース共有（CORS）のための `OLLAMA_ORIGINS` 設定も合わせて行います。

※ Ollamaの基本的な説明やWindowsへのインストール方法については、[前回の記事](https://qiita.com/FumiyaHr/items/640186ed9e76b95a5dd9) または 公式ドキュメント ([https://ollama.com/](https://ollama.com/)) 等をご参照ください。この記事では、Ollamaがインストール済みであることを前提とします。

### **前提条件**

* **OllamaサーバーPC:**  
  * Windows 10 以降 (64-bit) がインストールされており、Ollamaが正常に動作していること。  
  * ローカルネットワークに接続されていること。  
* **リモートPC:**  
  * OllamaサーバーPCと同じローカルネットワークに接続されていること。  
  * `curl` コマンドなどが実行できるターミナル環境があること（動作確認に使用します）。  
* ネットワークに関する基本的な知識（IPアドレス、ポート、Firewallなど）があると、より理解が深まります。

### **なぜデフォルトではリモートアクセスできないのか？**

Ollamaをデフォルトでインストールすると、そのAPIは通常 `127.0.0.1` (localhost) というIPアドレスのポート `11434` でリッスンしています。

`127.0.0.1` は自分自身のPCを指す特別なIPアドレスです。そのため、デフォルトの状態では、OllamaをインストールしたPC上からしかそのAPIにアクセスできません。これはセキュリティのため、外部からの意図しないアクセスを防ぐための一般的な設定です。

リモートのPCからアクセスするためには、Ollamaがネットワーク上のIPアドレス（ローカルネットワーク内でPCに割り当てられているIPアドレス）でリッスンするように設定を変更し、さらにWindows Firewallでその通信を許可する必要があります。加えて、ブラウザからのアクセスを考慮する場合は、CORSに関する設定も行います。

### **Ollamaのネットワーク設定とCORS設定を変更する (`OLLAMA_HOST`, `OLLAMA_ORIGINS`)**

Ollamaがどのネットワークインターフェースでリッスンするかは `OLLAMA_HOST` 環境変数、そしてブラウザからのクロスオリジンリクエストをどこまで許可するかは `OLLAMA_ORIGINS` 環境変数で制御します。これらの環境変数をWindowsのGUIを使って設定します。

1. **「システム環境変数」設定画面を開く:**  
   * Windowsの検索バーに「環境変数」と入力し、「環境変数を編集」を選択します。  
   * 「システムのプロパティ」ウィンドウが開いたら、「詳細設定」タブの「環境変数(N)...」ボタンをクリックします。

2. **`OLLAMA_HOST` を設定:**  
   * 「システム環境変数」のリストを確認します。もし既に `OLLAMA_HOST` が存在する場合はそれを選択して「編集(E)...」、存在しない場合は「新規(N)...」をクリックします。Ollamaはサービスとして動作するため、「システム環境変数」に設定するのが推奨です。  
   * **変数の名前:** `OLLAMA_HOST`  
   * **変数の値:** `0.0.0.0`  
     * `0.0.0.0` を指定すると、OllamaはそのPCに割り当てられている全てのネットワークインターフェースのIPアドレスでリッスンするようになります。  
     * 特定のIPアドレス（例: `192.168.1.100` など、OllamaサーバーPCのローカルIPアドレス）を指定することも可能ですが、通常は `0.0.0.0` が手軽です。  
   * 「OK」をクリックします。

3. **`OLLAMA_ORIGINS` を設定:**  
   * 同様に、「システム環境変数」で `OLLAMA_ORIGINS` が存在する場合は編集、存在しない場合は新規作成します。  
   * **変数の名前:** `OLLAMA_ORIGINS`  
   * **変数の値:** リモートからOllama APIにアクセスするアプリケーションが動作する「Origin」を指定します。Originとは、通常はスキーム（http/https）、ホスト名、ポート番号の組み合わせです（例: `http://localhost:3000`, `https://your-app.com`）。  
     * 複数のOriginを許可する場合はカンマ区切りで指定します。（例: `http://localhost:3000,http://192.168.1.50:8080`）  
     * **ローカルネットワーク内での簡易的なテストや、あらゆるOriginからのアクセスを許可したい場合は `*` を指定します。** ただし、`*` はセキュリティリスクを高める可能性がある（特にOllamaサーバーがインターネットに露出している場合）ため、**本番環境や公開環境では特定のOriginを指定することを強く推奨します。**  
   * 例として、ローカルネットワークからの利用であれば `*` を指定しておくと手軽です。  
     * **変数の値:** `*`  
   * 「OK」をクリックします。

4. **設定の確定:**  
   「環境変数」ウィンドウ、「システムのプロパティ」ウィンドウの全てで「OK」をクリックし、設定を確定します。  
5. **Ollamaサービスの再起動:**  
   設定した環境変数をOllamaサービスに反映させるためには、Ollamaサービスを再起動する必要があります。  
   * Windowsの検索バーに「サービス」と入力し、「サービス」アプリを開きます。  
   * サービスの一覧の中から「Ollama」を探します。  
   * 「Ollama」を右クリックし、「再起動」を選択します。

これにより、新しい `OLLAMA_HOST` と `OLLAMA_ORIGINS` の設定でOllamaサービスが起動します。

### **Windows Firewallの設定**

次に、外部（ローカルネットワーク上の他のPC）からのポート `11434` へのアクセスをWindows Firewallで許可します。この手順は前回の記事と同様です。

1. **「セキュリティが強化されたWindows Defenderファイアウォール」を開く:**  
   Windowsの検索バーに「ファイアウォール」と入力し、「セキュリティが強化されたWindows Defenderファイアウォール」を選択します。  
2. **「受信の規則」を開く:**  
   左側のメニューから「受信の規則」を選択します。  
3. **新しい規則を作成する:**  
   右側の操作メニューまたは「操作」メニューから「新しい規則...」を選択します。  
4. **規則の種類を選択:**  
   「ポート」を選択し、「次へ」をクリックします。  
5. **プロトコルとポートを選択:**  
   * 「TCP」を選択します。  
   * 「特定のローカルポート」を選択し、テキストボックスに「`11434`」と入力します。  
   * 「次へ」をクリックします。  
6. **操作を選択:**  
   「接続を許可する」が選択されていることを確認し、「次へ」をクリックします。  
7. **プロファイルを選択:**  
   この規則を適用するネットワークプロファイルを選択します。  
   * **ローカルネットワークからのアクセスのみを許可したい場合は、「ドメイン」と「プライベート」にチェックを入れ、「パブリック」のチェックを外すのが最も安全です。** 公共のネットワークでは絶対に「パブリック」にチェックを入れないでください。 選択後、「次へ」をクリックします。  
8. **規則の名前を設定:**  
   この規則を識別するための名前を入力します。例えば「Ollama API」など、分かりやすい名前をつけます。必要であれば説明も追加できます。  
9. **完了:**  
   「完了」をクリックして規則を作成します。

これで、ローカルネットワークからのOllama API (ポート 11434) へのアクセスがWindows Firewallによって許可されました。

### **リモートPCからの動作確認**

OllamaサーバーPCの設定が完了したら、実際にローカルネットワーク上の別のPCからアクセスできるか確認してみましょう。

1. **OllamaサーバーPCのローカルIPアドレスを確認:**  
   OllamaサーバーPCのコマンドプロンプトまたはPowerShellを開き、以下のコマンドを実行します。  
   ```Bash  
   ipconfig
   ```

   表示される情報の中から、「IPv4 アドレス」または「IPoE IPv4 アドレス」などの項目を探し、ローカルネットワークで割り当てられているIPアドレスをメモしておきます（例: `192.168.1.100` など）。  
   
2. **リモートPCからAPIへアクセス:**  
   リモートPCのターミナル（コマンドプロンプト、PowerShell、またはLinux/macOSのターミナル）を開き、`curl` コマンドを使ってOllamaサーバーPCのAPIにアクセスします。Ollamaが現在利用可能なモデルの一覧を取得するAPIエンドポイント `/api/tags` を叩いてみるのが手軽な確認方法です。  
   以下のコマンドを実行します。`<OllamaサーバーPCのIPアドレス>` の部分は、先ほど確認したIPアドレスに置き換えてください。  
   ```Bash  
   curl http://<OllamaサーバーPCのIPアドレス>:11434/api/tags
   ```

3. **実行結果の確認:**  
   * 成功した場合:  
     インストール済みのモデル一覧がJSON形式で返ってきます。  
     ```JSON  
     {"models":[{"name":"mistral:latest","modified_at":"2023-11-28T10:02:07.2245554Z","size":4100000000,"digest":"9edb21444a07c814b2b3d15c04785ac929420e9084e211060ad65b49c71a61c5"}]}
     ```

     このような応答が表示されれば、リモートからのアクセスは成功です！これで、リモートPC上のアプリケーションやスクリプトから、このOllamaサーバーを利用できるようになりました。ブラウザからアクセスする場合も、`OLLAMA_ORIGINS` の設定が正しければCORSエラーは発生しないはずです。  
   * 失敗した場合:  
     「トラブルシューティング」のセクションを参照してください。

### **セキュリティ上の注意点（重要！）**

Ollamaをローカルネットワークに公開する際に、**最も重要な注意点**があります。

**現在のOllama APIには、認証機能がありません。**

これは、OllamaサーバーPCのIPアドレスとポート番号（11434）さえ分かれば、**同じネットワーク上の誰でも**以下の操作ができてしまうことを意味します。

* Ollamaサーバー上で稼働しているLLMを利用する  
* 新しいモデルをダウンロードする (`/api/pull`)  
* 既存のモデルを削除する (`/api/delete`)  
* その他のAPIエンドポイントにアクセスする

**したがって、Ollamaをローカルネットワークに公開する際は、以下の点に十分注意してください。**

* **必ず信頼できるローカルネットワーク内でのみ公開してください。** 公共のWi-Fiなど、不特定多数の人が接続するネットワークでは絶対に公開しないでください。  
* `OLLAMA_ORIGINS` はブラウザからの「クロスオリジンリクエスト」に対する制限であり、`curl` やPythonスクリプトなどの**ブラウザ以外からの直接的なAPIアクセスに対する認証・認可機能ではありません。** `OLLAMA_ORIGINS="*"` と設定しても、ブラウザ以外のツールからは制限なくアクセス可能です。  
* 可能であれば、アクセス元IPアドレスを特定のPCに限定するようなFirewall設定を行うことを検討してください。（Windows Firewallの「スコープ」設定で可能です）  
* よりセキュアに運用したい場合は、Ollamaの前にリバースプロキシ（Nginx, Caddyなど）を立てて認証をかける、VPN経由でのみアクセス可能にする、といった方法も検討できます（これらの方法は設定が複雑になるため、必要に応じて別途情報収集してください）。

**これらのリスクを理解した上で、自己責任において設定を行ってください。**

### **トラブルシューティング**

* **環境変数が正しく設定されているか？** OllamaサーバーPCで**新しいコマンドプロンプト**を開き、`echo %OLLAMA_HOST%` および `echo %OLLAMA_ORIGINS%` と入力してEnterキーを押してください。設定した値が表示されるか確認してください。もし表示されない場合は、環境変数の設定が間違っているか、新しい環境変数が反映されていません。PC再起動やサービスの再起動を試してください。  
* **Ollamaサービスは起動しているか？** サービスの管理画面で「Ollama」サービスが「実行中」になっているか確認してください。  
* **Windows Firewallの規則は有効か？** 「セキュリティが強化されたWindows Defenderファイアウォール」の「受信の規則」で、作成した規則（例: Ollama API）が「有効」になっているか確認してください。また、規則が適用されるプロファイル（ドメイン、プライベートなど）が、現在PCが接続しているネットワークプロファイルと一致しているか確認してください。  
* **リモートPCとOllamaサーバーPCは同じネットワークにいるか？** リモートPCからOllamaサーバーPCのIPアドレスに対して `ping <OllamaサーバーPCのIPアドレス>` コマンドを実行し、応答があるか確認してください。応答がない場合は、ネットワーク接続自体に問題があります。  
* **指定したIPアドレスは正しいか？** リモートPCの `curl` コマンドで指定したIPアドレスが、OllamaサーバーPCのローカルIPアドレスと一致しているか再確認してください。  
* **ブラウザからアクセスする場合にCORSエラーが出る場合:** `OLLAMA_ORIGINS` 環境変数の値が、アクセス元のWebページのOriginと一致しているか確認してください。一時的に `*` に設定してみて、それで動くか確認するのもデバッグの手法としては有効です（ただし、確認後は適切な値に戻してください）。

### **おわりに**

この記事では、Windows PC上のOllama環境をローカルネットワークからアクセス可能にするための設定手順を、環境変数GUIでの設定方法と `OLLAMA_ORIGINS` の利用を含めて解説しました。

これにより、ローカルネットワーク内の様々なデバイスからOllamaの強力なLLM機能を利用できるようになり、活用の幅が大きく広がるでしょう。

ただし、繰り返しますが、APIには認証機能がなく、**セキュリティ上の注意点を十分に理解し、信頼できるネットワーク環境でのみ利用する**ようにしてください。

あなたのローカルLLM活用がさらに進むことを願っています！