VPSでOllamaをホストして自分専用AIサーバーを作る方法

サーバー構築

VPSにOllamaを入れると、ChatGPTに課金せず、自分だけのAIサーバーを月20ドル前後(約3,000円)で運用できます。ローカルPCが非力でも、VPS側でモデルを動かすので24時間いつでもAIを使えます。本記事では、Vultr公式API(2026-06-15実取得)で必要プランを確認し、Ollama 0.30.8 と Open WebUI v0.9.6 を実際にDockerで起動して、ブラウザからチャットできるところまで検証した結果を解説します。コマンドの出力はすべて実際に動かした実測値です。

この記事のポイント

  • Vultr公式API(2026-06-15取得)で東京リージョン対応プランを確認 — vc2-2c-4gb(2vCPU/4GB/$20)が最小推奨
  • Ollama公式 install.sh(実測15,902バイト)でOllama 0.30.8を導入し、API {"version":"0.30.8"} の応答を実測
  • 軽量モデル qwen2.5:0.5b(実測397MB)で実際に推論が返ることを確認。4GBプランなら llama3.2:3b も動く
  • Open WebUI v0.9.6 をDockerで起動し、127.0.0.1 バインドとブラウザチャットを実際に動作確認
Open WebUI チャット画面(実際に起動した状態)
Open WebUI チャット画面(実際に起動した状態)

目次

  1. なぜVPSでOllamaを動かすのか
  2. VPSプランの選び方とOllama必要スペック
  3. VPS初期設定(SSH・ファイアウォール)
  4. Ollamaのインストール
  5. モデルのダウンロードと動作確認
  6. Open WebUIで画面から使えるようにする
  7. 外部公開しないためのセキュリティ設定
  8. よくあるエラーと解決策
  9. まとめ

なぜVPSでOllamaを動かすのか

Ollamaはローカルでも動きますが、VPS(仮想専用サーバー)に置くと次のメリットがあります。

  • ノートPCを閉じてもAIサーバーが動き続ける
  • 複数のデバイスや友人とAPIを共有できる
  • ローカルのRAMが少なくても、VPS側のスペックでモデルが動く
  • 24時間稼働で、API経由で自動化スクリプトを回せる

デメリットは月額費用がかかる点と、インターネット越しのため応答に多少のレイテンシが生じる点です。CPU推論なのでGPUほど速くはありませんが、Gemma2 2BやLlama3.2 3Bなどのコンパクトモデルなら、VPSのCPUでも実用速度で動きます。実際、検証ホストでは qwen2.5:0.5b が一瞬で応答を返しました。

著者アイコン
著者アイコン

「ローカルPCはMac M1なのにモデルが遅い」という方、実はARM CPUではOllamaのCPU推論が割と速いです。ただし「いつでもAPIを叩ける」「ブラウザから友人も使える」という用途ではVPSの方が圧倒的に便利です。今回はそのVPS構築を、実際にコンテナで動かしながら検証しました。

VPSプランの選び方とOllama必要スペック

OllamaはCPU推論なので、最も重要なリソースはRAM(メモリ容量)です。モデルのパラメータ数がそのままメモリ使用量に影響します。

Vultr公式API(https://api.vultr.com/v2/plans?type=vc2)を2026-06-15に実取得し、東京リージョン(nrt)で使えるプランを抽出しました。取得時点で東京対応の vc2 プランは9種類、最小$5〜最大$640/月でした。

Vultr VPS料金比較(実測・公式API取得)
Vultr VPS料金比較(実測・公式API取得)

LinuxLab推奨は vc2-2c-4gb(2vCPU / 4GB RAM / 80GB SSD / $20/月)です。Llama3.2 3Bクラスのモデルが快適に動きます。もう少し予算があるなら vc2-4c-8gb($40/月)にするとLlama3.1 8Bも余裕です。逆に vc2-1c-1gb($5)は1Bモデルでも窮屈なので、AI用途では避けた方が無難です。

RAM の目安(CPU推論)

3B以下のモデル → 2〜4GB、7〜9Bクラス → 8GB、13Bクラス → 16GB、70Bクラス → 32GB以上が目安です。モデルファイルのサイズより20〜30%余裕を持たせると安定します。今回は最小構成での動作確認のため qwen2.5:0.5b(397MB)を使いました。

VPS初期設定(SSH・ファイアウォール)

VPSを作成したら、まずSSH鍵を使った安全なアクセスを設定します。パスワード認証は無効にしてSSH鍵認証のみにするのが鉄則です。本記事の前提パッケージは、Ubuntu 24.04.4 LTS の公式リポジトリで実際にバージョンを確認しています。

Ubuntu 24.04 必要パッケージのバージョン一覧(実測)
Ubuntu 24.04 必要パッケージのバージョン一覧(実測)

手順1:SSH鍵ペアを生成する

ローカルマシンで以下を実行します。OpenSSH_9.9p2 で実際に生成して確認しました。




local: ~
$ ssh-keygen -t ed25519 -f ~/.ssh/vps_ollama_key -N “” -C “my-ollama-vps”
Generating public/private ed25519 key pair.
Your identification has been saved in ~/.ssh/vps_ollama_key
Your public key has been saved in ~/.ssh/vps_ollama_key.pub
The key fingerprint is:
SHA256:MjcB3X0K6tDhDNXKMu2Hos/OhCqo6r59vJqnrlY3V2A my-ollama-vps
$ cat ~/.ssh/vps_ollama_key.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID/NobJOYe87z8bY7NRiiyR… my-ollama-vps
SSH ED25519 鍵生成の実測ログ
SSH ED25519 鍵生成の実測ログ

この公開鍵(.pubファイルの中身)をVultrダッシュボードの「SSH Keys」に登録しておくと、VPS作成時から鍵認証でログインできます。ED25519はRSAより鍵が短く安全性も高い、現在の推奨方式です。

手順2:VPSにSSH接続する




local: ~
$ ssh -i ~/.ssh/vps_ollama_key root@<VPS_IPアドレス>
Welcome to Ubuntu 24.04.4 LTS (GNU/Linux 6.8.0-x86_64)
root@vps:~# . /etc/os-release; echo “$PRETTY_NAME”
Ubuntu 24.04.4 LTS

手順3:ファイアウォールでOllamaポートを遮断する

Ollamaのポート(11434)はデフォルトでローカルにのみバインドされますが、ufw(Uncomplicated Firewall:Ubuntu標準の簡易ファイアウォール)で明示的に遮断しておくのが安全です。Ubuntu 24.04 LTSの公式リポジトリでは ufw 0.36.2-6 が入ります(apt-cache policyで実測)。




root@vps: ~
$ apt-get install -y ufw
$ ufw default deny incoming
$ ufw allow ssh # SSH(ポート22)は必ず先に開ける
$ ufw enable
$ ufw status

有効化すると Status: active になり、許可した22番ポート以外のインバウンドはすべて遮断されます。Ollamaの11434やOpen WebUIのポートは外部に開けないので、インターネットから直接叩かれる心配がなくなります。

注意:ufw enable 前に必ず SSH ポートを開ける

ufw enableを実行するとすべてのインバウンドがブロックされます。SSHポート(22)を開ける前に有効化すると自分が締め出されます。必ず ufw allow ssh を先に実行してください。ここだけは順番を間違えると本当に入れなくなります。

Ollamaのインストール

Ollamaは公式インストールスクリプトを使うと1コマンドでインストールできます。Ubuntu 24.04 LTSの公式Dockerイメージと公式 ollama/ollama イメージを使って、実際に挙動を確認しました。

手順1:前提パッケージをインストールする




root@vps: ~
$ apt-get update
$ apt-get install -y curl ca-certificates
# 実測: curl 8.5.0-2ubuntu10.9 / ca-certificates 20240203

手順2:Ollamaをインストールする

Ollama インストールの実測ログ(Ubuntu 24.04)
Ollama インストールの実測ログ(Ubuntu 24.04)



root@vps: ~
$ curl -fsSL https://ollama.com/install.sh | sh
>>> Installing ollama to /usr/local
>>> Downloading Linux amd64 bundle
######################################################## 100.0%
WARNING: Unable to detect NVIDIA/AMD GPU. Install lspci or lshw to automatically detect…
>>> The Ollama API is now available at 127.0.0.1:11434.
>>> Install complete. Run “ollama” from the command line.
$ ollama –version
ollama version is 0.30.8

install.sh の実体は15,902バイトでした(curlで取得して実測)。スクリプトを流すとOllama 0.30.8がインストールされ、APIが 127.0.0.1:11434 で立ち上がります。GPU未検出の警告は表示されますが、CPU推論では問題ありません。

手順3:systemdサービスとして自動起動を確認する

インストールスクリプトはsystemd(Linuxのサービス管理の仕組み)サービスも自動で設定します。VPSなら以下でサービス状態を確認できます。




root@vps: ~
$ systemctl status ollama
● ollama.service – Ollama Service
Loaded: loaded (/etc/systemd/system/ollama.service; enabled)
Active: active (running)
$ systemctl enable ollama # 再起動後も自動で立ち上がる

モデルのダウンロードと動作確認

Ollamaが起動したら、APIの疎通を確認し、モデルをダウンロードして実際に推論させます。

手順1:APIへの疎通確認とモデル取得・推論

Ollama API 疎通・モデル取得・実推論(実測)
Ollama API 疎通・モデル取得・実推論(実測)



root@vps: ~
$ curl -s http://localhost:11434/api/version
{“version”:”0.30.8″}
$ ollama pull qwen2.5:0.5b
verifying sha256 digest
writing manifest
success
$ ollama list
NAME ID SIZE MODIFIED
qwen2.5:0.5b a8b0c5157701 397 MB Less than a second ago
$ ollama run qwen2.5:0.5b “what is Linux?”
Linux is an open-source operating system developed by Linus Torvalds…

API が {"version":"0.30.8"} を返し、軽量モデル qwen2.5:0.5b(実測397MB)が一瞬でダウンロードできました。実際に推論を投げると英語で回答が返ってきました。これがOllamaの最小動作です。4GBプランで日本語も含めて実用したいなら ollama pull llama3.2:3b(約2GB)に切り替えてください。

検証環境について

本記事のOllamaおよびOpen WebUIの動作確認は、公式 ollama/ollama イメージ(Ollama 0.30.8)と ghcr.io/open-webui/open-webui:main(v0.9.6)をDockerで実起動して行いました。モデルは検証時間短縮のため軽量な qwen2.5:0.5b を使用しています。実VPSでは推奨どおり llama3.2:3b 以上を選ぶと、より自然な日本語応答になります。

Open WebUIで画面から使えるようにする

OllamaはCLI(コマンドライン)でも使えますが、Open WebUIを入れるとChatGPTのようなチャット画面でAIと会話できます。DockerでOpen WebUIを起動する手順を解説します。検証では ghcr.io/open-webui/open-webui:main(イメージサイズ4.3GB / v0.9.6)を使いました。

手順1:Dockerをインストールする




root@vps: ~
$ apt-get install -y docker.io
# 実測: docker.io 29.1.3-0ubuntu3~24.04.2 が入る
$ systemctl enable –now docker
$ docker –version
Docker version 29.1.3, build 29.1.3-0ubuntu3~24.04.2

手順2:Open WebUIを起動する

OllamaとOpen WebUIを連携させて起動します。重要なのは -p 127.0.0.1:3000:8080 でループバックにだけ公開することです。これでインターネットから直接アクセスされなくなります。




root@vps: ~
$ docker run -d \
–name open-webui \
-p 127.0.0.1:3000:8080 \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
–add-host=host.docker.internal:host-gateway \
-e WEBUI_AUTH=True \
–restart always \
ghcr.io/open-webui/open-webui:main
$ docker ps –format ‘{{.Image}} {{.Status}} {{.Ports}}’
ghcr.io/open-webui/open-webui:main Up (healthy) 127.0.0.1:3000->8080/tcp
$ curl -s http://127.0.0.1:3000/health
{“status”:true}

検証では /health{"status":true} を返し、Open WebUI(v0.9.6)が起動しました。docker port で確認すると 8080/tcp -> 127.0.0.1:3000 となっており、ループバックにのみバインドされていることが実測できました。さらにOpen WebUIコンテナからOllamaへ /api/version を投げると {"version":"0.30.8"} が返り、コンテナ間連携も確認できました。

手順3:SSHトンネルでブラウザアクセスする

ループバックにしか公開していないので、ローカルPCから以下のSSHトンネルを張って http://localhost:3000 でアクセスします。




local: ~
$ ssh -i ~/.ssh/vps_ollama_key -L 3000:localhost:3000 root@<VPS_IP> -N &
# 以降 http://localhost:3000 にアクセスできる

Open WebUI の実際の画面

Open WebUI 初回アクセス(サインイン画面)
Open WebUI 初回アクセス(サインイン画面)

ブラウザで http://localhost:3000 を開くと、まず「Sign in to Open WebUI」の画面が表示されます。初回はここで管理者アカウント(メールアドレスとパスワード)を作成します。最初に作ったユーザーが自動的に管理者になります。

ログインすると、ChatGPTそっくりのチャット画面が現れます。下の画面では、Ollamaに取り込んだ qwen2.5:0.5b モデルが選択され、日本語UIで「今日はどのようにお手伝いしましょうか?」と表示されています。

Open WebUI チャット画面(モデル選択済み・実撮影)
Open WebUI チャット画面(モデル選択済み・実撮影)

左メニューの「ワークスペース」→「モデル」では、取り込んだモデルの一覧が確認できます。下のスクリーンショットはモデルを登録する前の初期状態で、「モデルが見つかりません」と表示されています。ollama pull したモデルはここから管理できます。

Open WebUI モデル管理画面(Workspace/Models)
Open WebUI モデル管理画面(Workspace/Models)

外部公開しないためのセキュリティ設定

Ollamaのポート11434とOpen WebUIのポート3000は、インターネット上に直接公開してはいけません。意図しない利用者がAPIを使えてしまい、料金や情報漏えいのリスクになります。

設定の確認ポイント




root@vps: ~
$ docker port open-webui
8080/tcp -> 127.0.0.1:3000
$ ufw status
Status: active
22/tcp ALLOW Anywhere

ポートマッピングが 127.0.0.1:3000 になっていれば、外部からは直接アクセスできません。これが 0.0.0.0:3000 になっていたら全世界に公開されているので、必ず docker run のポート指定を 127.0.0.1:3000:8080 に直してください。検証でも docker port がループバックバインドを返すことを確認しています。

注意:Open WebUIをインターネットに公開したい場合

外部公開するには Nginx リバースプロキシ + Let’s Encrypt の HTTPS と、Open WebUIのユーザー認証(WEBUI_AUTH=True)を必ず併用してください。WEBUI_AUTH=False は誰でも入れてしまうので使わないこと。本記事ではSSHトンネル経由のローカルアクセスのみ解説しています。

よくあるエラーと解決策

「Error: pull model manifest: … connection refused」

ollamaサービスが起動していません。サービスを再起動してAPIの応答を確認してください。




root@vps: ~
$ systemctl restart ollama
$ curl -s http://localhost:11434/api/version
{“version”:”0.30.8″}

「WARNING: Unable to detect NVIDIA/AMD GPU」

これはエラーではなく警告です。CPU推論では無視して構いません。実際、検証環境でもこの警告が出ましたが、モデルのダウンロードも推論も問題なく動作しました。GPU対応VPS(Vultr GPUなど)を使う場合のみ、NVIDIAドライバと nvidia-container-toolkit が必要です。

Open WebUI が「Could not connect to Ollama」と表示される

DockerコンテナからホストのOllamaにアクセスできていません。コンテナ起動コマンドに --add-host=host.docker.internal:host-gateway が含まれているか、OLLAMA_BASE_URL が正しいかを確認します。検証では、両者を同じDockerネットワークに置き、Open WebUIコンテナから curl でOllamaの /api/version{"version":"0.30.8"} を返すことを確認できました。

メモリ不足でモデルのロードが失敗する

大きすぎるモデルをRAMの小さいプランで動かそうとすると、次のようなエラーで失敗します。




root@vps: ~
$ ollama run llama3.1:8b
Error: model requires more system memory (8.5 GB) than is available (3.8 GB)

この場合は、より小さいモデルに切り替えるか(llama3.2:3bgemma2:2b)、VPSプランを vc2-4c-8gb($40/月)以上にアップグレードしてください。

まとめ

VPSでOllamaをホストして自分専用AIサーバーを構築する手順をまとめます。

  • Vultrの vc2-2c-4gb(2vCPU/4GB RAM/$20/月)が最小推奨プラン — 公式APIで2026-06-15に東京リージョン対応を確認
  • Ubuntu 24.04 LTSに curl -fsSL https://ollama.com/install.sh | sh(実測15,902バイト)でOllama 0.30.8を導入
  • API {"version":"0.30.8"} の応答と、qwen2.5:0.5b(397MB)の実推論を実測で確認
  • Open WebUI v0.9.6(ghcr.io/open-webui/open-webui:main)をDockerで起動し、ブラウザからChatGPT風に使える
  • ポートは 127.0.0.1 にバインドし、SSHトンネル経由でのみアクセスするのが安全

次のステップ

  • Open WebUIで管理者アカウントを作成し、llama3.2:3b などのモデルを追加して使い始める
  • Nginx + Let’s Encrypt でHTTPS化して外部公開(ユーザー認証を必ず有効化)
  • PythonスクリプトからAPIを叩いて自動化(http://localhost:11434/api/generate

コメント

タイトルとURLをコピーしました