💡

SSH トンネルで Ollama をリモート利用する方法

2025/02/21に公開

はじめに

Ollama をリモートサーバーにインストールし、ローカルマシンから安全かつ便利に利用する方法として、SSH のポートフォワーディング(SSH トンネル)を活用できます。本記事では、Ubuntu サーバー上で動作する Ollama に対して、ローカルマシンの VSCode から接続する手順をまとめます。

ローカルでの Ollama + Continue 環境の構築方法が分かっている方に向けて、先に差分を書いておきます。

  1. SSH でポートフォワーディングする

    ssh -L 11434:localhost:11434 <ユーザー名>@<サーバーのIP>
    
  2. 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)だそうです.

Why does ollama use the port 11434 as the default port?

バックグラウンドで起動した Ollama サーバーの状態を確認するには、systemctl コマンドを実行します。

sudo systemctl status ollama
  • active (running) と表示されていれば、Ollama サーバーが正常に動作中です。
  • inactive (dead) または failed の場合は、動作していません。

1.2 LLM モデルのインストール

チャット用とコード補完用のモデルをインストールします。今回は次のモデルを使用します。

# チャット用に 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 Marketplace Link

オフライン環境で Continue をインストールする場合は、以下のリンクの指示に従ってください。

Continue: Running without internet

3.2 Continue の設定

Continue の設定ファイル config.jsonmodelstabAutocompleteModel を以下のように設定します。

{
  "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 を呼び出すために、apiBasehttp://localhost:11434 に設定します。これにより、ローカルマシンのポート 11434 の通信がサーバー側のポート 11434 にリダイレクトされます。

3.3 Continue から接続テスト

Continue の Chat からプロンプトを送信し、応答が返ってくることを確認します。

Discussion