本ページはプロモーションが含まれています。

Gemma 3 4B級の小型LLMをOllamaで動かせたら、次は「どこに置けばAPIを24時間待ち受けてくれるのか」で迷います。共用レンタルサーバーは月額が安いものの、Ollamaの常駐には向きません。この記事では、Ollama 常駐の置き場所として、ConoHa VPS・さくらのVPSのメモリ4GBプランと、自宅PCの電気代をどう比べるかを整理します。今のPythonからの呼び出し方と、毎日止めずに動かすための設定もあわせて紹介します。

Ollamaを共用レンタルサーバーで常駐できない3つの理由

最初に、共用レンタルサーバーを候補から外す理由を書いておきます。月額が安く、cron(決まった時刻にコマンドを実行する仕組み)も使えるので、つい候補に入れたくなるところです。

理由1:常駐プロセスを前提にしていない

Ollamaは、ollama serve というサーバープロセスが常に起動していて、そこにHTTPでリクエストを送る作りです。共用レンタルサーバーは、cronで短時間だけ処理を動かす使い方が基本です。プロセスを起動しっぱなしにする用途は原則として想定されていません。各社の公式マニュアルでも、cronの最短実行間隔や常駐の扱いは明記されていないことが多いです。契約前には、規約とサポート窓口で「常駐プロセスを起動してよいか」を必ず確認してください。

理由2:インストールにroot権限が要る

Ollamaの公式インストーラーは、systemd(Linuxでサービスの起動や再起動を管理する仕組み)にサービスを登録します。この登録にはroot権限(サーバーの管理者権限)が必要です。共用レンタルサーバーではrootを持てません。root権限があるのはVPS(仮想専用サーバー)か自宅のマシンです。

理由3:モデル本体がメモリに載らない

LLMは、推論のあいだモデル全体をメモリに展開します。共用サーバーは1台のマシンを多数の契約者で分け合う仕組みなので、1ユーザーが数GBのメモリを専有する使い方はできません。

なお、調査では「月間100万PV程度のWordPressなら月額1,000円程度の共用レンタルサーバーで足りる。root権限や独自アプリが必要ならVPS」という整理もありました。Ollamaはまさに後者です。Webhookの受け口のような軽い処理なら共用サーバーで足りる場合もあり、その線引きはLINE Webhook エックスサーバーかVPSか|26年11月にまとめています。

ConoHa VPS・さくらのVPS 4GBプランと自宅PC電気代の比べ方(2026年11月)

調査で確認できた料金・SLA

先にお断りしておくと、今回の調査ではConoHa VPSとさくらのVPSの「メモリ4GBプラン」の現行月額は確認できませんでした。この記事では金額を推測で埋めず、確認できた数字だけを載せます。4GBプランの金額は、契約前に各社の公式料金ページで確認してください。

サービス

調査で確認できた料金

SLA(稼働率保証)

Ollama常駐に関係する点

ConoHa VPS

512MB・36ヶ月で月額296円〜/時間課金1時間1.3円(512MB)。1GBのキャンペーン価格450円は2026年9月17日で終了

月間99.99%以上

時間課金があるので、数時間だけ借りてメモリを測れる。4GBの月額は公式ページで要確認

さくらのVPS

2025年11月時点で512MB 643円〜、1GB 880円〜、2GB 1,738円〜。2週間無料お試しあり

メモリ4GB以上かつV5以上のLinuxプランで99.95%以上

SLAが付くのは4GB以上から。4GBの月額は公式ページで要確認

Xserver VPS(参考)

4GB・36ヶ月で月額1,700円〜。2GBは2026年7月14日から新規受付停止

調査結果になし

4GBはNVMe 150GB。調査結果には「2026年9月1日に全プラン約38%値上げ」という記述もあるため、現行額は公式ページで要確認

自宅PC

電気代(下の式で計算)

なし

手持ちのPCを使うなら初期費用はかからない。止まる要因は自分で管理することになる

さくらのVPSで2026年10〜11月にあったこと

  • 2026年10月21日〜22日に、緊急メンテナンスでサービスが一時停止しました。VPSでも止まることはあります。
  • Linuxカーネルの脆弱性への対応で一部プランの新規受付を一時停止し、石狩リージョンは10月23日、大阪リージョンの一部プランは10月30日に受付を再開しました。ConoHa VPSでも同時期に新規受付の停止と再開がありました。申し込み前に各社の「お知らせ」を確認してください。
  • 標準OS/Public ISOの「Debian 11」は2026年11月12日で提供終了です。これから構築するなら、Debian 11以外のOSを選びます。

自宅PCの電気代は「実測ワット数×時間×単価」で出す

自宅PCの電気代はマシンごとの差が大きいので、他人の数字を当てはめても参考になりません。ワットチェッカー(コンセントと電源プラグの間に挟んで消費電力を測る機器)で、待機中と推論中の消費電力を測り、契約している電力会社の単価(円/kWh)で計算してください。

月の電気代(円) = 平均消費電力(W) × 24(時間) × 30(日) ÷ 1000 × 電力単価(円/kWh)

APIの待ち受けが目的なら、PCの大半の時間は待機状態です。そのため平均消費電力は「待機時の値」に近くなります。この計算結果をVPS 4GBの月額と並べれば、自宅かVPSかを判断できます。

4GBに載るかは自分で測る

Gemma 3 4B級のモデルが4GBのメモリに収まるかどうかは、量子化(モデルを軽くするために数値の精度を落とす処理)の種類で変わります。OSやPythonもメモリを使います。そこで、実際に載せて次の3つで確かめます。私は、ConoHaの時間課金やさくらの2週間お試しで先に測ってから本契約する手順をすすめています。

確認すること

コマンド

見るところ

モデルファイルの大きさ

ollama list

SIZE列

ロード中のメモリ使用量

ollama ps

SIZE列と、CPU/GPUのどちらで動いているか

サーバー全体の空き

free -h

推論中の available とswap(メモリ不足時にディスクで代用する領域)の使用量

推論中にswapの使用量が増え続けるなら、そのプランではメモリが足りていません。

VPSにOllamaを常駐させ、Pythonから呼ぶ今の書き方

実行環境

  • サーバー:VPS(Linux、root権限あり)。OSはDebian 11以外を選ぶ
  • Python:3系(3.12系を想定)。python3 --version で確認
  • パッケージ:pip install requests のみ。HTTPでJSONを送るだけなので、特定のバージョンに依存する機能は使っていません。そのためバージョン指定は不要です。入っているバージョンは pip show requests で確認できます
  • Ollama:バージョンは ollama --version で確認します。モデル名やAPIの仕様は更新されることがあるので、公式ドキュメント(GitHubのdocs)とも照らし合わせてください

インストールとsystemdでの常駐

curl -fsSL https://ollama.com/install.sh | sh
ollama pull gemma3:4b
systemctl status ollama
systemctl cat ollama

1行目で公式インストーラーを実行します。インストーラーはsystemdに ollama サービスを登録し、OS起動時に自動で立ち上がるように設定します。2行目でモデルを取得します。3行目で active (running) と表示されれば常駐しています。4行目では登録されたユニットファイル(サービスの設定ファイル)を表示します。ここで、異常終了時に再起動する Restart= の設定が入っているかを確認しておきます。

モデルをメモリに載せたままにする

Ollamaは、しばらくリクエストが来ないとモデルをメモリから降ろします。降ろされたあとの最初の1回は、モデルの読み込みからやり直すので応答が遅くなります。常時待ち受けが目的なら、モデルを載せたままにしておきます。

sudo systemctl edit ollama

エディタが開いたら、次の内容を書き込みます。

[Service]
Environment="OLLAMA_KEEP_ALIVE=-1"
sudo systemctl daemon-reload
sudo systemctl restart ollama

systemctl edit で作られる上書き用ファイルに環境変数を書くと、インストーラーが作ったユニットファイルを直接書き換えずに済みます。Ollamaを更新したときに設定が消えにくいのが利点です。-1 は「モデルを降ろさない」という指定です。ただしメモリ4GBでは、他の処理が使えるメモリがその分減ります。前の節の free -h で余裕があるか確認してから設定してください。

以前の書き方:nohupで起動し、CLIをsubprocessで呼ぶ

#!/bin/sh
# 以前:SSHでログインしてバックグラウンド起動
nohup ollama serve > /home/username/ollama.log 2>&1 &
import subprocess

# 以前:CLIを毎回起動して標準出力を読む
out = subprocess.run(
    ["ollama", "run", "gemma3:4b", "要約して: ..."],
    capture_output=True, text=True,
).stdout

この書き方は、サーバーを再起動するとOllamaが起動しなくなります。プロセスが落ちても誰も立ち上げ直しません。さらに、呼び出しのたびにCLIを起動するので無駄が多く、タイムアウトも設定できません。標準出力には装飾用の文字が混ざることもあり、出力を解析する処理が壊れやすくなります。

今の書き方:systemdに任せ、HTTP APIをrequestsで呼ぶ

import requests

OLLAMA_URL = "http://127.0.0.1:11434/api/chat"
MODEL = "gemma3:4b"


def ask(prompt: str, timeout: int = 120) -> str:
    payload = {
        "model": MODEL,
        "messages": [{"role": "user", "content": prompt}],
        "stream": False,
    }
    res = requests.post(OLLAMA_URL, json=payload, timeout=timeout)
    res.raise_for_status()
    return res.json()["message"]["content"]


if __name__ == "__main__":
    print(ask("次の文を30字で要約してください: 本日は晴天なり。"))
  • 接続先:同じサーバー内のOllama(ポート11434)に、ループバックアドレス(127.0.0.1、自分自身を指すアドレス)で接続します。外部には公開しません。
  • payload:/api/chat にモデル名と会話履歴を渡します。"stream": False にすると、生成が終わってから応答全体が1つのJSONで返ってくるので、Pythonで扱いやすくなります。
  • timeout:CPUだけで推論するVPSでは、応答に時間がかかることがあります。タイムアウトを指定しておかないと、スクリプトが応答を待ったまま止まってしまいます。
  • raise_for_status:モデル名の誤りなどでOllamaがエラーを返したとき、例外として検知できます。

手元から使うときはポートを開けずにSSHトンネルで

Ollamaのポートをインターネットに公開すると、誰でも推論を実行できる状態になります。手元のPCから使いたいときは、ファイアウォールで11434番を開けるのではなく、SSHトンネル(SSH接続の中に別の通信を通す方法)を使います。

ssh -N -L 11434:127.0.0.1:11434 username@myserver

このコマンドを実行している間は、手元の http://127.0.0.1:11434 宛ての通信がVPS上のOllamaに転送されます。上のPythonコードは書き換えずにそのまま使えます。

応答時間を自分の環境で測るスクリプト

import statistics
import time

from client import ask  # 上のコードを client.py として保存しておく

times = []
for i in range(5):
    start = time.perf_counter()
    ask("Pythonのリスト内包表記を1文で説明してください。")
    times.append(time.perf_counter() - start)
    time.sleep(2)

print(f"1回目: {times[0]:.1f}秒")
print(f"2回目以降の中央値: {statistics.median(times[1:]):.1f}秒")

1回目には、モデルの読み込み時間が含まれる場合があります。そのため、1回目と2回目以降を分けて表示しています。この数字をConoHaの時間課金やさくらのお試し期間中に測り、自宅PCでも同じスクリプトで測ってください。同じ条件で比べたデータがそろうので、どこに置くかの判断材料になります。

LLMに渡すデータを取得するときのサイトへの配慮

Ollamaを常駐させると、スクレイピングしたページを要約させるなど、外部サイトからデータを取得する処理と組み合わせることが増えます。取得先のサイトに迷惑をかけないため、次の3点は守ってください。

  • robots.txt:取得してよいパスかどうかを、プログラムで判定します。
  • 利用規約:自動取得やAIでの加工を禁止していないか、取得したデータの再配布が許されているかを読みます。ログインや回数制限があるサイトは、それを回避して取得しません。公式APIがあればそちらを使います。
  • アクセス間隔:LLMの推論は時間がかかるので、取得処理は推論とは切り離します。取得側は1件ずつ間隔を空けて実行します。並列で連続アクセスするような書き方はしません。
import time
import urllib.robotparser

import requests

UA = "my-summary-bot (contact: example.com)"
rp = urllib.robotparser.RobotFileParser("https://example.com/robots.txt")
rp.read()

for url in ["https://example.com/news/1", "https://example.com/news/2"]:
    if not rp.can_fetch(UA, url):
        continue
    html = requests.get(url, headers={"User-Agent": UA}, timeout=30).text
    # ここで本文を抽出して ask() に渡す
    time.sleep(10)

取得する前に can_fetch で許可されているかを判定し、1件ごとに time.sleep で間隔を空けています。待ち時間は、robots.txtにCrawl-delay(クローラーに求めるアクセス間隔)の指定があればその値に合わせ、なければ余裕を持った長めの値にしておきます。

APIを常時待ち受けるならメモリ4GBのVPSを1台選ぶ

置き場所ごとの止まる条件

置き場所

cron

Ollama常駐

root権限

止まる条件

手元のPC

使える

できる

あり

スリープ、シャットダウン、OS更新による再起動、停電、回線断。外部からアクセスさせるならポート開放が必要

共用レンタルサーバーのcron

使える(最短間隔は各社マニュアルで確認)

原則できない

なし

そもそもOllamaを置けない。cronで動かすのは、外部APIを呼ぶ軽い処理まで

VPS(4GB)

使える

できる

あり

事業者のメンテナンス(さくらのVPSは2026年10月21〜22日に緊急停止)、メモリ不足でOSに強制終了されたとき、ディスクがいっぱいになったとき、契約の更新忘れ

結論:常時待ち受けならVPS、候補はConoHaかさくら

「APIを常時待ち受けたい」という条件なら、私はメモリ4GBのVPSを1台選びます。自宅PCは、スリープやOS更新、停電で止まります。さらにIPv6系の回線では外部から接続させること自体が難しい場合があります(詳しくはv6プラス ポート開放できない自宅公開とVPS比較|26年11月)。

  • さくらのVPS:SLAが付くのは4GB以上かつV5以上のLinuxプランからです。4GBを借りるなら、ちょうどSLAの対象に入ります。2週間のお試し期間で、メモリに載るかを先に確認できます。
  • ConoHa VPS:SLAは99.99%以上です。時間課金があるので、数時間だけ借りて応答時間を測ってから決められます。

この2社の4GBの月額は、公式料金ページで同じ契約期間にそろえて比べてください。そのうえで、自宅PCの電気代の計算結果と並べれば判断できます。自宅PCの電気代がVPSの月額より安く、なおかつ「自分が使うときだけ動けばよい」という条件なら、自宅PCでも十分です。

VPSで毎日動かし続けるための設定

# crontab -e で追加
*/5 * * * * curl -sf --max-time 10 http://127.0.0.1:11434/api/tags > /dev/null || systemctl restart ollama
0 7 * * * /usr/bin/python3 /home/username/jobs/daily_summary.py >> /home/username/logs/daily.log 2>&1
  • 1行目は死活監視です。5分ごとにOllamaのモデル一覧API(/api/tags)を呼び、10秒以内に応答がなければサービスを再起動します。systemctl restart にはroot権限が必要なので、rootのcrontabに登録します。
  • 2行目は毎朝7時に要約処理を実行し、出力をログファイルに追記します。ログがないと、処理が止まったことに気づけません。
  • このほか、df -h でディスクの空きを定期的に確認します。新しいモデルを取得するたびに容量を消費するからです。各社の「お知らせ」のメンテナンス情報も購読しておくと、停止の予定を事前に把握できます。

関連する選択肢

毎日決まった時刻にスクリプトを動かすだけなら、共有のレンタルサーバーでも足ります。cronが使えるプランを選べば、自分でOSを管理する必要はありません。

レンタルサーバー エックスサーバー

※ 広告を含みます(A8.net)。リンク経由でお申し込みがあった場合、手数料を受け取ることがあります。

Ollama常駐先の選び方の要点

Ollamaは常駐プロセス・root権限・数GBのメモリをすべて必要とします。共用レンタルサーバーには置けないので、候補はVPSか自宅PCに絞られます。APIを常時待ち受けるなら、メモリ4GBのVPSを1台借りるのが現実的です。さくらのVPSは4GB以上でSLA 99.95%が付き、2週間のお試しがあります。ConoHa VPSはSLA 99.99%で、時間課金で試せます。両社の4GBの月額は今回の調査では確認できなかったため、公式料金ページで同じ条件にそろえて比べてください。自宅PCは「実測ワット数×24×30÷1000×単価」で電気代を出して比較します。運用面では、systemdで常駐させ、HTTP APIをタイムアウト付きで呼びます。ポートは公開せずSSHトンネルで接続し、cronの死活監視とログで停止に気づける状態にしておくことが、毎日動かし続けるための条件です。