SSH トンネルで Ollama をリモート利用する方法
はじめに
Ollama をリモートサーバーにインストールし、ローカルマシンから安全かつ便利に利用する方法として、SSH のポートフォワーディング(SSH トンネル)を活用できます。本記事では、Ubuntu サーバー上で動作する Ollama に対して、ローカルマシンの VSCode から接続する手順をまとめます。
ローカルでの Ollama + Continue 環境の構築方法が分かっている方に向けて、先に差分を書いておきます。
-
SSH でポートフォワーディングする
ssh -L 11434:localhost:11434 <ユーザー名>@<サーバーのIP>
-
Continue の設定ファイル
apiBase
を指定する"models": [ { "model": "hf.co/elyza/Llama-3-ELYZA-JP-8B-GGUF", "title": "[LLM server] Llama-3-ELYZA-JP-8B-GGUF", "apiBase": "http://localhost:11434", "provider": "ollama" } ], "tabAutocompleteModel": { "model": "qwen2.5-coder:3b", "title": "[LLM server] qwen2.5-coder:3b", "apiBase": "http://localhost:11434", "provider": "ollama" }
1. サーバー側の設定
以下は、Ubuntu server 22.04 環境での設定方法です。
1.1 Ollama のインストール
リモートサーバー (Ubuntu) に Ollama をインストールします。
curl -fsSL https://ollama.com/install.sh | sh
インストール後、Ollama が正しく動作するか確認します。
以下のコマンドを実行すると、Ollama サーバーがバックグラウンドで起動します。
ollama serve
Ollama はデフォルトで 11434 番ポートを使用します.11434 は llama の leetspeak(l→1, a→4, m→3)だそうです.
バックグラウンドで起動した Ollama サーバーの状態を確認するには、systemctl
コマンドを実行します。
sudo systemctl status ollama
-
active (running)
と表示されていれば、Ollama サーバーが正常に動作中です。 -
inactive (dead)
またはfailed
の場合は、動作していません。
1.2 LLM モデルのインストール
チャット用とコード補完用のモデルをインストールします。今回は次のモデルを使用します。
- チャット用:Llama-3-ELYZA-JP-8B
- コード補完用:qwen2.5-coder:3b
# チャット用に ELYZA をインストール
ollama pull hf.co/elyza/Llama-3-ELYZA-JP-8B-GGUF
# コード補完用に Qwen2.5 をインストール
ollama pull qwen2.5-coder:3b
インストールしたモデルを確認するには、次のコマンドを実行します。
ollama list
設定後、サーバー上での 11434 ポートで ollama が正常に動作しているか確認します。
curl http://localhost:11434/api/tags
JSON 形式でモデルのリストが返ってくれば、問題ありません。
1.3 ファイアウォールの確認(ufw を使用している場合)
ufw
を使用している場合、ポート 11434
を開放します。
sudo ufw allow 11434/tcp
ufw
を使用していない場合、追加の設定は不要ですが、他のファイアウォールソフトウェア(iptables
など)が有効になっている場合は、それに応じた設定を行ってください。
設定後、サーバー上で ollama が正常に動作しているか確認します。
curl http://localhost:11434/api/tags
JSON 形式でモデルのリストが返ってくれば、問題ありません。
2. ローカルマシンでの SSH トンネル設定
2.1 手動で SSH トンネルを確立する
ローカルマシンで以下のコマンドを実行し、SSH トンネルを確立します。
ssh -L 11434:localhost:11434 <ユーザー名>@<サーバーのIP>
これにより、ローカルマシンの localhost:11434
がリモートサーバーの localhost:11434
に転送されます。
動作確認として、ローカルマシンで以下を実行します。
curl http://localhost:11434/api/tags
JSON 形式のレスポンスが得られれば、SSH トンネルは正常に動作しています。
2.2 SSH 設定ファイルにトンネル設定を追加
毎回手動で SSH コマンドを入力するのは手間なので、~/.ssh/config
に以下を追加すると簡単にトンネルを張ることができます。
Host my-ollama-server
HostName <サーバーのIP>
User <ユーザー名>
IdentityFile ~/.ssh/id_rsa # SSH キーを指定
LocalForward 11434 localhost:11434
その後、以下のコマンドで SSH 接続すると、自動的にポートフォワーディングが適用されます。
ssh my-ollama-server
3. VSCode の Continue で Ollama に接続する
3.1 Continue のインストール
VSCode の Marketplace で Continue
を検索し、インストールします。
オフライン環境で Continue
をインストールする場合は、以下のリンクの指示に従ってください。
3.2 Continue の設定
Continue の設定ファイル config.json
の models
と tabAutocompleteModel
を以下のように設定します。
{
"models": [
{
"model": "hf.co/elyza/Llama-3-ELYZA-JP-8B-GGUF",
"title": "[LLM server] Llama-3-ELYZA-JP-8B-GGUF",
"apiBase": "http://localhost:11434",
"provider": "ollama"
}
],
"tabAutocompleteModel": {
"model": "qwen2.5-coder:3b",
"title": "[LLM server] qwen2.5-coder:3b",
"apiBase": "http://localhost:11434",
"provider": "ollama"
}
}
リモートの Ollama を呼び出すために、apiBase
を http://localhost:11434
に設定します。これにより、ローカルマシンのポート 11434
の通信がサーバー側のポート 11434
にリダイレクトされます。
3.3 Continue から接続テスト
Continue の Chat からプロンプトを送信し、応答が返ってくることを確認します。
Discussion