「エアギャップ環境へのOllamaの持ち込み方がわからず、ネットが使えないとどうにもならない」
そんな悩みを抱えるインフラエンジニアや情シス担当者は多いはずです。この記事では、インターネット接続のないLinuxサーバー(エアギャップ環境)にOllamaをインストールし、あらかじめ準備したモデルファイルを転送して実際に使えるようにするまでの手順を解説します。事前準備で必要なファイルの一覧から、エアギャップサーバーでの展開と動作確認まで、実際のコマンド例とともに丁寧に説明します。
この記事のポイント
・OllamaバイナリはGitHub Releasesのtar.gzを接続環境で取得してエアギャップサーバーへ転送する
・モデルは接続環境でollama pullしたあと~/.ollama/modelsをtar czfでパッキングして持ち込む
・GGUFファイル+Modelfileのインポートを使えばモデル更新時の転送量を最小化できる
・OLLAMA_MODELS環境変数でモデル置き場を外付けストレージに変更すると容量管理が楽になる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
エアギャップ環境でローカルLLMが必要になる場面
エアギャップとは、ネットワークを物理的に切断した環境のことです。インターネットはもちろん、社内LANからも隔離されているケースが多く、官公庁・金融機関・製造業の研究開発部門・医療機関などで広く採用されています。こうした環境でローカルLLMの需要が高まっているのは、業務データをAIに処理させたいが、クラウドサービスへのデータ送信が規制でアウトというケースが増えているからです。具体的な場面を挙げると:
・ISMS認証の審査でクラウドサービスへのデータ送出を制限している組織
・PCI DSS準拠が必要な決済システムのログを解析したい場合
・国防・行政関連の機密文書を自然言語処理にかける場面
・インターネット接続のない工場フロアのサーバーで設備ログを解析するケース
このような状況で「ローカルLLMなら使えるはずだが、Ollamaのインストール自体にネットが必要では…」という壁に当たります。この記事では、その壁を越える手順を解説します。
エアギャップ構築に先立ち、どのモデルをサーバーへ持ち込むかを事前に決めておく必要があります。ローカルLLMのモデルを比較する方法|Llama3.3・Mistral・Gemma・Phi-4をUbuntuで使い分けるポイントを参照して、エアギャップサーバーのハードウェアスペックに合ったモデルを選定してから本記事の手順を進めてください。
構築の全体像と事前に準備するファイル
エアギャップ環境へのOllama構築は大きく2つのフェーズに分かれます。・フェーズ1: インターネット接続環境(中継機・業務PC等)でファイルを準備する
・フェーズ2: ファイルを物理媒体または社内ファイル転送で持ち込み、エアギャップサーバーで展開する
フェーズ1で準備するファイルは次のとおりです。
・Ollamaバイナリ: `ollama-linux-amd64.tgz`(GitHub Releasesから取得)
・モデルファイル一式: `~/.ollama/models` ディレクトリの tar アーカイブ
・systemd サービスファイル: テキストで手元に保存しておく(後述)
・チェックサムファイル: tar.gz の sha256sum(転送後の完全性確認用)
1. エアギャップサーバーのOSとアーキテクチャを確認する
エアギャップサーバー側で以下を確認しておきます。# アーキテクチャ確認 $ uname -m x86_64 # → amd64 用バイナリが必要 # arm64 の場合はこちら aarch64 # → arm64 用バイナリが必要 # OS バージョン確認 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Release: 22.04
接続環境でOllamaとモデルをダウンロードする
フェーズ1の作業です。インターネットに接続された中継機(業務PCや踏み台サーバー)で作業します。1. OllamaのLinuxバイナリをダウンロードする
GitHub Releasesから直接 tar.gz を取得します。# 最新バージョンを確認して取得(バージョン番号は適宜変更) $ curl -LO https://github.com/ollama/ollama/releases/download/v0.6.0/ollama-linux-amd64.tgz # ダウンロード確認 $ ls -lh ollama-linux-amd64.tgz -rw-r--r-- 1 user user 52M Sep 28 09:00 ollama-linux-amd64.tgz # チェックサムを生成しておく(転送後の検証に使う) $ sha256sum ollama-linux-amd64.tgz > ollama-linux-amd64.tgz.sha256 $ cat ollama-linux-amd64.tgz.sha256 a1b2c3d4e5f6... ollama-linux-amd64.tgz
2. 中継機でモデルをpullする
中継機にOllamaをインストールし、エアギャップ環境に持ち込むモデルを取得します。# 中継機への通常インストール $ curl -fsSL https://ollama.com/install.sh | sh # モデルをpull(エアギャップサーバーのVRAM/RAMに合ったものを選ぶ) $ ollama pull llama3.3:70b-instruct-q4_0 # 複数モデルを持ち込む場合は続けてpull $ ollama pull gemma3:12b-instruct-q4_0 $ ollama pull phi4:latest # pull済みモデルの確認 $ ollama list NAME ID SIZE MODIFIED llama3.3:70b-instruct-q4_0 a6eb4748fd29 43 GB 2 minutes ago gemma3:12b-instruct-q4_0 bc5d9ef12345 8.1 GB 1 minute ago phi4:latest def890abc123 9.1 GB 30 seconds ago
3. モデルディレクトリの場所を確認する
Ollamaのモデル保存先は環境によって異なります。# systemd サービスインストール(デフォルト)の場合 $ ls /usr/share/ollama/.ollama/models/ blobs manifests # ユーザーインストールの場合 $ ls ~/.ollama/models/ blobs manifests # OLLAMA_MODELS 環境変数が設定されていれば優先される $ sudo systemctl cat ollama | grep OLLAMA_MODELS Environment="OLLAMA_MODELS=/usr/share/ollama/.ollama"
モデルファイルをパッキングしてエアギャップサーバーへ転送する
1. モデルディレクトリを tar アーカイブにする
# systemd インストール(/usr/share/ollama/.ollama)の場合 $ sudo tar czf /tmp/ollama-models.tar.gz \ -C /usr/share/ollama/.ollama models # ファイルサイズ確認 $ ls -lh /tmp/ollama-models.tar.gz -rw-r--r-- 1 root root 48G Sep 28 09:30 ollama-models.tar.gz # チェックサムを生成 $ sha256sum /tmp/ollama-models.tar.gz > /tmp/ollama-models.tar.gz.sha256 # アーカイブ内の最初の10件を確認 $ tar tzf /tmp/ollama-models.tar.gz | head -10 models/ models/blobs/ models/blobs/sha256-a6eb4748fd29... models/manifests/ models/manifests/registry.ollama.ai/ models/manifests/registry.ollama.ai/library/ models/manifests/registry.ollama.ai/library/llama3.3/
2. エアギャップサーバーへ転送する
転送方法は環境に応じて選択します。・USB メモリ / 外付けHDD(物理媒体)
・DMZ 内の中継ファイルサーバー経由の scp/rsync
・DVD-R(大容量の場合は分割書き込み)
DMZ経由で scp 転送する例を示します。
# 中継機からエアギャップサーバーへ転送 $ scp /tmp/ollama-models.tar.gz user@airgap-server:/tmp/ $ scp /tmp/ollama-models.tar.gz.sha256 user@airgap-server:/tmp/ $ scp ollama-linux-amd64.tgz user@airgap-server:/tmp/ $ scp ollama-linux-amd64.tgz.sha256 user@airgap-server:/tmp/
社内のローカルLLM導入判断の根拠については、社内でChatGPTが使えないときの代替手段|機密データを守るローカルLLMという選択肢も参考にしてください。エアギャップ構築のビジネス的な必然性を整理する材料になります。
エアギャップサーバーにOllamaをオフラインインストールする
フェーズ2の作業です。ここからエアギャップサーバー上での操作です。1. 転送ファイルのチェックサムを検証する
展開前にファイルが壊れていないことを確認します。# チェックサム検証(OKと表示されれば正常) $ sha256sum -c /tmp/ollama-linux-amd64.tgz.sha256 /tmp/ollama-linux-amd64.tgz: OK $ sha256sum -c /tmp/ollama-models.tar.gz.sha256 /tmp/ollama-models.tar.gz: OK
2. Ollamaバイナリを展開してインストールする
# /tmp 以下に展開 $ mkdir -p /tmp/ollama-bin $ tar xzf /tmp/ollama-linux-amd64.tgz -C /tmp/ollama-bin # バイナリをシステムパスにコピー $ sudo cp /tmp/ollama-bin/bin/ollama /usr/local/bin/ollama $ sudo chmod +x /usr/local/bin/ollama # バージョン確認 $ /usr/local/bin/ollama --version ollama version is 0.6.0
3. ollama ユーザーとディレクトリを作成する
# ollama 専用ユーザーを作成(systemd サービス用) $ sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama # モデル保存ディレクトリを作成 $ sudo mkdir -p /usr/share/ollama/.ollama/models $ sudo chown -R ollama:ollama /usr/share/ollama
4. systemd サービスファイルを手動作成する
インターネット接続環境での `install.sh` はsystemdファイルを自動生成しますが、エアギャップでは手動で作成します。$ sudo tee /etc/systemd/system/ollama.service <<'EOF' [Unit] Description=Ollama Service After=network-online.target [Service] ExecStart=/usr/local/bin/ollama serve User=ollama Group=ollama Restart=always RestartSec=3 Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" Environment="OLLAMA_MODELS=/usr/share/ollama/.ollama/models" [Install] WantedBy=default.target EOF # systemd に読み込ませてサービスを有効化 $ sudo systemctl daemon-reload $ sudo systemctl enable ollama
モデルをエアギャップサーバーに展開して動作確認する
1. モデルアーカイブを展開する
# /usr/share/ollama/.ollama/ 配下に models ディレクトリを展開 $ sudo tar xzf /tmp/ollama-models.tar.gz \ -C /usr/share/ollama/.ollama/ # 所有者を ollama ユーザーに変更(必須) $ sudo chown -R ollama:ollama /usr/share/ollama/.ollama/models # 展開確認 $ ls /usr/share/ollama/.ollama/models/ blobs manifests # モデルのマニフェストが存在するか確認 $ ls /usr/share/ollama/.ollama/models/manifests/registry.ollama.ai/library/ llama3.3 gemma3 phi4
2. Ollamaサービスを起動して動作確認する
# サービス起動 $ sudo systemctl start ollama # 起動状態確認 $ sudo systemctl status ollama * ollama.service - Ollama Service Loaded: loaded (/etc/systemd/system/ollama.service; enabled) Active: active (running) since Mon 2026-09-28 09:45:00 JST; 5s ago # モデル一覧確認(pull したモデルが表示されれば成功) $ ollama list NAME ID SIZE MODIFIED llama3.3:70b-instruct-q4_0 a6eb4748fd29 43 GB 2 hours ago gemma3:12b-instruct-q4_0 bc5d9ef12345 8.1 GB 2 hours ago # テスト実行 $ ollama run llama3.3:70b-instruct-q4_0 "こんにちは。一文で自己紹介してください" こんにちは!私はLlama 3.3、MetaのオープンソースLLMです。
Ollamaサービスの基本的な設定オプションについては、Ubuntu ServerでローカルLLMを構築する方法も参照してください。通常環境との差分を把握しておくとトラブル対処に役立ちます。
3. GGUFファイルからモデルをインポートする(代替方法)
モデルのディレクトリ全体を転送する代わりに、GGUF形式のファイル単体を持ち込んで登録する方法もあります。モデルを頻繁に入れ替える環境に向いています。# 接続環境でGGUFファイルをHugging Faceから取得してエアギャップサーバーへ転送後、 # Modelfile を作成する $ cat > /tmp/Modelfile <<'EOF' FROM /tmp/Llama-3.3-70B-Instruct.Q4_K_M.gguf EOF # ollama create でモデルを登録 $ ollama create llama3.3-local -f /tmp/Modelfile transferring model data creating model layer success # 確認 $ ollama list NAME ID SIZE MODIFIED llama3.3-local abc123def456 43 GB 10 seconds ago
エアギャップ環境でのよくあるトラブルと対処法
1. ollama list に何も表示されない
モデルのパスが設定と一致していない可能性があります。# サービスが使っている OLLAMA_MODELS を確認 $ sudo systemctl cat ollama | grep OLLAMA_MODELS Environment="OLLAMA_MODELS=/usr/share/ollama/.ollama/models" # そのパスにモデルが展開されているか確認 $ ls /usr/share/ollama/.ollama/models/manifests/registry.ollama.ai/library/ llama3.3 gemma3 # 所有者が ollama ユーザーか確認 $ stat /usr/share/ollama/.ollama/models/blobs/ | grep Uid Access: (0755/drwxr-xr-x) Uid: ( 999/ ollama) Gid: ( 999/ ollama)
2. ollama run でモデルが動かない(OOM・クラッシュ)
モデルのサイズがサーバーのメモリ(RAM/VRAM)を超えている可能性があります。# メモリ残量を確認 $ free -h total used free Mem: 31Gi 5.2Gi 25Gi # GPU(NVIDIA)の場合はVRAMを確認 $ nvidia-smi --query-gpu=memory.total,memory.free --format=csv,noheader 24576 MiB, 23000 MiB # journalctl でエラーを確認 $ sudo journalctl -u ollama -n 50 --no-pager | grep -i "error\|oom\|killed"
3. バイナリが起動しない(exec format error)
アーキテクチャの不一致が原因です。# エラー例 $ /usr/local/bin/ollama --version -bash: /usr/local/bin/ollama: cannot execute binary file: Exec format error # サーバーのアーキテクチャを再確認 $ uname -m aarch64 # arm64 用バイナリが必要だったのに amd64 を持ち込んでいた # arm64 用のバイナリを用意する必要がある
4. GGUFインポートが途中で失敗する
Modelfile の `FROM` に指定したパスが Ollama サービス(ollama ユーザー)から読み取れない場合です。# GGUFファイルの権限を確認 $ ls -la /tmp/Llama-3.3-70B-Instruct.Q4_K_M.gguf -rw-r--r-- 1 root root 43G Sep 28 09:00 Llama-3.3-70B-Instruct.Q4_K_M.gguf # ファイルをollamaが読める場所へ移動して権限を付与 $ sudo mv /tmp/Llama-3.3-70B-Instruct.Q4_K_M.gguf /usr/share/ollama/ $ sudo chown ollama:ollama /usr/share/ollama/Llama-3.3-70B-Instruct.Q4_K_M.gguf # Modelfile のパスを更新して再実行 $ ollama create llama3.3-local -f /tmp/Modelfile
本記事のまとめ
インターネット非接続のLinuxサーバー(エアギャップ環境)にOllamaを構築する全手順を解説しました。接続環境でのファイル準備から転送・展開・起動確認まで、実際のコマンドに沿って進められる構成にしています。| フェーズ | 作業場所 | 主なコマンド | ポイント |
|---|---|---|---|
| バイナリ取得 | 接続環境 | curl -LO ollama-linux-amd64.tgz |
uname -m でアーキテクチャ確認必須 |
| モデルpull | 接続環境 | ollama pull llama3.3:70b-instruct-q4_0 |
量子化タグで容量を調整して選定 |
| パッキング | 接続環境 | sudo tar czf ollama-models.tar.gz -C /usr/share/ollama/.ollama models |
sha256sumでチェックサムも同時取得 |
| バイナリ展開 | エアギャップサーバー | sudo cp ollama /usr/local/bin/ && sudo chmod +x /usr/local/bin/ollama |
ollamaユーザー作成とsystemdファイルを手動作成 |
| モデル展開 | エアギャップサーバー | sudo tar xzf ollama-models.tar.gz -C /usr/share/ollama/.ollama/ |
chown -R ollama:ollamaで権限を必ず修正 |
| 動作確認 | エアギャップサーバー | ollama list && ollama run llama3.3:70b-instruct-q4_0 "テスト" |
ollama listにモデルが表示されれば成功 |
20年以上サーバー管理の現場に関わってきた経験から言えば、エアギャップ作業でよくあるミスは「chown漏れ」と「アーキテクチャ不一致」の2点です。展開後は必ず `ollama list` と `ollama run` の両方で確認し、モデルが表示されない場合はまず所有者と OLLAMA_MODELS のパスを疑ってください。
GGUFファイルからのインポートも覚えておくと、モデル更新時の転送作業が格段に楽になります。tar.gz 丸ごと転送は初回セットアップには向いていますが、定期的にモデルを入れ替える運用では GGUF+Modelfile のフローが現実的です。
エアギャップ環境のローカルLLM運用を2日間で体験する
オフライン構築の手順を覚えても、実際にGPUサーバーで動かさなければ体感が掴めません。実機GPU環境でOllamaのインストール・モデル切替・REST API連携を手を動かしながら習得したい方向けに、「ローカルAIマスターセミナー」を開催しています。
少人数(最大8名)ZOOMハンズオン形式で実施しています。
・Ubuntu ServerでローカルLLMを構築する方法|Ollamaで機密データを外に出さず業務AIを動かす完全ガイド
・社内でChatGPTが使えないときの代替手段|機密データを守るローカルLLMという選択肢
・ローカルLLMのモデルを比較する方法|Llama3.3・Mistral・Gemma・Phi-4をUbuntuで使い分けるポイント
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:OllamaのAPIをPython asyncioで並列呼び出しする方法|httpxとasyncio.gatherで複数プロンプトを同時処理してスループットを向上させる手順
- この記事の属するカテゴリ:ローカルLLMへ戻る

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