月額課金を払わずにLLMを使い続ける方法が、Raspberry Pi 5で実現できます。
この記事では、Raspberry Pi 5(8GB)にllama.cppとOpen WebUIを導入し、Tailscaleを使って外出先からもアクセスできるローカルLLMサーバーを構築する手順を解説します。
この記事でわかること:
- llama.cppをRaspberry PiにHomebrewでインストールする方法
- Open WebUIをDockerで立ち上げてllama.cppと連携する手順
- Tailscaleでポート開放なしにリモートアクセスを実現する設定
- Raspberry Pi 5で動作する現実的なモデルサイズと速度の目安
llama.cppをRaspberry Pi 5に導入する
https://github.com/ggerganov/llama.cpp
llama.cppはC++で書かれたLLM推論エンジンです(GitHubスター数:10万超)。OllamaのようにシンプルなCLIは持っていませんが、その分オーバーヘッドが少なく、CPUのみで動作するRaspberry Piのような非力な環境でも効率よくモデルを実行できます。量子化形式(GGUF)のモデルを直接扱えるため、メモリ消費を細かくコントロールできる点も利点です。
OSはRaspberry Pi OS Liteを選びます。デスクトップUIを省くことで、限られたRAMをLLM推論に集中させられます。インストール後はSSHを有効にして、メインPCのターミナルから操作する形にしましょう。
llama.cppのインストールにはHomebrewを使います。最初にgitを入れてからインストールスクリプトを実行します。
sudo apt install git -y
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install llama.cpp
動作するモデルサイズを見極める
Raspberry Pi 5(8GB)で安定して動作するのは0.8B〜3Bクラスのモデルです。それ以上のパラメータ数になるとメモリ不足でクラッシュするか、応答速度が実用に耐えないレベルに落ちます。
まずQwen3.5-0.8Bで動作確認します。
llama-cli -hf bartowski/Qwen_Qwen3.5-0.8B-GGUF:Q4_K_M -p "Tell me about Linux" -n 128
0.8Bが問題なく動いたら、Llama-3.2-3Bにも挑戦できます。ただし3Bではコンテキスト長を1024に制限しないとメモリ不足でクラッシュします。
llama-cli -hf bartowski/Llama-3.2-3B-Instruct-GGUF:Q4_K_M -p "Tell me about Linux" -n 128 -c 1024
この条件でのスピードは5.6 tokens/secondです。返答生成に数十秒かかりますが、軽いタスクなら十分使えるレベルです。普段使いのメインLLMにはなりませんが、プライベートなデータを扱う用途やエッジ処理では現実的な選択肢になります。
Open WebUIでブラウザから操作できるUIを用意する
https://github.com/open-webui/open-webui
Open WebUIはOllama・OpenAI API互換サーバーに対応したウェブUIです(GitHubスター数:13万超)。ChatGPTライクなインターフェースで複数のモデルを切り替えながら使えます。Dockerで起動するため環境を汚さずに導入でき、他のマシンにすでにインスタンスがある場合はそちらを流用することも可能です。
docker run -d -p 3000:8080 -v open-webui:/app/backend/data \
--name open-webui ghcr.io/open-webui/open-webui:main
Open WebUIを起動したら、llama.cppのサーバーモードも有効にします。OllamaはAPIサーバーを自動で立ち上げますが、llama.cppでは明示的にllama-serverコマンドを使ってサーバーを起動する必要があります。
llama-server -hf bartowski/Qwen_Qwen3.5-0.8B-GGUF:Q4_K_M --host 0.0.0.0 --port 8082
Open WebUIにブラウザでアクセスし、Admin Settings → Models からRaspberry PiのIPアドレスとポート8082を登録すれば、チャットUIからモデルを呼び出せるようになります。
Tailscaleでポート開放なしにリモートアクセスする
ここまでの設定ではLAN内のデバイスからしかOpen WebUIにアクセスできません。外出先から使うには外部への公開が必要ですが、ルーターのポート開放はセキュリティリスクを伴います。インターネットに直接さらされた状態では、Open WebUIが不正アクセスの標的になりえます。
TailscaleはWireGuardベースのVPNサービスで、ポート開放なしにデバイス間の暗号化された直接通信を実現します。Raspberry Piへのインストールは1コマンドです。
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
表示されたURLをブラウザで開いてTailscaleアカウントにサインインすると、ネットワーク内でRaspberry PiにIPアドレスが割り当てられます。スマートフォンをモバイル通信に切り替えた状態でも、http://[TailscaleのIPv4]:3000 にアクセスするとOpen WebUIが開きます。スマートフォン・タブレット・ノートPCに対応しており、複数デバイスを同じネットワークに追加しておくことで、外出先からどのデバイスでも利用できます。
3Bモデル以上で問題が出るときの対処
3BクラスのモデルをOpen WebUIから呼び出す場合、llama-serverのデフォルトのコンテキスト長が長すぎてメモリ不足になることがあります。llama-serverの起動オプションに -c 1024 を付けてコンテキスト長を明示的に制限するか、Open WebUIのモデル設定で num_ctx を下げることで安定します。
Ollamaと比べてllama.cppはチューニングの自由度が高い反面、パラメータの調整が必要な場面が増えます。llama.cppの設定に慣れていない場合はOllamaから始め、パフォーマンスが物足りなくなった時点でllama.cppに移行する方法も現実的です。
Raspberry Pi 5の実力と向いている用途
RTX 3080 Ti環境と比べれば雲泥の差で、Qwen 9BをMCPサーバーと組み合わせて数秒で応答させるような使い方はできません。それでもRaspberry Pi 5が光る場面は確かにあります。
ドキュメントからのテキスト抽出、スマートホームの音声コマンド処理、軽量な要約タスクなど、レスポンス速度よりもオフライン動作やプライバシーが優先される用途では実用的です。クラウドサービスに月額を払い続けるよりも、1回の初期投資でサーバーを手元に置くほうがコスト的に有利になるケースもあります。
今後はエッジコンピューティングの実験や、複数のRaspberry Piを組み合わせた分散推論にも応用できる構成です。モデルをローカルで動かす環境を一度作っておくと、クラウドに頼らない実験の幅が広がります。