ローカルLLMを外部PC/スマホで!【ngrok+Open WebUI+Ollama】

【全ての文章を、無料でお読みいただけます】
「家のGPU上で、Ollama + Open WebUIを用いてローカルLLMを動かしている。これを外部PC・スマホでも利用できるようにしたい!」
そんな方には良いメモかもしれません。

Ollama + Open WebUIを用いたローカルDeepSeek-R1の実行画面

1. はじめに

 先日、DeepSeek社から高性能なLLM「R1」が発表され、話題になっています。しかし、DeepSeek ChatやAPIを使用する際には、サーバーが中国国内にある関係から情報流出の危険性があると指摘されています。
 そこで、安全にローカルなLLMを運用しつつ、外部からもアクセスできるようにする方法として、ngrok を活用する手順を解説します。

本記事の目的:
✅ ngrokを使ってローカル環境を外部に公開する方法を学ぶ
✅ どこからでもアクセス可能なURLを作成する方法を学ぶ
✅ 外部からの継続的な接続を可能にする方法を学ぶ

注意:
Ollama + Open WebUIの詳細な使い方については、別記事に譲ります。これらを準備ができた前提で話を続けます。

システムの外観:

実際にローカルLLMを推論しているPC・サーバーは別でもOKです。
これを利用しているローカルホストに接続できるマシン(上図におけるLocal Machine)さえあれば十分です。

2. ngrokのインストールと設定

2.1 ngrokの公式サイトでサインイン

  1. ngrok公式サイトにアクセスし、サインイン

2.2 ngrokインストール

「Choose another platform」から使用するOSを選択

Ubuntuの場合:

curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc \
| sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null \
&& echo "deb https://ngrok-agent.s3.amazonaws.com buster main" \
| sudo tee /etc/apt/sources.list.d/ngrok.list \
&& sudo apt update \
&& sudo apt install ngrok

Windowsの場合:

choco install ngrok

2.3 ngrokの認証

公式サイトでAuthtokenを取得し、以下のコマンドを実行:

ngrok config add-authtoken <your_auth_token>

※ <your_auth_token>も準備された状態でコピペできるようになっているはずです。

3. ngrokでローカルサーバーを公開する

ローカルで動作しているサーバー(例: ポート8080)を外部に公開するには、以下のコマンドを実行します。

ngrok http localhost:8080

http~の様に、URL形式で投げるとエラーになります。
localhost:8080とありますが、例えば「127.00.00:8080」のような感じです。
実行後、以下のような情報が表示されます:

Session Status  online
Account        example@example.com (Plan: Free)
Version        3.19.1
Region         Japan (jp)
Web Interface  http://127.0.0.1:4040
Forwarding     https://example.ngrok-free.app -> http://localhost:8080

この中で、https://example.ngrok-free.app が外部からアクセス可能なURLです。このURLを使用して、外部からローカルサーバーにアクセスできます。

これで一応、外部PC、スマホからローカルLLMを使用できるようになりました。

4. URL固定

ユーザーごとに 1 つの無料の静的ドメインを取得できます。
公式サイトのサイドバーから、Domainsを開きます。

ドメインを設定します。

ngrok http --url=domain-example.ngrok-free.app localhost:8080

のようにして、再度実行をすると、ドメインが固定されます。
URLをブックマークして大丈夫です。これで、毎回URLをコピペする必要がなくなりました。

5. 継続的な接続を可能にする

接続するトンネルを維持しておくためには、ngrokを継続的に実行しておく必要があります。通常の方法ではターミナルを開いたままにする必要がありますが、これでは他の作業がしにくくなります。そこで、tmuxを用いて、ターミナルウィンドウを閉じてもセッションが切れないように設定します。

  • tmuxセッションの作成

新しいtmuxセッションを作成します。今回は例として、セッション名を「ngrok_session」とします。

tmux new -s ngrok_session
  • ngrokの実行

tmuxセッション内でngrokコマンドを実行します。以下のコマンドを入力してください。

ngrok http --url=domain-example.ngrok-free.app 8080
  • tmuxセッションからのデタッチ

次のような情報を表示させたままtmuxセッションからデタッチします。

Session Status  online
Account        example@example.com (Plan: Free)
Version        3.19.1
Region         Japan (jp)
Web Interface  http://127.0.0.1:4040
Forwarding     https://example.ngrok-free.app -> http://localhost:8080

これにより、ngrokプロセスはバックグラウンドで実行され続けます。
※デタッチの手順: Ctrl + B を押してから D を押します。

  • tmuxセッションへの再接続

後でngrokのログを確認したり、ngrokを停止したりする必要がある場合は、再度tmuxセッションに接続します。

tmux attach -t ngrok_session

これで、PCの電源を切らない限りローカルLLMを、毎回同じURLで、外部PC・スマホから利用することができるようになりました🎉

6. セキュリティに関する注意点

  • URLの取り扱い: 生成されたURLは公開されると誰でもアクセス可能になります。Basic認証を設定するなど、適切なアクセス制御を行いましょう。

  • 一時的な利用: ngrokのURLは一時的なものです。永続的なサービス提供には向いていません。

  • アクセスログの確認: Web Interface(`http://127.0.0.1:4040`)で、誰がいつアクセスしたかを定期的に確認しましょう。

  • ファイアウォール設定: 必要なポートのみを開放し、不要なアクセスを制限することをお勧めします。

5. まとめ

  • ngrokで簡単にローカル環境を外部公開

  • SSHなしでどこからでもアクセス可能

  • セキュリティに十分注意して利用することが重要

おすすめ

未踏にて、僕のPMやボスが脳型人工知能(リザバー計算)のセミナーやるみたいです。
面白そう!

ここから先は

0字

¥ 100

この記事が気に入ったらチップで応援してみませんか?