OllamaをインターネットなしのLinuxサーバーで運用する方法|エアギャップ環境でのモデル配布・オフライン構築手順

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOME > Linux技術 リナックスマスター.JP(Linuxマスター.JP) > ローカルLLM > OllamaをインターネットなしのLinuxサーバーで運用する方法|エアギャップ環境でのモデル配布・オフライン構築手順
「セキュリティポリシーでインターネット接続が禁止されたサーバーにローカルLLMを入れたい」
「エアギャップ環境へのOllamaの持ち込み方がわからず、ネットが使えないとどうにもならない」

そんな悩みを抱えるインフラエンジニアや情シス担当者は多いはずです。この記事では、インターネット接続のないLinuxサーバー(エアギャップ環境)にOllamaをインストールし、あらかじめ準備したモデルファイルを転送して実際に使えるようにするまでの手順を解説します。事前準備で必要なファイルの一覧から、エアギャップサーバーでの展開と動作確認まで、実際のコマンド例とともに丁寧に説明します。

この記事のポイント

・OllamaバイナリはGitHub Releasesのtar.gzを接続環境で取得してエアギャップサーバーへ転送する
・モデルは接続環境でollama pullしたあと~/.ollama/modelsをtar czfでパッキングして持ち込む
・GGUFファイル+Modelfileのインポートを使えばモデル更新時の転送量を最小化できる
・OLLAMA_MODELS環境変数でモデル置き場を外付けストレージに変更すると容量管理が楽になる


OllamaをインターネットなしのLinuxサーバーで運用する方法|エアギャップ環境でのモデル配布・オフライン構築手順

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

エアギャップ環境でローカル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

アーキテクチャによってダウンロードするバイナリが変わります。x86_64(amd64)の場合は `ollama-linux-amd64.tgz`、ARM64の場合は `ollama-linux-arm64.tgz` を用意します。RaspberryPi 4/5や一部のクラウドインスタンスはarm64です。確認を忘れると展開したバイナリが起動しないので必ず先に調べておきます。

接続環境で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

最新バージョン番号は https://github.com/ollama/ollama/releases で必ず確認してください。

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"

`blobs/` に実際のモデルデータ(sha256ハッシュ名のファイル)が、`manifests/` にモデルのメタ情報が格納されています。この2つのサブディレクトリを含む `models/` ディレクトリごと tar でパッキングします。

モデルファイルをパッキングしてエアギャップサーバーへ転送する

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/

物理媒体(USBメモリ)を使う場合は、マウント後にコピーします。媒体にもチェックサムファイルを一緒に入れておくと、持ち込み後の検証に役立ちます。

社内のローカル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

`FAILED` と表示された場合は再転送が必要です。

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

GPUを使う場合はサービスファイルに `Environment="CUDA_VISIBLE_DEVICES=0"` を追記します。CPUのみのサーバーであればこの設定は不要です。

モデルをエアギャップサーバーに展開して動作確認する

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 list` にモデルが表示され、`ollama run` でレスポンスが返ればエアギャップ構築は完了です。

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

GGUF単体ファイルの転送ならディレクトリ構造を考慮しなくてよいため、USBメモリへのコピーや運搬が簡単です。モデルを定期的に更新する場合は、差分のGGUFだけを持ち込めばよい点もメリットです。

エアギャップ環境でのよくあるトラブルと対処法

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)

所有者が root のままだとサービスが読み取れません。`sudo chown -R ollama:ollama /usr/share/ollama/.ollama/models` で修正します。

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"

メモリ不足の場合は、より量子化率の高いモデル(`q4_0` → `q2_K` など)を再度接続環境で pull してパッキングし直します。

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ハンズオン形式で実施しています。

>> ローカルAIマスターセミナーの詳細を確認する
ローカルLLMの構築・運用に関する関連記事もあわせて参考にしてください。

・Ubuntu ServerでローカルLLMを構築する方法|Ollamaで機密データを外に出さず業務AIを動かす完全ガイド
・社内でChatGPTが使えないときの代替手段|機密データを守るローカルLLMという選択肢
・ローカルLLMのモデルを比較する方法|Llama3.3・Mistral・Gemma・Phi-4をUbuntuで使い分けるポイント

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。