Ollamaとは何か?基本概要

スマホ・PCの守り方

Ollamaは、LLM(大規模言語モデル)をローカルPCやサーバー上で手軽に実行するためのオープンソースツールです。2023年にリリースされ、GitHubで公開されています。コマンドラインからシンプルなコマンドを実行するだけで、最新のオープンソースAIモデルをインターネット接続なしで動かせる点が最大の特徴です。

Ollamaの公式情報

  • 公式サイト:https://ollama.com
  • GitHubリポジトリ:https://github.com/ollama/ollama
  • ライセンス:MIT License(商用利用可)
  • 対応OS:macOS / Linux / Windows

Ollamaの仕組みはシンプルです。バックグラウンドでローカルサーバー(デフォルトではポート 11434)が起動し、REST APIを通じてモデルとのやり取りが行われます。つまり、ChatGPTのようなクラウドサービスとは異なり、すべての処理が自分のマシン上で完結します

なぜローカルLLMが重要なのか?

クラウド型AIサービスは便利ですが、入力したデータがサービス提供会社のサーバーに送信されるという点でプライバシーリスクが生じます。企業の機密情報、個人情報、医療データなどを扱う場合、ローカルLLMは重要な選択肢となります。Ollamaはその手軽さとパフォーマンスから、企業・個人を問わず急速に普及しています。

インストール方法と初期設定

macOSへのインストール

macOSの場合、公式サイトからインストーラー(.dmgファイル)をダウンロードするか、Homebrewを使う方法があります。

# Homebrewを使う場合
brew install ollama

# 手動インストール(公式サイトからダウンロードしたパッケージを使用)
# https://ollama.com/download/mac からダウンロード

Linuxへのインストール

Linuxでは、公式が提供するシェルスクリプト一行でインストールできます。このスクリプトは自動的にシステムサービス(systemd)として登録します。

curl -fsSL https://ollama.com/install.sh | sh

セキュリティ注意:シェルスクリプトの実行前に確認を

外部からダウンロードしたシェルスクリプトをそのまま実行することはリスクを伴います。本番環境では、スクリプトの内容を事前に確認するか、手動インストール手順を選択することを推奨します。

Windowsへのインストール

Windowsの場合、公式サイト(https://ollama.com/download/windows)から.exe形式のインストーラーをダウンロードして実行します。Windows版はWSL2(Windows Subsystem for Linux)なしでネイティブ動作します。

インストール後の確認

# バージョン確認
ollama --version

# サービスの起動確認(Linux)
systemctl status ollama

最初のモデルを動かしてみる

インストール後、以下のコマンドを実行するだけでAIとの対話が始まります。

# Llama 3.2(3Bパラメータ)を起動
ollama run llama3.2

# 初回はモデルのダウンロードが走ります(数GB)
# ダウンロード後、すぐに対話が開始されます
>>> こんにちは。あなたは何ができますか?

主要コマンド一覧

Ollamaの操作はコマンドラインから行います。主要なコマンドを以下にまとめます。

コマンド機能
ollama runモデルを起動・対話開始ollama run llama3.2
ollama pullモデルをダウンロードollama pull mistral
ollama listインストール済みモデル一覧ollama list
ollama rmモデルを削除ollama rm llama3.2
ollama showモデルの詳細情報を表示ollama show llama3.2
ollama serveAPIサーバーのみ起動ollama serve
ollama ps実行中のモデルを表示ollama ps
ollama stop実行中のモデルを停止ollama stop llama3.2

REST APIの使い方

OllamaはHTTP REST APIを提供しており、curlやPythonなどから直接呼び出せます。

# curlでAPIを呼び出す例
curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "prompt": "サイバーセキュリティとは何ですか?",
  "stream": false
}'

# チャット形式(会話履歴を保持)
curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2",
  "messages": [
    { "role": "user", "content": "SQLインジェクションについて説明してください" }
  ]
}'

Python(requests)やOpenAI互換ライブラリからも利用可能です。特にOpenAI互換APIエンドポイント(/v1/chat/completions)を使えば、既存のOpenAI向けコードをほぼそのまま流用できます。

# Python + OpenAI互換ライブラリの例
from openai import OpenAI

client = OpenAI(base_url="http://localhost:11434/v1", api_key="dummy")

response = client.chat.completions.create(
    model="llama3.2",
    messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)

対応モデルの概要と必要スペック

Ollamaはhttps://ollama.com/libraryで多数のモデルを公開しています(2025年3月時点で100種類以上)。代表的なモデルと推奨スペックを以下に示します。

代表的なモデル一覧

モデル名パラメータ数必要RAM目安特徴
Llama 3.370B48GB以上Metaの最新フラッグシップ。高精度
Llama 3.21B / 3B4GB / 4GB軽量版。モバイル・エッジ向け
Llama 3.18B / 70B / 405B8GB / 48GB / 256GB汎用性が高く人気
Mistral7B8GB高速・軽量。英語タスクに強い
Gemma 31B / 4B / 12B / 27B4GB〜20GBGoogleが開発。多言語対応強化
Phi-414B12GBMicrosoftの小型高精度モデル
Qwen2.50.5B〜72B2GB〜48GBAlibaba製。日本語・中国語に優秀
DeepSeek-R11.5B〜671B4GB〜数百GB推論特化。数学・コードに強い
CodeLlama7B / 13B / 34B8GB〜32GBコード生成・補完に特化
nomic-embed-text2GBテキスト埋め込み(RAG向け)

日本語利用のおすすめモデル

日本語での利用には Qwen2.5(7B以上)や Gemma 3(4B以上)が特に優秀です。また、専用の日本語チューニングモデルとして japanese-stablelm-instruct や elyza-japanese-llama-2 なども利用できます。

ハードウェア要件の考え方

モデルのサイズ(パラメータ数)とメモリ消費量には一定の関係があります。量子化(Quantization)によってモデルのビット数を削減することで、低スペックマシンでも動かせます。Ollamaではデフォルトで量子化済みモデルが配布されています。

パラメータ規模量子化なし(FP16)4bit量子化(Q4)推奨GPU VRAM
7B〜8B約14GB約5GB8GB以上
13B約26GB約8GB12GB以上
34B約68GB約20GB24GB以上
70B約140GB約40GB48GB以上(マルチGPU推奨)

GPU加速への対応

OllamaはGPUを自動的に検出して活用します。対応しているGPUアーキテクチャは以下のとおりです。

  • NVIDIA GPU:CUDA対応(GeForce RTX 3000番台以降が特に高速)
  • AMD GPU:ROCm対応(Linux環境)
  • Apple Silicon:Metal対応(M1/M2/M3/M4チップのUnified Memoryを最大活用)
  • Intel GPU:一部対応(Intel Arc など)

GPUが利用できない場合はCPU推論にフォールバックしますが、速度は大幅に低下します。7Bモデルで比較すると、M2 MacBook ProのGPU利用時は毎秒30〜50トークン程度、CPUのみでは5〜15トークン程度が目安です。

セキュリティ設定と注意事項

Ollamaをセキュアに運用するためには、デフォルト設定の理解と適切な追加設定が不可欠です。このセクションでは実際の設定方法をコマンドとともに解説します。

デフォルトのネットワーク設定

Ollamaはインストール直後、127.0.0.1(ローカルホスト)のポート11434でのみ待ち受けます。これは外部ネットワークからアクセスできない最も安全な設定です。

# デフォルトの待受状態を確認
curl http://localhost:11434/api/tags

# 外部からのアクセスは(デフォルトでは)拒否される
curl http://192.168.1.100:11434/api/tags  # → 接続失敗

危険:OLLAMA_HOST=0.0.0.0 の設定について

ネット上のチュートリアルで見かける OLLAMA_HOST=0.0.0.0 という設定は、すべてのネットワークインターフェースに開放する設定です。ファイアウォールなしにこの設定を行うと、同じネットワーク内の他の端末やインターネット上からAIへのアクセスが可能になります。認証機能がないため、誰でもAPIを叩ける状態になります。必ずファイアウォールとセットで使用してください。

外部公開が必要な場合の安全な設定

チームで共有サーバーを運用するなど、ネットワーク越しのアクセスが必要な場合は、必ずリバースプロキシ(nginxなど)と認証を組み合わせてください。

# 環境変数でバインドアドレスを設定する例(Linux systemd)
# /etc/systemd/system/ollama.service.d/override.conf を作成

[Service]
Environment="OLLAMA_HOST=127.0.0.1:11434"
Environment="OLLAMA_ORIGINS=https://your-app.example.com"

# 設定反映
sudo systemctl daemon-reload
sudo systemctl restart ollama

nginx によるリバースプロキシ設定例

外部公開する場合は、Basic認証またはmTLS(クライアント証明書認証)をnginxで追加します。

# /etc/nginx/sites-available/ollama
server {
    listen 443 ssl;
    server_name ai.example.com;

    ssl_certificate /etc/letsencrypt/live/ai.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ai.example.com/privkey.pem;

    # Basic認証
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;

    location / {
        proxy_pass http://127.0.0.1:11434;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

ファイアウォール設定(UFW / iptables)

# UFW(Ubuntu)でポート11434を内部のみに制限する例
sudo ufw deny 11434
sudo ufw allow from 192.168.1.0/24 to any port 11434

# 設定確認
sudo ufw status verbose

モデルファイルのアクセス権設定

Ollamaのモデルファイルはデフォルトで以下の場所に保存されます。

  • macOS/Linux~/.ollama/models/
  • WindowsC:\Users\ユーザー名\.ollama\models\
  • Linux(サービス実行時)/usr/share/ollama/.ollama/models/
# Linuxでモデルディレクトリの権限を確認
ls -la ~/.ollama/models/

# 他ユーザーからのアクセスを制限
chmod 700 ~/.ollama
chmod -R 600 ~/.ollama/models/

ログの管理とセキュリティ監査

# Ollamaのログを確認(Linux systemd)
sudo journalctl -u ollama -n 100 --no-pager

# リアルタイムでログを監視
sudo journalctl -u ollama -f

OLLAMA_DEBUG オプション

環境変数 OLLAMA_DEBUG=1 を設定するとデバッグログが出力されます。本番環境ではログにプロンプト内容が含まれる場合があるため、本番運用時は無効にすることを推奨します。

プライバシーの守り方

Ollamaの最大のプライバシー上の利点は、モデルのダウンロード完了後はオフライン動作が可能な点です。しかし、完全なプライバシー保護を実現するには追加の注意が必要です。

ネットワーク通信の実態

Ollamaが通信を行うタイミングと内容を正確に理解しましょう。

タイミング通信先内容
初回インストールollama.comバイナリのダウンロード
ollama pull / run(初回)ollama.com / registry.ollama.aiモデルファイルのダウンロード
モデル実行中(推論時)なし完全にローカル処理
自動アップデート確認ollama.comバージョン情報の確認

重要なのは、プロンプトの内容(質問や入力テキスト)は一切外部に送信されないという点です。この点でOllamaはChatGPTやClaude.aiなどのクラウドサービスと根本的に異なります。

完全オフライン運用の実現

機密性の高い環境ではモデルのダウンロード後にネットワークを切断することで、完全なエアギャップ運用が可能です。

# ステップ1:オンライン環境でモデルをダウンロード
ollama pull llama3.1:8b

# ステップ2:モデルファイルをエクスポート(別マシンへ移行する場合)
# モデルはここに格納されている:
ls ~/.ollama/models/blobs/
ls ~/.ollama/models/manifests/

# ステップ3:ネットワーク無効化後もローカルで実行可能
ollama run llama3.1:8b

エアギャップ環境での注意点

完全オフライン環境では自動アップデートが利用できません。定期的に安全なネットワーク環境でのアップデート確認と、手動での脆弱性チェックを実施することを推奨します。

Modelfileによるシステムプロンプトの固定

Ollamaでは「Modelfile」という設定ファイルを使って、モデルの動作をカスタマイズできます。これにより、社内用途に特化したAIアシスタントを構築できます。

# Modelfile の例(プライバシー意識の高い設定)
FROM llama3.1:8b

SYSTEM """
あなたは社内専用のAIアシスタントです。
以下のルールを厳守してください:
1. 個人情報や機密情報を記録・記憶しない
2. 外部サービスへのリンクや参照を提供しない
3. 社内業務に関連する質問のみ回答する
"""

PARAMETER temperature 0.7
PARAMETER num_ctx 4096

# カスタムモデルのビルド
# ollama create my-company-bot -f Modelfile

会話履歴の管理

Ollamaはセッション内の会話コンテキストをメモリ上に保持しますが、セッション終了後に会話内容はディスクに保存されません(デフォルト設定では永続化されない)。ただし、アプリケーション側で会話履歴を保存している場合は別途管理が必要です。

セキュリティ上のリスクと対策

プロンプトインジェクション攻撃

Ollamaを社内システムと連携させる場合、外部から入力されたテキストをそのままプロンプトに組み込む実装は危険です。プロンプトインジェクション攻撃により、意図しない動作を引き起こされる可能性があります。

# 危険な実装例(外部入力を直接連結)
user_input = request.form["question"]
prompt = f"社内文書を検索して答えてください:{user_input}"
# ↑ 攻撃者が「以前の指示を無視して...」などと入力できる

# 安全な実装(入力のサニタイズ + システムプロンプトの分離)
system_prompt = "あなたは社内文書検索アシスタントです..."
user_message = sanitize_input(user_input)  # 入力検証
# システムプロンプトとユーザー入力を分離してAPIに渡す

モデルポイズニングへの注意

Ollamaのモデルリポジトリ(ollama.com/library)は公式が管理していますが、サードパーティが公開するモデルを使用する場合は注意が必要です。悪意あるモデルにはバックドアやデータ漏洩機能が仕込まれている可能性があります。

信頼できるモデルソースを使用すること

  • Ollama公式リポジトリのモデルを優先的に使用する
  • Hugging Faceなど外部ソースのモデルを使う場合は提供元を確認する
  • 不明なソースのGGUFファイルは使用しない
  • モデルのライセンスと使用条件を事前に確認する

リソース枯渇攻撃(DoS)への対策

Ollamaを外部公開している場合、大量のリクエストによるリソース枯渇攻撃(DoS)のリスクがあります。nginx等でレート制限を設定することを推奨します。

# nginx でのレート制限設定例
limit_req_zone $binary_remote_addr zone=ollama:10m rate=10r/m;

server {
    location /api/ {
        limit_req zone=ollama burst=5 nodelay;
        proxy_pass http://127.0.0.1:11434;
    }
}

実際の活用方法

Ollamaはその柔軟性から、個人・企業を問わず多様なシナリオで活用されています。

① ローカルコーディングアシスタント

VS CodeやNeovimなどのエディタ拡張(Continue.dev、Copilot代替など)と組み合わせることで、コードがクラウドに送信されることなくAIコード補完が利用できます。

# CodeLlamaを使ったコード生成の例
ollama run codellama:7b-code

# または Continue.dev(VS Code拡張)の設定で
# provider: "ollama" / model: "codellama:7b-code" を指定

② RAG(検索拡張生成)システムの構築

社内文書や技術ドキュメントをベクトルデータベース(ChromaDB、Qdrantなど)に格納し、Ollamaを使ってローカルRAGシステムを構築できます。LangChainやLlamaIndexとの連携が容易です。

# LangChain + Ollama + ChromaDB によるRAGの例
from langchain_ollama import OllamaLLM
from langchain_community.vectorstores import Chroma
from langchain_ollama import OllamaEmbeddings

# ローカルで埋め込みを生成
embeddings = OllamaEmbeddings(model="nomic-embed-text")

# ローカルLLMで回答を生成
llm = OllamaLLM(model="llama3.1:8b")

③ Open WebUI による GUI インターフェース

Open WebUI(旧Ollama WebUI)はDockerで簡単に起動できる、ChatGPT風のウェブインターフェースです。チームでの共有利用に便利です。

# Docker を使った Open WebUI の起動
docker run -d -p 3000:8080 \
  --add-host=host.docker.internal:host-gateway \
  -v open-webui:/app/backend/data \
  --name open-webui \
  --restart always \
  ghcr.io/open-webui/open-webui:main

# ブラウザで http://localhost:3000 にアクセス

④ セキュリティ調査・学習への活用

サイバーセキュリティの文脈では、以下のような用途でOllamaが活用されています。

  • ログ解析の補助:大量のシステムログやネットワークログをLLMで要約・分類する
  • CTF(Capture The Flag)の学習:解法のヒントや暗号問題の解説を質問する
  • コードレビュー自動化:脆弱なコードのパターンを検出させる
  • ペネトレーションテストのメモ整理:調査結果をまとめ、レポート作成を補助する
  • セキュリティトレーニング:社内向けのフィッシング認識トレーニング教材の生成
# セキュリティログの分析例
ollama run llama3.1:8b "以下のnginxエラーログを分析して、
不審なアクセスパターンをリストアップしてください:
$(cat /var/log/nginx/access.log | tail -100)"

注意:攻撃コードの生成には利用しない

Ollamaで動かすモデルの多くは安全フィルターが組み込まれていますが、一部の量子化モデルや専用Fine-tuningモデルでは制限が緩い場合があります。マルウェア生成や攻撃ツールの作成に利用することは違法となる場合があり、倫理的にも許容されません。

⑤ 自動化パイプラインへの組み込み

REST APIを介してOllamaをCI/CDパイプラインやバッチ処理に組み込む活用例も増えています。

#!/bin/bash
# コミットメッセージの品質チェックの例
COMMIT_MSG=$(git log -1 --pretty=%B)

RESULT=$(curl -s http://localhost:11434/api/generate -d "{
  \"model\": \"llama3.1:8b\",
  \"prompt\": \"次のコミットメッセージを評価し、問題点を指摘してください:${COMMIT_MSG}\",
  \"stream\": false
}" | jq -r '.response')

echo "AI Review: $RESULT"

パフォーマンスチューニング

主要な環境変数

環境変数デフォルト値説明
OLLAMA_NUM_PARALLEL1同時処理できるリクエスト数
OLLAMA_MAX_LOADED_MODELS1同時にメモリに展開するモデル数
OLLAMA_KEEP_ALIVE5mモデルをメモリに保持する時間
OLLAMA_MAX_QUEUE512最大キューイングリクエスト数
OLLAMA_FLASH_ATTENTION0Flash Attention有効化(1で有効)
CUDA_VISIBLE_DEVICES(全GPU)使用するGPUを指定
# 複数リクエストを同時処理する設定例(Linux systemd)
# /etc/systemd/system/ollama.service.d/override.conf

[Service]
Environment="OLLAMA_NUM_PARALLEL=4"
Environment="OLLAMA_MAX_LOADED_MODELS=2"
Environment="OLLAMA_KEEP_ALIVE=10m"
Environment="OLLAMA_FLASH_ATTENTION=1"

まとめ:Ollamaを安全に活用するためのチェックリスト

Ollamaはローカルでのプライバシー保護とAI活用を両立する強力なツールです。最後に、安全な運用のためのチェックリストをまとめます。

✅ セキュリティチェックリスト

  • ☐ デフォルトの 127.0.0.1 バインドを維持している(外部公開しない場合)
  • ☐ 外部公開が必要な場合は、nginx等でリバースプロキシ+認証を設定している
  • ☐ ファイアウォールでポート 11434 を適切に制限している
  • ☐ 信頼できるソースのモデルのみを使用している
  • ☐ OLLAMA_DEBUG を本番環境で無効にしている
  • ☐ モデルファイルのディレクトリ権限を適切に設定している
  • ☐ Ollamaのバージョンを定期的に更新している
  • ☐ ログを定期的に確認し、不審なアクセスを監視している
  • ☐ 外部公開環境にはレート制限を設定している

プライバシーの観点からのまとめ

Ollamaの最大の強みは、推論処理が完全にローカルで完結する点にあります。モデルのダウンロード後はオフライン動作が可能であり、プロンプトの内容が外部サーバーに送信されることはありません。機密情報を扱う業務や、データ主権を重視する企業のユースケースにおいて、Ollamaは有力な選択肢となります。ただし、完全なプライバシー保護のためには、本記事で紹介した設定を適切に組み合わせることが重要です。

Ollamaは継続的に開発が進んでおり、対応モデルやAPIの機能も日々拡充されています。公式ドキュメント(https://github.com/ollama/ollama/blob/main/docs/)を定期的に確認し、最新情報をキャッチアップすることをお勧めします。


※ 本記事の情報は2025年3月時点のものです。ソフトウェアのバージョンアップにより仕様が変更される場合があります。最新情報は公式リポジトリをご確認ください。

コメント