「ローカルLLMという選択肢は知っているが、Linuxサーバーでどう動かすのか具体像が見えない」
そんな悩みを抱えるインフラエンジニア・プログラマーは多いはずです。この記事では、Ubuntu ServerにOllamaを導入し、機密データを一切外部に出さずに業務用のローカルLLMを動かすまでの手順を、実機ベースで解説します。インストールから本番運用向けのsystemdサービス化、外部アクセス制限、トラブルシュートまで一通りカバーしました。
この記事のポイント
・curl -fsSL https://ollama.com/install.sh | sh でOllamaを一発導入できる
・ローカルLLMなら機密データを外に出さず・月額ゼロ・オフラインで業務AIを動かせる
・本番運用はsystemdのoverride.confでOLLAMA_HOSTやモデル保存先を制御するのが基本
・「ollama: command not found」はPATHとsystemd起動の2点を切り分ければ解決できる
・巨大モデルが必要な場面はクラウドが優位。用途で使い分ける視点を持つ
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
なぜローカルLLMをUbuntu Serverで動かすのか|クラウドAIとの本質的な違い
ChatGPTやClaudeといったクラウドAIは非常に強力ですが、業務利用では一つ大きな壁にぶつかります。「入力したデータが自社の管理外に出る」という点です。あるWeb制作会社のエンジニアから聞いた話ですが、顧客の個人情報を含むログをうっかりクラウドAIに貼り付けてしまい、社内で大問題になりかけたそうです。クラウドAIの利用規約や学習ポリシーは年々厳格化されていますが、それでも「秘密保持契約(NDA)を結んだ顧客データを外部送信する」こと自体が契約違反になるケースは少なくありません。
ローカルLLM(自社サーバー内で動かす大規模言語モデル)は、この問題を構造的に解決します。
ローカルLLMが解決する3つの課題
ローカルLLMをUbuntu Server上で動かす価値は、主に次の3点に整理できます。・機密データを外に出さない:推論はすべて自社サーバー内で完結し、プロンプトもレスポンスも外部に送信されません。NDA対象のコードや顧客データも安心して扱えます
・月額コストがゼロ:API従量課金がなく、何回推論しても電気代以外の追加コストが発生しません。社内で大量に呼び出す用途ほど効果が大きくなります
・オフラインで稼働する:一度モデルを取得すればインターネット接続なしで動きます。閉域ネットワークや外部接続が制限された環境でも利用できます
正直に言うと、ローカルLLMにも限界はある
ここは正直にお伝えしておきます。ローカルLLMは万能ではありません。GPT-4クラスの巨大モデルと完全に同等の品質を、手元のGPU1枚で再現するのは現実的ではありません。数百億~数千億パラメータの最上位モデルを動かすには相応のVRAMが必要で、そこはクラウドAIに分があります。
したがって現場での現実的な使い分けは、「機密性が高い・反復回数が多い業務はローカルLLMで」「最高品質の推論が一度だけ必要な場面はクラウドAIで」という棲み分けです。本記事はその前者、ローカルLLMを業務で実用化するための構築手順にフォーカスします。
Ollamaのインストールと初回モデル起動
ローカルLLMを動かすツールはいくつかありますが、本記事では導入と運用が最もシンプルなOllamaを使います。OllamaはモデルのダウンロードからREST API提供までを一括で担うランタイムで、Ubuntu Serverとの相性も良好です。動作確認環境は Ubuntu Server 24.04 LTS(NVIDIA GPU搭載・ドライバ導入済み)です。
1. Ubuntu 24.04 LTSへのOllama一発インストール
公式のインストールスクリプトを実行するだけで、Ollama本体・systemdサービス・GPU連携の設定がまとめて完了します。# Ollamaの公式インストールスクリプトを実行 curl -fsSL https://ollama.com/install.sh | sh # インストール後、バージョンを確認 ollama --version
>>> Installing ollama to /usr/local >>> Downloading Linux amd64 bundle >>> Creating ollama user... >>> Adding ollama user to render group... >>> Creating ollama systemd service... >>> Enabling and starting ollama service... >>> NVIDIA GPU installed. # バージョン確認の出力 ollama version is 0.x.x
GPUが搭載されているのにこの行が出ない場合は、NVIDIAドライバが未導入の可能性があります。先に
nvidia-smi でドライバの状態を確認してください(後述のトラブルシュートで詳しく扱います)。
2. Llama3.3モデルの取得と動作確認
Ollamaの準備ができたら、実際にモデルを取得します。ここでは汎用性の高いLlama3.3を例にします。# Llama3.3モデルをダウンロード(数GB~数十GBあるため時間がかかる) ollama pull llama3.3 # 取得済みモデルの一覧を確認 ollama list
ollama list の出力例です。NAME ID SIZE MODIFIED llama3.3:latest a1b2c3d4e5f6 42 GB 2 minutes ago
# 対話モードで起動(ローカルで完結する) ollama run llama3.3 # プロンプトが表示されたら質問を入力 >>> Linuxでディスク使用量を確認するコマンドは? # 終了するときは /bye と入力 >>> /bye
なお、もっと軽量なモデルから試したい場合は、Llama3.3の代わりに
ollama pull gemma3 や ollama pull phi-4 を使うと、より小さいVRAMで動かせます(モデル選定は後述します)。
3. APIエンドポイントへのリクエスト確認(curl例)
Ollamaは対話モードだけでなく、REST APIを標準で提供します。業務システムや社内ツールに組み込む場合はこのAPIを叩きます。デフォルトでは
localhost:11434 でAPIが待ち受けています。単発の文章生成には /api/generate を使います。# /api/generate に単発リクエストを送る curl http://localhost:11434/api/generate -d '{ "model": "llama3.3", "prompt": "Linuxのファイル権限を3行で説明して", "stream": false }'
"stream": false を指定すると、応答が分割されず1つのJSONとして返ります。出力例(抜粋)です。{ "model": "llama3.3", "created_at": "2026-06-19T01:23:45.678Z", "response": "Linuxのファイル権限は、所有者・グループ・その他の3者に対して...", "done": true, "total_duration": 4231000000, "eval_count": 128 }
/api/chat を使います。# /api/chat に会話形式でリクエストを送る curl http://localhost:11434/api/chat -d '{ "model": "llama3.3", "messages": [ { "role": "user", "content": "systemctlの再起動コマンドは?" } ], "stream": false }'
本番運用のための追加設定
動作確認ができたら、いよいよ本番運用向けの設定です。インストール直後の状態は「自分のマシンで試す」前提のため、サーバーとして運用するにはいくつか調整が必要になります。1. systemdサービス化で自動起動(override.conf)
Ollamaは公式インストールスクリプトで既にsystemdサービスとして登録されています。まず状態を確認しましょう。# Ollamaサービスの状態を確認 systemctl status ollama # サーバー起動時に自動起動するよう有効化(通常は有効済み) systemctl enable ollama
/etc/systemd/system/ollama.service を直接書き換えるのは推奨しません。パッケージ更新で上書きされる恐れがあるためです。代わりにoverride.conf(ドロップイン設定)を使います。# 専用のエディタでoverride.confを開く(ファイルが自動生成される) systemctl edit ollama
[Service] # モデルの保存先を変更(大容量ディスクに置きたい場合) Environment="OLLAMA_MODELS=/data/ollama/models" # モデルをメモリに保持し続ける時間(デフォルト5分) # 24hにすると初回以降のレスポンスが速くなる Environment="OLLAMA_KEEP_ALIVE=24h"
・OLLAMA_MODELS:モデルファイルの保存先ディレクトリ。デフォルトは
/usr/share/ollama/.ollama/models・OLLAMA_KEEP_ALIVE:推論後にモデルをGPUメモリに保持する時間。長くすると2回目以降の応答が速くなる
・OLLAMA_HOST:APIの待ち受けアドレス。デフォルトは
127.0.0.1:11434(後述)編集を保存したら、設定を反映します。
# systemdに設定変更を読み込ませる systemctl daemon-reload # Ollamaを再起動して反映 systemctl restart ollama
2. 外部アクセス制限とファイアウォール設定(OLLAMA_HOST・ufw)
ここは本番運用で最も重要なポイントです。OllamaのAPIには認証機能がありません。そのため、待ち受けアドレスとファイアウォールの設計を誤ると、誰でもあなたのLLMを叩ける状態になってしまいます。デフォルトの
OLLAMA_HOST=127.0.0.1:11434 はローカルホストのみ受け付ける安全な設定です。同じサーバー内のアプリから使うだけなら、この設定のまま変更しないのが最も安全です。社内の別マシンからアクセスさせたい場合のみ、待ち受けアドレスを広げます。その際は必ずファイアウォール(ufw)でアクセス元を絞ってください。
# override.confで全インターフェースを待ち受けにする場合 # (ufwでの制限とセットで行うこと) systemctl edit ollama # 追記内容: # [Service] # Environment="OLLAMA_HOST=0.0.0.0:11434" # 反映 systemctl daemon-reload systemctl restart ollama
# まずSSH(22)を許可してからufwを有効化(締め出し防止) ufw allow 22/tcp ufw enable # 社内セグメント(例: 192.168.10.0/24)だけ11434を許可 ufw allow from 192.168.10.0/24 to any port 11434 proto tcp # それ以外からの11434は拒否されることを確認 ufw status verbose
ufw status verbose の出力例です。Status: active To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere 11434/tcp ALLOW IN 192.168.10.0/24
インターネットに直接公開する構成は推奨しません。どうしても外部からアクセスさせる場合は、Nginx等のリバースプロキシで認証を挟むか、VPN経由に限定してください。
3. モデル選定の考え方・用途別VRAM早見表
「どのモデルを選べばいいのか」は最も多い質問の一つです。基本的な考え方は、搭載GPUのVRAM容量に収まる範囲で、用途に合った最大のモデルを選ぶことです。量子化(モデルを軽量化する圧縮)の度合いでも必要VRAMは変わりますが、おおまかな目安として用途別の早見表を示します(数値は4bit量子化前後の概算で、環境により前後します)。
| モデル | 目安VRAM | 向いている用途 |
|---|---|---|
| Phi-4 | 約8GB~ | 軽量・高速。要約や定型処理、低スペックGPU向け |
| Gemma 3 | 約8GB~ | 軽量で日本語も実用的。汎用的な社内アシスタント |
| Mistral | 約4~6GB~ | バランス型。コード補助や文章生成に広く使える |
| Gemma 4 | 約16GB~ | Gemma 3の上位。より高い精度が必要な業務向け |
| Llama3.3 | 約40GB~ | 高精度。複雑な推論や長文処理、品質重視の用途 |
ローカルLLMで使うモデルの選び方は、用途とVRAMの2軸で考えると失敗しにくくなります。各モデルの特徴と切り替えコマンドは、別記事で詳しく解説しています。
・ローカルLLMのモデルを比較する方法|Llama3.3・Mistral・Gemma・Phi-4をUbuntuで使い分けるポイント
「ollama: command not found」が出た時の対処法
導入直後によく遭遇するのが「ollama: command not found」というエラーです。原因はいくつかありますが、順番に切り分ければ確実に解決できます。1. PATHの確認
最も多いのが、Ollamaのバイナリにパスが通っていないケースです。インストールスクリプトは通常/usr/local/bin/ollama に配置します。# バイナリが存在するか確認 ls -l /usr/local/bin/ollama # whichでパスが通っているか確認 which ollama # 現在のPATHを確認 echo $PATH
ls ではファイルが見つかるのに which で何も返らない場合は、PATHに /usr/local/bin が含まれていません。一時的にフルパスで実行するか、PATHを追加します。# とりあえずフルパスで実行 /usr/local/bin/ollama --version # PATHに追加(.bashrcに追記して永続化) echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bashrc source ~/.bashrc
2. systemd起動失敗の切り分け
コマンドは見つかるのにollama run で「サーバーに接続できない」旨のエラーが出る場合は、Ollamaサービス自体が起動していない可能性があります。# サービスの状態を確認 systemctl status ollama # 起動していなければ起動 systemctl start ollama # 詳細なログを確認(起動失敗の原因がここに出る) journalctl -u ollama -n 50 --no-pager
journalctl のログには、ポート競合・権限エラー・環境変数の記述ミスなど、起動失敗の具体的な原因が記録されています。先ほどoverride.confを編集した直後にサービスが起動しなくなった場合は、記述ミスを真っ先に疑ってください。# override.confの内容を確認 systemctl cat ollama # 修正後は必ずdaemon-reloadしてから再起動 systemctl daemon-reload systemctl restart ollama
3. GPUが認識されない場合の確認手順(nvidia-smi)
サービスは起動しているのに推論が異常に遅い、あるいはログに「GPU not found」と出る場合は、GPUが認識されていません。まずnvidia-smi でドライバの状態を確認します。# NVIDIAドライバとGPUの状態を確認 nvidia-smi
+-----------------------------------------------------------------------------+ | NVIDIA-SMI 5xx.xx Driver Version: 5xx.xx CUDA Version: 12.x | |-----------------------------------------+----------------------------------+ | GPU Name Persistence-M | Memory-Usage | |=========================================+==================================| | 0 NVIDIA RTX A4000 Off | 1024MiB / 16384MiB | +-----------------------------------------+----------------------------------+
nvidia-smi: command not found や「No devices were found」と表示される場合は、NVIDIAドライバが未導入か、正しくロードされていません。Ubuntu 24.04では次のように導入します。# 推奨ドライバ管理ツールを導入 apt update apt install -y ubuntu-drivers-common # 利用可能な推奨ドライバを確認 ubuntu-drivers devices # 推奨ドライバを自動インストール ubuntu-drivers autoinstall # 導入後は再起動してドライバを読み込む reboot
nvidia-smi でGPUが見えるようになったら、Ollamaを再起動してGPUが使われることを確認してください。# Ollamaを再起動 systemctl restart ollama # 推論中に別ターミナルでGPU使用率を確認(数値が上がればGPU稼働) nvidia-smi
本記事のまとめ|ローカルLLM構築の全体像
Ubuntu ServerでローカルLLMを構築する一連の流れを、早見表にまとめます。| ステップ | コマンド/設定 | ポイント |
|---|---|---|
| Ollama導入 | curl -fsSL https://ollama.com/install.sh | sh |
systemdサービスまで自動登録される |
| モデル取得 | ollama pull llama3.3 |
軽量モデルから試すならgemma3やphi-4 |
| 動作確認 | ollama run llama3.3 |
推論はサーバー内で完結し外部送信なし |
| API呼び出し | curl http://localhost:11434/api/generate -d '...' |
/api/chatは会話履歴を保持する用途 |
| 環境変数設定 | systemctl edit ollama |
override.confでOLLAMA_MODELS等を制御 |
| アクセス制限 | ufw allow from 192.168.10.0/24 to any port 11434 proto tcp |
APIに認証なし。待ち受けとufwで必ず保護 |
| command not found対処 | which ollama |
PATHとsystemd起動の2点を切り分ける |
| GPU確認 | nvidia-smi |
未認識ならドライバ導入後にreboot |
ローカルLLM構築を2日間のハンズオンで体験する
この記事で扱った構築手順を、実機GPU環境で手を動かしながら習得したい方向けに、「ローカルAIマスターセミナー」を開催しています。
Ollamaの導入からモデル切り替え・業務活用まで、少人数(最大8名)ZOOMハンズオン形式で実施しています。
・AIを活用してLinuxコマンドを効率的に学ぶ方法|ChatGPTやCopilotの使い方も
・GitHub CopilotでLinuxコマンドを学ぶ方法
・AIにLinuxトラブルを解析させる方法|journalctl・dmesgのログをChatGPT・Claudeに渡すコツ
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:ローカルLLMのモデルを比較する方法|Llama3.3・Mistral・Gemma・Phi-4をUbuntuで使い分けるポイント
- この記事の属するカテゴリ:ローカルLLMへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます