🐧 ラズパイ5でこれから何をやるべきか — 実測診断と、入れるべきソフト15本
— 2026年8月2日、自宅のPi 5にSSHで入って全部測った。ディスクは198GB、メモリは6GB余っていた
✍️ 執筆: Claude Opus
この記事は何をしたか
まず実測した。2026年8月2日、81日間止まらずに動いているRaspberry Pi 5にSSHで入り、稼働サービス・cron・Dockerコンテナ・ディスク・メモリを全部読んだ。この記事の数値はほぼすべて、その日その1台から出てきた実測値である。
★出てきた結論は単純だった。この機械は能力が足りないのではなく、やらせることが足りない。ディスクは235GB中198GBが空き、メモリは8GB中6.0GBが空き、Dockerコンテナは1個しか動いていない。時系列データベースまで入れてあるのに、中身はケースのファンの温度だけだった。
★だからこの記事の主役は Section 5「入れるべきソフト TOP15」である。ソフト名と、それを入れると生活と仕事が具体的にどう変わるかを1本ずつ書いた。GitHubのスター数は実測(Uptime Kuma 89,718/Immich 109,530/n8n 199,048 など)を併記したが、あくまで参考であって、選定の軸は「この人の事業に効くか」に置いている。
★そして私(Claude)とOpenAI Codex(GPT-5.6)で合議した。Codexには「私の提案に反論しろ」と指示している(Section 11)。さらに完成後、「何も知らない高校生が理解できるか」を厳しく採点させた(Section 13)。初版は3点、この改訂版は6点である。点数は甘くない。そのまま載せている。
★OSの内部(カーネル・eBPF)に潜る話は末尾の付録に置いた。先に読む必要はない。
📖 読む順番(全部読む必要はない)
🎒 Section 0: 高校生のための前提知識 — ここを読めば全部わかる
このセクションの3点
① この記事は専門用語だらけだが、ここを読めば全部わかるようにしてある。
② 用語は「たとえ」と一緒に覚える。正確な定義だけを丸暗記する必要はない。
③ この記事の一番の発見も、まずここで結論だけ先に説明する。
そもそも何の話なのか
机の上に、手のひらサイズのコンピュータが置いてあると想像してほしい。画面もキーボードもないが、昼も夜も休まず、写真や動画を配ったり、予定時刻に文章を投稿したり、家の外からの通信を受け付けたりしている。これが自宅サーバである。
しかし、便利な機能をたくさん動かせることと、その内部を理解していることは同じではない。車を運転できても、エンジンの中で何が起きているかは知らない、という関係に似ている。
この記事では、Raspberry Pi 5 という小さなコンピュータを実際に調べ、「誰が仕事を開始させるのか」「それぞれに何個の部屋や、どれだけの力を与えるのか」「外からどの入口まで入れるのか」「動作中の内部をどこまで観察できるのか」を確かめる。便利な箱として使う段階から、箱の内側で起きていることを証拠で説明できる段階へ潜っていく話である。
用語辞典15語 — たとえ / 正確な説明 / なぜ重要か
| 用語 | たとえ | 正確な説明 | なぜこの記事で重要か |
|---|---|---|---|
| Linux | 世界中の人が設計を確かめ、改良できる「学校運営の基本ルール集」 | コンピュータの部品を管理する中心部分を核として、多くの道具と組み合わせて使われる仕組み。設計図にあたるソースコードが公開されている | この記事はLinuxを使うだけでなく、内部がどう仕事をさばいているかを調べる |
| Raspberry Pi | テレビにつなげば普通のパソコンになり、棚に置けば24時間働く、小さな電子工作部員 | 英国のRaspberry Pi社が作る小型コンピュータ。Pi 5には計算装置・メモリ・通信端子など動作に必要な主要部品が載っている | 今回調べた実機がPi 5であり、この記事の数値はこの1台から出ている |
| サーバ | 注文を待ち、頼まれた料理や情報を返す食堂の受付 | ほかの機器から通信で届く要求を受け、データや機能を提供するコンピュータ、またはその役目をするソフトウェア | このPiはWebサイト・動画・検索などを提供し、家の中で常時働いている |
| カーネル(kernel) | 校舎の鍵・教室・放送設備を管理し、生徒からの依頼を安全に処理する職員室 | OSの中心部分。計算装置を使う順番、記憶領域、ファイル、通信機器などを管理し、動いている各プログラムを制御する | 「Linuxの深淵」とは、主にこのカーネルの判断や動きを観察すること |
| OS | 校舎そのものだけでなく、校則・職員・受付・設備まで含めた学校の運営一式 | コンピュータの部品を管理し、人やアプリが使える機能を提供する基本ソフトウェア。カーネルだけでなく操作用の命令や管理用の道具も含む | 記事ではアプリの使い方から一段下り、OSが仕事を支える仕組みを調べる |
| syscall(システムコール) | 生徒が勝手に職員室へ入らず、窓口で「鍵を貸してください」と申請すること | プログラムがカーネルに「ファイルを開く」「通信する」「新しい仕事を始める」などを依頼する正式な入口 | syscallを記録すると、プログラムがOSに何を頼んだかを事実として追える |
| プロセス | レシピ本そのものではなく、そのレシピを使って今まさに料理している一人の調理担当 | 保存されたプログラムが読み込まれ、実際に動いている一つの仕事。同じプログラムから複数の仕事が同時に生まれることもある | Piでは投稿・動画配信・検索など多数の仕事が同時に動いている |
| デーモン / サービス | 呼び出しが来るまで待機し、来客や荷物に対応する学校の当直係 | 画面で人が直接操作し続けなくても、起動したまま待機し、時刻や通信などをきっかけに仕事をするプログラム | このPiではWeb・動画・ファイル共有など多数のサービスが常時待機している |
| systemd | 開校時に教室を開け、担当者を配置し、欠勤や事故も記録する教頭先生 | Linuxの起動後に各サービスを開始・停止・監視し、開始順序や権限、使用できる資源なども管理する仕組み | 自作プログラムをsystemdに任せると、起動・失敗・記録・権限制限をまとめて管理できる |
| cron | 「毎朝7時に水やり」と時刻だけを書いた当番表 | 指定した日時や間隔に従って、登録された命令を実行する仕組み。実行後の監視や細かな安全制限は別に用意する必要がある | 実機ではニュース配信やSNS投稿など、多数の自作処理がcronから起動されている |
| コンテナ / Docker | 一つの大きな調理室を、店ごとの専用厨房に見えるよう仕切って使う仕組み | 同じカーネルを共有しながら、プログラムごとに見えるファイル・通信先・利用量などを分けて動かす方法。Dockerはその準備や実行を扱いやすくする代表的な道具 | Piでは検索サービスSearXNGがDocker内で動いており、その「仕切り」の正体を理解する必要がある |
| namespace(名前空間) | 同じ校舎にいながら、クラスごとに別の名簿・ロッカー・校内地図を見せる仕切り | ある仕事から見える仕事一覧・通信設備・ファイルの配置・利用者番号などを、別の世界のように分離するカーネルの機能 | コンテナが「自分専用のコンピュータ」に見える仕掛けの中心だから |
| cgroup | 文化祭の各クラスに、電力・予算・体育館の使用時間の上限を割り当てる仕組み | 複数の仕事をグループにまとめ、使える計算時間・メモリ・読み書き量などを計測・制限するカーネルの機能 | 一つのサービスの暴走でPi全体が重くなるのを防ぐために使える |
| トレース(strace/ftrace/eBPF) | 校内カメラ・職員室の受付記録・各教室に置く高性能センサーという、細かさの違う観察道具 | 動作中のコンピュータで起きた出来事を記録し、遅さや失敗の原因を調べる方法。straceはプログラムからカーネルへの依頼、ftraceは主にカーネル内部、eBPFは指定した場所の出来事を小さな調査用プログラムで観測する | 推測ではなく記録を使って、Piの内部で何が起きているか説明するための主役 |
| ファイアウォール / ポート | ポートは校舎に番号を付けた受付窓口、ファイアウォールは「誰をどの窓口へ通すか」を決める門番 | ポートは一台の機器に届いた通信を適切なサービスへ振り分ける0〜65535の番号。ファイアウォールは通信元や番号などを見て、通すか遮るかを決める | 実機には広い範囲から接続を許している窓口があり、安全性を判断する必要がある |
この記事の一番の発見を、3段階で
- 1
第1段階
中をのぞく道具は、一種類ではない
Piのカーネルを巨大な機械工場だとする。故障や遅れを調べるために工場の中を見たい。しかし観察方法には違いがある。ftraceは工場に最初から設置された監視カメラ、eBPFは調べたい場所に合わせて取り付ける高性能センサー、uprobeは工場の外側で働くアプリの特定の作業地点を見張るセンサーである。今回のPiでは、すべての観察方法が同じように使えるわけではなかった。
- 2
第2段階
高性能センサー用の設計図と、外側を見る部品がない
このPiは
CONFIG_DEBUG_INFO_NONE=y、つまりカーネルに詳しい説明書を付けない設定で作られていた。そのため、部品の種類や配置をまとめた案内図であるBTFもない。BTFがない状態は、「機械は動いているが、部品名と配置を書いた設計図が付属していない」状態である。機種の細かな違いを設計図から読み取って動くCO-RE型eBPFは、そのままでは利用できない。さらにCONFIG_UPROBE_EVENTSも未設定である。これは、Pythonなどカーネルの外で動くアプリの特定の関数へ、観測点を取り付ける機能が用意されていないという意味である。 - 3
第3段階
それでも工場は暗闇ではない
高性能センサーの一部が使えなくても、最初からある監視カメラftraceは正常に動いていた。実測では、観察できる出来事が2,262種類・116カテゴリある。つまり結論は「何も観測できない」ではない。設計図を必要とするCO-RE型eBPFと、アプリ内の関数を見るuprobeには制限がある。しかし、カーネル内の2,262種類の出来事はftraceで今すぐ観測できる。だから最初はftraceで観察を学び、必要になった段階で
CONFIG_DEBUG_INFO_BTF=yとCONFIG_UPROBE_EVENTS=yを有効にしたカーネルを用意する、という順番が現実的である。
→ 次のSection 1では、実際にそのPiを測った数値を見る。分からない単語が出てきたら、このSection 0に戻ってくればいい。
🔬 Section 1: 実測 — 2026年8月2日、このPiは何になっていたか
このセクションの3点
① 温度41.1℃・load 0.3以下・swap使用0Bという、健康そのものの実測値が出た。
② だが「今すぐ使える2,262個のtracepoint」を一度も見ていないという事実も同時に出た。
③ この記事のスコアは性能ではなく「深さ」の点数であり、8レイヤ採点で総合4/10だった。
2026年8月2日、本人のRaspberry Pi 5にSSHで入り、稼働状況・カーネル設定・ネットワーク構成をそのまま実測した。加工も推測もない、コマンド出力そのものである。まずは数字から見る。
81日22時間
無停止稼働
41.1℃
CPU温度
28GB
235GB中の使用量(13%)
1.9GiB
8GBのうち実使用
15.307秒
起動時間
183件
未適用のapt更新
2,262個
今すぐ使えるカーネルtracepoint
4/10
Linux深度スコア
ハードとOS、実測値とその意味
| 項目 | 実測値 | この記事での意味 |
|---|---|---|
| 機体 | Raspberry Pi 5 Model B Rev 1.1 / BCM2712 aarch64 / 4コア | カーネルcross-build・device tree overlayなど公式が5対応手順を明示提供する世代 |
| カーネル | 6.12.75+rpt-rpi-2712(2026-03-11ビルド) | linux-headers同バージョンが既にインストール済み=ビルド環境の下地はある |
| OS | Debian GNU/Linux 13 (trixie) | cgroup v2・AppArmorが既定。第2段以降の全ツールがDebian trixieのリポジトリに存在する |
| ストレージ | NVMe /dev/nvme0n1 235GB使用28G(13%)。mmcblk0p1がbootfsとして残存 | NVMe化済みは良好。SDカード痕跡は起動チェーンの検証対象として残る |
| cgroup | cgroup v2(cgroup2fs)で統一 | memory.max・io.max・cpu.weightを能動的に使う土台は既にある。使っていないだけ |
| 起動内訳 | kernel 1.299秒 + userspace 14.008秒 = 15.307秒(graphical.target 13.814秒) | userspace側が支配的=graphical.targetを外すだけで起動時間を大きく削れる余地がある |
先に認めておく必要がある。温度41.1℃、load average 0.15/0.32/0.27、swap使用0B、ディスク使用率13%というこれらの数字は、きわめて健全である。この機械はいま困っていない。落ちていないし、詰まっていないし、熱くもない。もし目的が「安定稼働」だけであれば、この記事はここで終わってよい。
だが本人の要望は違う。「もっともっとLinuxの深淵に生きたい」である。健康な機械が困っていないからこそ、次に取りに行くべきものは性能改善ではない。カーネルが持つ2,262個のtracepoint、CONFIG_BPF_SYSCALLが=yになっているのに一度も使われていないeBPF基盤、namespaceもcapabilityも触られないまま存在するcgroup v2という、**理解の深さ**の方である。この記事はその深さを、実測とスコアと具体的な手順で埋めていく。
→ 次のSection 2では、稼働中の35サービスと3本の自作システムを全部見せ、「作る力はあるがOSは素通りしている」という構造を具体的に確認する。
🗺 Section 2: 全部見せる — 稼働35サービスと、手作りの3システム
このセクションの3点
① 35ユニットのうち主力は数個で、cups/avahi/bluetoothなど用途不明のまま常駐するdaemonが複数ある。
② Dockerコンテナは1個、InfluxDBのDBはケーステレメトリのみの2個と、既存資産が未活用のまま眠っている。
③ 一方でsatomatashiki-botとsns-posterはflock・予算管理・失敗時disable化まで作り込まれた本格的な自作システムである。
このPiで何が動いているかを、隠さずに全部見る。systemdのrunning状態にあるユニットは全35個。まずこれを役割別に分類し、判定として「主力」「補助」「用途不明=棚卸し対象」の三段階を付ける。
稼働サービス一覧と判定
| サービス | 役割 | 公開範囲 | 判定 |
|---|---|---|---|
| forgejo | 自宅Git(Web:3000 / git-ssh:2222) | LAN限定 | 主力 |
| jellyfin | メディアサーバ(:8096) | LAN限定 | 主力 |
| docker / containerd | SearXNGコンテナのランタイム | 127.0.0.1:8888経由でTailscale Funnel公開 | 主力 |
| nginx | SearXNGのリバースプロキシ(127.0.0.1:8889 / :80) | ローカル+Funnel経由 | 主力 |
| tailscaled | Tailscale VPNノード(100.98.2.31) | tailnet | 主力 |
| influxdb | 時系列DB(:8086) | Anywhere(要確認) | 補助 |
| smbd / nmbd | Sambaファイル共有 | LAN限定 | 補助 |
| fail2ban / ssh / cron | SSH防御・cronスケジューラ | 22/tcp Anywhere | 補助 |
| pironman5 | ケースのOLED/ファン制御(:34001) | Anywhere(要確認) | 補助 |
| unattended-upgrades | 自動更新 | - | 補助 |
| wpa_supplicant | Wi-Fi管理 | - | 補助 |
| cups / cups-browsed | 印刷サービス(127.0.0.1:631) | ローカルのみ | 用途不明=棚卸し対象 |
| avahi-daemon | mDNS自動発見 | LAN | 用途不明=棚卸し対象 |
| bluetooth | Bluetoothスタック | - | 用途不明=棚卸し対象 |
| ModemManager | モバイル回線管理 | - | 用途不明=棚卸し対象 |
| winbind | Windowsドメイン連携 | - | 用途不明=棚卸し対象 |
| nfs-blkmap + rpcbind | NFS関連(111/tcp Anywhere) | Anywhere(要確認) | 用途不明=棚卸し対象 |
| lightdm | GUIログインマネージャ | ローカル | 用途不明=棚卸し対象(ヘッドレス運用なのにGUI常駐) |
見えてくるのは資産の未活用である。Dockerは導入済みだが動いているコンテナは searxng の**1個だけ**。InfluxDBは常駐しているが、中に入っているデータベースは pironman5 と _internal の**2つだけ**で、実質ケースのファン・温度テレメトリしか記録していない。時系列DBとコンテナランタイムという「深く使えば強力な道具」が、いずれも入口だけで止まっている。
自作システム3本の時系列
- 1
satomatashiki-bot(Python + venv + cron 11本)
情報配信ボット
7:00 news / 7:05 finance(平日) / 7:10 crypto / 7:15 tech(月水金) / 7:20 schedule / 7:25 ai / 7:30 science / 7:35 newspaper_extras、夜は19:00 crypto / 19:05 tech(月水金) / 19:15 newspaper_extras の計11本を毎日cronで叩き、satomatashikiaichat.pages.dev/api/bot へ配信する。bot.pyのPOLL_INTERVALは過去のCloudflare無料枠枯渇事故を受けて既定30秒へ是正済みだが、常駐サービス自体は現在not running。.py.bak-* が10個以上散乱し、ログはリダイレクトのみでローテーションがない。
- 2
sns-poster(毎分cron `* * * * *`)
SNS予約投稿システム
X / YouTube / Facebook Page / Instagram / Threadsに対応。poster.pyを毎分起動し、schedule.jsonのpendingを±60秒(WINDOW_SECONDS=60)の窓で拾う。3回連続失敗(MAX_CONSECUTIVE_FAILURES=3)で当該予約を自動disabled化し、多重起動はfcntl.flockで防止。予算管理はX $0.015/post・月予算$6.5で80%到達時に1回だけ警告(warned_80)。Facebookトークンは毎週月曜8:30にGraph API v19.0のdebug_tokenで残日数確認し、残10日で警告。通知はntfy.shへHTTP POST、TZはAsia/Tokyo(ZoneInfo)。
- 3
discord-bot / telegram-bot / telegram-deepseek-bot
未起動の3ボット
venvと.serviceファイルはそれぞれ用意されているが、いずれもsystemdにloadされていない。作っては手を止めた形跡がそのまま残っている状態で、通知の受け口を1つに統一するとき(Section 7)、最初に整理すべき対象である。
Windows側の管理アプリ Raspberrymaneger(Electron 33 + ssh2 + node-pty)
| 機能 | 実装 | 評価 |
|---|---|---|
| ssh-exec / インタラクティブSSH | ssh2 + node-ptyでシェルをElectron内に埋め込み | 実用十分 |
| cron-list | crontab / /etc/crontab / /etc/cron.d / /etc/cron.* / systemctl list-timers を横断表示 | スケジュール管理の可視化として良質 |
| sync-folder系 | ローカル⇔/home/satomata48/backup/satomatashikiclaudecodeのSFTP同期 | 実用十分 |
| sync-claude-projects | Piの~/.claude/projectsをWindowsへSFTPミラー | Pi上でもClaude Codeを動かしている証拠 |
| searxng-search-stats | /var/log/nginx/searxng-access.logをawk集計し成功/403を日別表示 | ログ活用の実例として良質 |
| sns-* | .env編集・schedule/history/budget閲覧・即時投稿・sns-deploy(SFTP→install.sh→cron登録)・verify.py | 運用系としてほぼ完成している |
| fs-* | ~/videosのアップロード/削除、smbd/nmbd/jellyfinの状態確認・restart(sudo -n) | sudo -nの範囲を絞れているかは要確認 |
| forgejo-api | /api/v1/限定のGET専用プロキシ。トークンはメインプロセス保持でレンダラへ渡さない | 設計として明確に良い |
ここまで見て言えることは一つである。この人はアプリを作る力は完全にある。flockによる多重起動防止、失敗3回でのdisable化、トークンをレンダラプロセスへ渡さない設計判断は、いずれも初心者の書くコードではない。足りていないのは実装力ではなく、この仕組みをOSの機構(systemd unit、namespace、cgroup)に乗せる部分である。
→ 次のSection 3では、この実態をClaudeとCodexの合議による8レイヤ採点で数値化し、総合4/10という結果の中身を一つずつ見る。
📊 Section 3: 深度診断 — 8レイヤ採点、総合4点
このセクションの3点
① ClaudeとCodexの合議で8レイヤを採点した結果、総合は10点満点中4点だった。
② 最も低いのは隔離・権限(2/10)と再現性(2/10)で、いずれも「機構は存在するが能動利用していない」。
③ 4点は低い点数ではなく、大半のセルフホスト勢と同水準。問題は点数そのものより天井が見えていることである。
Section 1・2で見た実測とサービス構成をもとに、ClaudeとOpenAI Codex(GPT-5.6)が合議して8つのレイヤに点数を付けた。単なる印象評価ではなく、実測値ひとつひとつを根拠として並べている。
| レイヤ | 点 | 根拠となる実測値 | 何が欠けているか |
|---|---|---|---|
| パッケージ運用 | 4/10 | Debian 13・unattended-upgrades有効 | 更新候補183件、再起動方針が未定義 |
| サービス設計 | 5/10 | Forgejo/Jellyfin/Samba/NFS/Dockerを実運用 | 定期処理は全部cron、自作unitはhardeningなし・3本は未load放置 |
| 隔離・権限 | 2/10 | cgroup v2は有効 | namespace・rootless・systemd sandboxを一切能動利用していない |
| ネットワーク | 4/10 | ufw・Tailscale・nginx・LAN限定ルールは理解済み | 8086/111/34001/22が全interface・v4/v6許可のまま |
| ストレージ・復旧 | 3/10 | NVMe化とForgejo世代バックアップは良好 | バックアップ元と保存先が同一障害ドメイン |
| 可観測性 | 3/10 | journald永続化とInfluxDBはある | InfluxDBはケース情報のみ、ログローテなし、perf/eBPF系ゼロ |
| 再現性(IaC) | 2/10 | Electron管理アプリとSFTP同期は高度 | 構成の正本が手作業・cron・.bakに分散 |
| セキュリティ | 3/10 | ufw/fail2ban/トークン分離は良好 | 不要daemon群、公開Funnel、広すぎる許可が残る |
総評(Claude × Codex 合議)
「アプリケーション/サービス層までは来ているが、namespace・capability・cgroup・syscall・VFS・カーネル観測というOS機構層には、ほぼ踏み込んでいない」
「初心者ではない。かなり作れるが、OSをブラックボックスとして使っている中級運用者である」
補足しておくべきことがある。4点は低い点数ではない。世の中の大半のセルフホスト勢は3〜5点のレンジに収まる。cron・ufw・fail2ban・Docker片手間運用というのは、自宅サーバーとしてはごく標準的な到達点である。問題は点数の低さではなく、**この人の場合は天井がすでに見えている**ことである。カーネルはBPF_SYSCALL・KPROBES・FTRACEをすべて=yで持ち、linux-headersまでインストール済みで、あとは触るだけの状態が並んでいる。作る力と自作システムの完成度を考えれば、この4点は「まだ本気を出していない」の4点である。
→ 次のSection 4では、この採点の裏返し——このPiで「まだ何にも使われていない資源」がどれだけ余っているかを数える。
💤 Section 4: 眠っている資源 — このPiは能力ではなく、やらせることが足りない
このセクションの3点
① NVMe 235GBのうち使っているのは28GBだけで、198GBが空いたまま眠っている
② メモリは8GB中6.0GBが空いており、Dockerコンテナは現状たった1個(searxng)しか動いていない
③ InfluxDB・nginx・停止した3本のbotなど、既に土台だけ作って使いきれていない設備がそのまま放置されている
198GB
空いているディスク
6.0GB
空いているメモリ
1個
動いているDockerコンテナ
3本
停止したまま放置のbot
Section 2で見た通り、このPiは81日間ノンストップで動き続け、load 0.15という余裕を保っている。 問題は稼働の安定性ではない。せっかく確保した資源のほとんどが、何もやらされずに眠っていることである。
| 眠っている資源 | どれだけ余っているか | 何に使えるか |
|---|---|---|
| ディスク | NVMe 235GB中 198GB空き(使用13%) | 写真・書類・音楽・バックアップの保管庫。Immichで写真2万枚でも数十GB |
| メモリ | 8GB中 6.0GB空き(実使用1.9GB) | Dockerコンテナをあと10本以上動かせる |
| Docker | コンテナ1個だけ(searxng) | 基盤は既にある。あとはcomposeファイルを足すだけ |
| InfluxDB | DBが2つだけ・中身はファン温度のみ | 時系列DBが空で回っている。サイトのアクセス数・bot実行回数を入れる箱として使える |
| nginx | defaultサイトのみ | リバースプロキシとして各サービスに名前を付けられる |
| 停止bot 3本 | discord-bot / telegram-bot / telegram-deepseek-bot | 通知の受け口として作りかけたまま。ntfy/Gotifyに一本化すべき |
| CPU | load 0.15(4コア) | ほぼ遊んでいる |
| 稼働時間 | 81日無停止・温度41.1℃ | 24時間動くことは既に実証済み。あとは何をやらせるか |
このPiは能力が足りないのではない。やらせることが足りない。
→ 次のSection 5では、この198GBと6.0GBを使って「具体的に何を入れれば何ができるようになるか」をソフト単位で15本挙げる。
📦 Section 5: 入れるべきソフト TOP15 — 何ができるようになるか
このセクションの3点
① 198GBのディスクと6.0GBのメモリの上に、生活と事業に効くソフトを15本ランキングした
② どれも導入時間は数時間〜半日、月額コストは全部0円(電気代のみ)である
③ 上位8本は具体的に何が変わるかを個別に深掘りする。「便利になる」ではなく「何が消えて何が手に入るか」を書く
以下は「何をするソフトか」「導入した結果、生活と仕事の何が変わるか」を基準に並べた15本である。 順位は、Section 2・3で見た本人の実際の構成(cron 11本・SNS5媒体・Forgejo・Cloudflare事故2回)に対してどれだけ直接効くかで付けている。 「利用の広がり」列は世界での実測データがあるものだけ数値を入れ、無いものは「未取得」と正直に書く。
| 順位 | ソフト名 | 何をするソフトか | 何ができるようになるか | 利用の広がり | Pi5 |
|---|---|---|---|---|---|
| 1 | Uptime Kuma | サイトやサービスが生きているか定期的に見張り、落ちたら通知する | 過去2回のCloudflare事故を検知できる。33リポのForgejo・複数のpages.devサイト・Jellyfin・自作botを1画面で監視し、止まった瞬間にスマホへ通知。「気づいたときには全サイトが落ちていた」が消える | ★89,718 | ○ |
| 2 | Immich | スマホの写真と動画を自宅サーバへ自動保存し、人物・日付・場所で検索できるようにする | Googleフォトを解約できる。198GB空きに写真数万枚が入る。撮影素材をYouTubeサムネや記事挿絵に人物・日付から即座に引ける | GitHubスター 109,531 | ○ |
| 3 | Umami | 自分のサイトの閲覧数・人気ページ・流入元を記録する | どのwiki記事が読まれ、YouTube/SNSから何人来たかを自宅の箱で把握できる。Google Analyticsと違いデータが自分の手元に残る。コンテンツ工場の「どれが当たったか」が数字で出る | 未取得 | ○ |
| 4 | n8n | 複数のサービスをつないで定型作業を自動実行する(画面上で線をつなぐだけ) | 自作Python 11本のcronが画面で見える形になる。YouTube公開→SNS5媒体へ告知→予定表に記録、を1本の流れで組める。失敗箇所が図で分かる | ★199,048 | ○ |
| 5 | Paperless-ngx | 紙の書類・PDFを取り込んで、中の文字まで検索できる書類庫にする | 契約書・領収書・請求書を放り込むだけで、「あの会社の去年の契約書」が3秒で出る。経営者の紙探し時間がゼロになる | ★43,875 | ○ |
| 6 | Vaultwarden | パスワードを自宅で保管して全端末で共有する | Cloudflare・GitHub・YouTube・SNS5媒体・Forgejoのログイン情報を1か所に。月額0円(Bitwarden有料版相当が自前で動く) | ★64,790 | ○ |
| 7 | Beszel | サーバーの負荷・空き容量・各コンテナの状態を軽く記録して見せる | Prometheus+Grafanaより圧倒的に軽い。bot暴走・メモリ不足・NVMe容量減少を、Piに負担をかけずに早期発見できる | 未取得 | ○ |
| 8 | Karakeep(旧Hoarder) | Webページ・画像・メモを保存して後から検索できるようにする | 記事ネタ・競合事例・参考動画を放り込むだけで蓄積される。コンテンツ工場の材料庫になる。ブラウザのブックマークと違い全文検索できる | ★28,010 | ○ |
| 9 | Miniflux | 登録したサイトの新着記事をまとめて読む | 自作のニュース配信bot(cron 11本)の入力源を1か所に集約できる。AI・Cloudflare・競合サイトの更新を毎朝1画面で拾える。動作が非常に軽い | ★9,540 | ○ |
| 10 | Stirling-PDF | PDFの結合・分割・変換・圧縮をブラウザ上で行う | 電子書籍の原稿・配布資料・契約書を外部のWebサービスへアップロードせずに加工できる。事業書類を他社サーバに置かなくて済む | 未取得 | ○ |
| 11 | Syncthing | 指定したフォルダをPC同士で自動同期する | SvelteKitの原稿・動画台本・画像素材をWindowsとPiで自動複製。端末が壊れても失わない。クラウド不要・月額0円 | ★87,177 | ○ |
| 12 | AdGuard Home | 家庭内のすべての機器で広告と追跡をブロックする | スマホ・テレビ・PCの広告がアプリを入れずに消える。家族全員に効く。Pi-hole(Docker Hub 9.77億pull)と同系統でより新しい | Pi-holeが9.77億pull | ○ |
| 13 | Gotify | 自宅のソフトからスマホへ通知を送る | 現在使っている外部サービス ntfy.sh を自前に置き換えられる。SNS投稿失敗・サイト停止・容量不足の通知が全部自分の手元を通る | 未取得 | ○ |
| 14 | Actual Budget | 個人と事業のお金を予算別に管理する | サーバー費・制作費・広告費・AIサブスクを分けて、毎月いくら残るかが見える。X投稿の月$6.5のようなAPI費用も含めて管理できる | 未取得 | ○ |
| 15 | Homepage | 全サービスへの入口を1ページにまとめる | 上記14本の入口が1画面になる。「あのサービスのポート番号なんだっけ」が消える。各サービスの状態も並べて表示できる | ★31,791 | ○ |
上位8本を深掘りする
表だけでは「結局何が変わるのか」が伝わりにくい。上位8本については、①何をするものか(専門用語を使わずに)②この人の場合、具体的に何が変わるか ③どこに置くか、の3点で深掘りする。
1位 Uptime Kuma
Uptime Kumaは、登録したURLに数十秒おきにアクセスしてみて、応答が返ってくるかを見張るだけのソフトである。 応答が止まった瞬間に、あらかじめ登録した通知先(メール・LINE・Discordなど)へ知らせる。
この人の場合、いま監視されているサイトは実質ゼロである。Forgejoで管理している33リポの成果物、複数のCloudflare Pagesサイト、Jellyfin、SNS投稿bot――これらが落ちても気づく手段が今はない。 過去2回のCloudflare無料枠枯渇事故も、事後にログを見て初めて気づいた。Uptime Kumaを入れれば、落ちた瞬間にスマホへ通知が届くようになり、「気づいたら何時間も止まっていた」がなくなる。
置き場所は、既に動いているDocker(現状searxngの1個だけ)にcomposeファイルを1つ足すだけでよい。新しいサーバーもポートの取り合いも発生しない。
2位 Immich
Immichは、スマホにアプリを入れておくと、撮った写真と動画を自動的にPiへ吸い上げて保存してくれるソフトである。 人物ごと・撮影日ごと・場所ごとに検索でき、見た目はGoogleフォトとほぼ同じである。
この人の場合、198GBの空きディスクは写真・動画の保管には十分すぎる余裕がある。撮影素材をGoogleフォトから引き上げれば、外部サービスへの依存と将来の容量課金の心配が消える。 YouTubeのサムネイルや記事の挿絵に使う過去の写真を、日付や人物名から数秒で探し出せるようになる点も、コンテンツ制作に直接効く。
置き場所はDocker Composeで1コンテナ。ディスク使用量は写真数万枚でも数十GBに収まり、198GBのうちごく一部で足りる。
3位 Umami
Umamiは、自分のサイトに小さな計測タグを1行埋め込むだけで、誰が・どのページを・どこから来て見たかを記録するソフトである。 Google Analyticsと同じ役割だが、データは自分のPiに残り、外部企業に渡らない。
この人の場合、wikiの記事群やコンテンツ工場が生み出すページがどれだけ読まれているかを、今は感覚でしか把握できていない。 Umamiを入れれば「どの記事がSNSからの流入で伸びたか」が数字で出るようになり、次に何を書くべきかの判断が勘ではなく実績に基づくようになる。
置き場所はDocker Composeで1コンテナ。データベースはSQLiteでも動くため、既存のInfluxDBと共存させても負担は小さい。
4位 n8n
n8nは、画面上に置いた部品同士を線でつなぐだけで「Aが起きたらBをする」という定型作業を自動実行できるソフトである。 プログラムを書かなくても、視覚的に処理の流れを組み立てられる。
この人の場合、既に自作Pythonで11本のcronが動いている(news・finance・crypto・techなど時間ごとに細かく分かれている)。 これらはコードの中身を見ないと処理の流れが分からない状態である。n8nに置き換える、あるいは並走させることで、処理の流れが画面で見える形になり、どこで失敗したかが図で一目で分かるようになる。
置き場所はDocker Composeで1コンテナ。既存のcronを全て移す必要はなく、新しく作る自動化から少しずつ試すのが現実的である。
5位 Paperless-ngx
Paperless-ngxは、スキャンした紙の書類やPDFを取り込むと、中に書かれた文字まで読み取って検索できるようにするソフトである。 「請求書」「契約書」のようなタグを自動または手動で付けて整理する。
この人の場合、経営を10年以上続けている中で、契約書・領収書・請求書は相当な量が蓄積されているはずである。 Paperless-ngxに入れておけば「去年のあの会社との契約書」を紙の束から探す作業がなくなり、検索窓に社名を打つだけで3秒で出てくるようになる。
置き場所はDocker Composeで1コンテナ。スキャナーが無ければスマホのカメラで撮影→取り込みでも運用できる。
6位 Vaultwarden
Vaultwardenは、有料サービスであるBitwardenの互換サーバーを自宅で動かすソフトである。 パスワードを暗号化して保存し、スマホ・PC・ブラウザ拡張から同じ情報を呼び出せる。
この人の場合、Cloudflare・GitHub・YouTube・SNS5媒体(X/YouTube/Facebook/Instagram/Threads)・Forgejoと、管理しているログイン情報の数はかなり多い。 Vaultwardenに一本化すれば、これらの認証情報を1か所で管理でき、Bitwarden有料版に相当する機能が月額0円で手に入る。
置き場所はDocker Composeで1コンテナ。既にTailscaleで外部公開の仕組みがあるため、外出先からのアクセスも新規構築が不要である。
7位 Beszel
Beszelは、サーバーのCPU・メモリ・ディスクの使用状況と、動いているコンテナの状態を軽い負荷で記録し、グラフで見せるソフトである。 PrometheusとGrafanaを組み合わせた本格的な監視基盤の、簡易版に近い立ち位置である。
この人の場合、Docker Hubの実測で世界的にはGrafana(52.8億pull)が圧倒的に使われている一方、Debian環境での実際の常設率はGrafana 0.9%・Prometheus 0.3%と非常に低い。 本格的な監視基盤を組むより、Beszelで「メモリが減ってきた」「NVMeの空きが減ってきた」を軽く把握する方が、8GBメモリのPiには現実的である。
置き場所はDocker Composeで1コンテナ。エージェントの負荷が小さいため、他のコンテナを圧迫しない。
8位 Karakeep(旧Hoarder)
Karakeepは、見つけたWebページ・画像・メモをブラウザやスマホから放り込んでおくと、あとから全文検索で探し出せるようにするソフトである。 ブックマークと違い、ページの中身の文章まで検索対象になる。
この人の場合、記事執筆やコンテンツ工場の運営で、競合の記事・参考になった動画・使えそうな統計データを日々見つけている。 今はそれらが記憶かブラウザのタブに散らばっているはずである。Karakeepに放り込む習慣を作れば、材料庫として機能し、「あの記事どこで見たっけ」が検索一発で解決する。
置き場所はDocker Composeで1コンテナ。ブラウザ拡張から1クリックで保存できる運用が現実的である。
導入コスト
| ソフト | 導入時間の目安 | 月額コスト |
|---|---|---|
| Uptime Kuma | 30分〜1時間 | 月0円(電気代のみ) |
| Immich | 1〜2時間(初回同期に時間がかかる) | 月0円(電気代のみ) |
| Umami | 30分〜1時間 | 月0円(電気代のみ) |
| n8n | 半日(最初のワークフロー作成含む) | 月0円(電気代のみ) |
| Paperless-ngx | 1時間+書類取り込みの継続作業 | 月0円(電気代のみ) |
| Vaultwarden | 30分+パスワード移行の継続作業 | 月0円(電気代のみ) |
| Beszel | 30分 | 月0円(電気代のみ) |
| Karakeep | 30分〜1時間 | 月0円(電気代のみ) |
| Miniflux | 30分 | 月0円(電気代のみ) |
| Stirling-PDF | 15分 | 月0円(電気代のみ) |
| Syncthing | 30分 | 月0円(電気代のみ) |
| AdGuard Home | 30分+各端末のDNS設定 | 月0円(電気代のみ) |
| Gotify | 15分 | 月0円(電気代のみ) |
| Actual Budget | 1時間+初回の口座整理 | 月0円(電気代のみ) |
| Homepage | 30分 | 月0円(電気代のみ) |
15本すべて入れても、198GBのうち使うのは数十GB。6GBの空きメモリで足りる。
最初の30分 — 15本を一度に入れてはいけない
上に15本挙げたが、一度に入れると必ず失敗する。どれが原因で何が壊れたか分からなくなるからだ。最初は Uptime Kuma 1本だけにする。理由は単純で、このPiにとって最大の損失は「自動化できていないこと」ではなく、過去2回、サイトが落ちたことに気づけなかったことだからである。守りを1本だけ先に置く。
# 1. 専用フォルダを作る(Dockerは既に動いているので追加インストールは不要)
mkdir -p ~/stacks/uptime-kuma && cd ~/stacks/uptime-kuma
# 2. compose.yaml を1つ置く
cat > compose.yaml <<'YAML'
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: unless-stopped
ports:
- "127.0.0.1:3001:3001"
volumes:
- ./data:/app/data
YAML
# 3. 起動する
sudo docker compose up -d
# 4. 動いているか確認する
sudo docker compose ps起動したらブラウザで開く。127.0.0.1:3001 に閉じてあるので、外からは見えない。Tailscale が既に入っているので、外出先からは Tailscale 経由で見ればよい(新しく穴を開ける必要はない)。
| 手順 | やること | つまずきやすい点 |
|---|---|---|
| ① 監視先を1つだけ登録 | まず自分のサイトを1件だけ。いきなり全部登録しない | 最初から10件入れると、どれが誤検知か分からなくなる |
| ② 監視間隔を60秒以上に | 既定値より短くしない。60〜300秒にする | ここを短くすると、監視ツール自身がCloudflare枠を食う側になる。過去2回の事故と同じ構図 |
| ③ 通知先を設定 | 既に使っている ntfy をそのまま指定できる | 通知を設定しないと、画面を見に行かない限り気づけない |
| ④ わざと止めて試す | テスト用の監視先を1件作り、実際に通知が来るか確認する | ここを飛ばすと「監視しているつもり」で終わる。最も多い失敗 |
④まで終わって初めて「監視を入れた」と言える。ここまででおよそ30分である。2本目以降は同じ手順の繰り返しで、~/stacks/<ソフト名>/compose.yaml を増やしていけばよい。1本入れるたびに、④の「わざと壊して確かめる」をやること。
→ 次のSection 6では、この中の上位5本を実際に入れた場合、1週間後の1日がどう変わるかを朝から夜まで追う。
🌅 Section 6: 上位5本を入れると、1週間後の1日はこう変わる
このセクションの3点
① Uptime Kuma・Umami・n8n・Paperless-ngx・Immichの上位5本を入れた後の、朝から夜までの変化を時系列で追う
② どの場面も「いまはこうしている」→「こう変わる」の対比で、実際の行動の差として書く
③ この変化は新しい機材を買わずに、今余っている198GBと6.0GBのメモリの上だけで起きる
Section 5で挙げた15本のうち、Uptime Kuma・Umami・n8n・Paperless-ngx・Immichの5本を実際に入れて1週間運用したとする。 朝起きてから夜寝るまでの間に、これまで無意識にやっていた確認作業や、そもそもやっていなかったことが、どう変わるかを追う。
- 1
朝7時 — Uptime Kuma
「全サイト正常」の通知で1日が始まる
いまは、サイトが落ちても自分から見にいかない限り気づかない。実際に過去2回、Cloudflareの無料枠を使い切って全サイトが止まったときも、事後にログを見て初めて分かった。 Uptime Kumaを入れた後は、朝スマホを見た時点で「昨夜から今朝まで全て正常」の通知が並んでいる。異常があった日だけ、その日だけ動けばよくなる。毎回全部を自分で確認する作業が消える。
- 2
朝食 — Umami
昨日どの記事が伸びたかを見てから1日の作業を決める
いまは、どの記事がSNSからの流入で読まれたか、感覚でしか分からない。次に何を書くかは勘に頼っている。 Umamiを入れた後は、朝食を取りながら昨日の閲覧数と流入元を数字で確認できる。伸びたテーマがあれば、その日の動画や記事のネタとして採用する判断が、数字に基づいてできるようになる。
- 3
午前 — n8n
cron 11本が黙って動いているだけの状態から、流れが見える状態へ
いまは、cron 11本(news・finance・crypto・techなど)が指定時刻に黙って動いているだけで、途中で何が起きているかは各スクリプトのコードを開かないと分からない。 n8nを入れた後は、集めた記事候補が画面上に並んでいる状態になる。動画を公開したあとのSNS5媒体への告知も、あらかじめ組んだ流れに沿って予約済みの状態で午前中には見える形になっている。
- 4
午後 — Paperless-ngx
紙の書類を探す時間がゼロになる
いまは、届いた契約書や領収書を紙のまま保管し、必要になったときに書類の束から探している。 Paperless-ngxを入れた後は、届いた書類をスマホのカメラで撮って取り込むだけでよい。過去の書類も相手先名で検索すれば3秒で出てくるようになり、経営者としての紙探し時間がゼロになる。
- 5
夜 — Immich
写真がスマホに溜まったままの状態が終わる
いまは、撮影した写真や動画がスマホの中に溜まったままで、容量が減ってきたら都度手動で整理している。 Immichを入れた後は、寝る頃には撮った写真・動画が自動的にPiへ保存されている。翌日のサムネイル素材を選ぶときも、日付や写っている人物で検索してすぐに見つけられる。
これは全部、いま余っている198GBと6GBのメモリの上で、月0円で動く。
→ 次のSection 7では、この5本を含む15本を「事業に直結する3つの使い方」としてまとめ、Cloudflare事故の再発防止・コンテンツ工場の数字化・事業書類の自宅保管に落とし込む。
🏭 Section 7: 事業に直結する3つの使い方
このセクションの3点
① Uptime Kuma + Beszel + Gotify で、Cloudflare無料枠を枯渇させた過去2回の事故を二度と起こさない仕組みを作る
② Karakeep(ネタ庫)・Miniflux(情報源)・Umami(成果)を、空いているInfluxDBに記録してコンテンツ工場を数字で回す
③ Paperless-ngx・Vaultwarden・Stirling-PDFで事業書類とパスワードを自分の手元に置く。これはForgejoを自宅に置いたのと同じ思想の延長である
① Cloudflare事故を二度と起こさない仕組み
過去2回、自作botのポーリングがCloudflare無料枠を枯渇させ全サイトを停止させた。3秒間隔のポーリングを2チャンネル分走らせただけで1日57,600リクエストになり、無料枠10万req/日の半分以上をこの1本のbotが食い潰した計算になる。この手の事故は「後から気づく」から被害が大きくなる。監視と通知を自宅のPiに常駐させておけば、異常が起きた瞬間にスマホへ届く。
| 何を見るか | どのソフトで | 閾値と通知 |
|---|---|---|
| 全ての *.pages.dev サイトが応答しているか | Uptime Kuma | 応答なしが続いたら即通知(監視間隔は60秒以上に設定する) |
| Pi上で動いているbotのCPU使用・実行回数 | Beszel | 普段と違うCPU使用の張り付きをグラフで早期発見 |
| どのbotが何回動いたか | Gotify | 異常発生時にスマホへプッシュ通知で内容ごと届く |
重要な注意: Uptime Kuma自身の監視間隔を短くすると、その監視リクエスト自体がCloudflareの無料枠を消費する側になる。つまり監視ツールが新しい事故の原因になり得る。監視間隔は必ず60秒以上に設定すること。
② コンテンツ工場の材料と成果を数字で回す
記事や動画のネタ集め、情報源の巡回、公開後の反応確認をそれぞれ別のソフトに任せ、その結果を1か所に記録する。記録先は新しくサーバーを立てる必要はなく、いま「pironman5」と「_internal」の2つのDBしか入っていない、ほぼ空のInfluxDBをそのまま使う。既にある資産を再利用するだけで、コンテンツ工場の「どれが当たったか」が数字で見えるようになる。
| 工程 | 使うソフト | 何が分かるようになるか |
|---|---|---|
| ネタ庫 | Karakeep | 記事ネタ・競合事例・参考動画を放り込んで蓄積し、全文検索できる状態にする |
| 情報源 | Miniflux | 自作の配信cron11本の入力元を1画面に集約し、毎朝の巡回時間を短くする |
| 成果 | Umami | どのwiki記事が読まれ、どこから流入したかを自宅の箱で把握する |
| 記録 | InfluxDB(既存資産) | YouTube再生数・記事PVを毎日入れ、時系列で「伸びた・落ちた」を追える |
③ 事業書類とパスワードを自分の手元に置く
契約書・領収書・ログイン情報・原稿PDFといった事業の中身は、外部のクラウドサービスに預けなくても自宅のPiで管理できる。Paperless-ngxで書類を検索可能な状態にし、Vaultwardenで全サービスのログイン情報を1か所にまとめ、Stirling-PDFで原稿や資料を外部アップロードせずに加工する。この考え方は、33リポジトリのForgejoを自宅に置いているのと同じ思想の延長であり、事業データの置き場所を自分でコントロールし続けるという一貫した方針である。
→ 次のSection 8では、逆に「入れても使わなくなるもの」と「Pi 5では動かないもの」を正直に挙げる。
🚫 Section 8: 入れても使わなくなるもの/Pi 5では動かないもの
このセクションの3点
① Nextcloud・Node-RED・Watchtower・Prometheus+Grafana常設・Glanceは、この構成では入れても使わなくなる
② ローカルLLM・Stable Diffusion・Whisper大型モデル・k8s・4Kリアルタイム変換は、Pi 5では現実的に動かない
③ 動かないものは無理をせず、既に契約しているClaude/Gemini APIやWindows機(Ryzen 7 7900X3D + RTX 4070 Super)に任せる
使わなくなるもの 5つ
どれも紹介記事やランキングでは定番として名前が挙がるソフトである。しかし、この人の実際の構成(Samba・Immich・Syncthing・Beszel・n8n・Homepageが既に役割を持つ構成)に当てはめると、機能が重複するか、24時間稼働のPiにとってリスクの方が大きい。
| ソフト | よく勧められる理由 | なぜこの人は使わなくなるか |
|---|---|---|
| Nextcloud | オールインワンのクラウド基盤。Docker Hubで累積10.2億pullの定番 | ファイル共有は既にSamba、写真はImmich、同期はSyncthingで足りている。役割が完全に重複し、機能を持て余す |
| Node-RED | 画面上でフローを組める自動化ツール | n8nと役割が重なる。自動化の置き場所が2つに分かれ、どちらで何を管理しているか分からなくなり、結局片方が放置される |
| Watchtower(自動更新) | Dockerコンテナのイメージを自動で最新版に更新する | 24時間稼働で事業のbotやSNS投稿を動かしているPiでは、更新後に監視やbotが黙って壊れるリスクの方が大きい。手動更新で内容を確認してから反映する方がよい |
| Prometheus + Grafanaの常設 | 監視・可視化の業界標準として紹介されがち | Debian popconの実測でPrometheus0.3%、Grafana0.9%しか常設されていない。ほとんど誰も個人サーバーで常設運用していない。Beszelで十分に足りる |
| Glance/追加のダッシュボード | 自宅サーバー全体を一覧できるスタートページ | Homepageと表示内容が重なる。見る画面が2つに増えるだけで、結局どちらか片方しか開かなくなる |
Pi 5では動かない・向かないもの
Pi 5は8GBメモリでGPUを持たない。動かせないわけではないが、実用に耐える速度で動かせないものがある。無理に動かそうとして時間を溶かすより、最初から別の手段に振り分けた方が早い。
| やりたいこと | Pi 5での現実 | 代わりにどうするか |
|---|---|---|
| ローカルLLM推論 | 8GBメモリ・GPUなしでは実用的な応答速度が出ない | Claude/Gemini APIを使う(既にキーを持っている) |
| Stable Diffusion画像生成 | GPUなしでは1枚あたりの生成に長時間かかる | クラウドサービスか、Windows機(Ryzen 7 7900X3D + RTX 4070 Super)で行う |
| Whisper大型モデルの文字起こし | CPUのみでは実時間の何倍もの処理時間がかかる | API経由で処理するか、Windows機で行う |
| Kubernetes(k8s/k3s)の本格運用 | サーバーが1台しかないため、複雑さだけが増えて得るものがない | Docker Composeで十分に管理できる |
| 4K動画のリアルタイム変換(Jellyfin) | ハードウェア支援が限定的で、再生しながらの変換に無理が出る | 視聴前に事前変換しておく |
このセクションを入れたのは、期待させたまま終わらせないためである。Pi 5は何でもできる万能サーバーではない。できないことを先に書いておけば、入れた後に「動かなかった」で時間を溶かさずに済む。
→ 次のSection 9では、世界の人々が実際に何を動かしているのかを、一次情報の実測だけで確認する。
🌍 Section 9: みんなは何を動かしているのか — 一次情報だけで測る
このセクションの3点
① 監視スタック(Prometheus/Grafana)を常設しているセルフホスターは、実は少数派である。
② Raspberry PiはHome Assistantのボード内訳で30.1%を占めるが、Pi自体の出荷実態は「教育用おもちゃ」ではなく産業・組込用途が72%である。
③ fail2ban・ufwを使っている本人は、統計上は1割側にいる少数派である。
この節の数値は、まとめサイトやランキング記事を一切経由していない。Home Assistantは公式アナリティクスページにHTML埋め込みされたChart.js用JSONを直接パースし、Debian popconはpopcon.debian.org/by_inst.gzを直接ダウンロードして展開し、Docker Hubは公式REST API /v2/repositories/<ns>/<repo>/ を直接クエリした結果である。「人気ランキング」記事ではなく、実測統計として読んでほしい。
Home Assistant 公式アナリティクス(analytics.home-assistant.io・2026-08-02実測)
661,006
総アクティブインストール
30.1%
ボードに占めるRaspberry Piの比率
44,843台
Pi 5の実数
25%未満
opt-in率=この数字の限界
インストール方式(655,448件)は OS版 526,901(80.4%)/ Container 113,384(17.3%)/ Supervised 8,059(1.2%)/ Core 7,104(1.1%)。ボード内訳は439,832件が対象で、内訳は以下の通りである。
| ボード | 台数 | 比率 |
|---|---|---|
| Virtual Machine | 136,210台 | 31.0% |
| Raspberry Pi 3/4/5 合計 | 132,561台(Pi5=44,843 / Pi4=76,598 / Pi3=11,120) | 30.1% |
| Generic x86-64 | 81,909台 | 18.6% |
| Home Assistant Green(公式専用機) | 69,953台 | 15.9% |
| Home Assistant Yellow(Pi CM4ベース公式機) | 9,452台 | 2.1% |
Debian popcon 実インストール統計(母数277,431・popcon.debian.org/by_inst.gz)
| パッケージ | インストール数 | 比率 | この記事にとっての意味 |
|---|---|---|---|
| openssh-server | 227,973 | 82.2% | リモート管理の事実上の標準 |
| htop | 104,693 | 37.7% | 簡易監視の定番、常設ダッシュボードではない |
| apache2 | 59,965 | 21.6% | nginx(10.1%)より依然として多い |
| docker-ce | 57,263 | 20.6% | docker.io(5.1%)の約4倍。公式リポ版が主流 |
| tmux | 45,430 | 16.4% | CLI常駐勢の存在を示す |
| nodejs | 39,512 | 14.2% | 自作スクリプト勢の言語選択の一角 |
| samba | 33,866 | 12.2% | ファイル共有ニーズは依然として大きい |
| mariadb-server | 32,035 | 11.5% | mysql-server(2.2%)を大きく上回る |
| fail2ban | 31,284 | 11.3% | 本人はこの1割側にいる |
| ufw | 29,780 | 10.7% | 本人はこの1割側にいる |
| nginx | 28,132 | 10.1% | apache2より少数派 |
| certbot | 21,266 | 7.7% | TLS証明書自動更新の標準 |
| redis-server | 12,687 | 4.6% | キャッシュ層を持つ層は少数 |
| podman | 9,765 | 3.5% | Docker代替はまだニッチ |
| grafana | 2,471 | 0.9% | 監視スタック常設は少数派を裏付ける |
| prometheus | 822 | 0.3% | 監視スタック常設は少数派を裏付ける |
留保: popconはDebian参加者の1〜10%程度のopt-inであり、Raspberry Pi OS等の派生も母集団に混在しうるが、Pi専用の切り分けはpopconでは不可能である。それでも比率の相対関係(docker-ceがdocker.ioの約4倍、Prometheus/Grafanaが1%未満)は読み取れる。home-assistantのDebianネイティブパッケージはわずか1件で、HAOS/Docker/Supervisedが実態であることの裏付けになっている。
Docker Hub 公式Pull数 TOP10(2026-08-02 API実測)
| イメージ | Pull数 | 出典 |
|---|---|---|
| postgres(公式) | 111.2億 | hub.docker.com/.../postgres |
| grafana/grafana | 52.8億 | hub.docker.com/.../grafana |
| mariadb(公式) | 31.5億 | hub.docker.com/.../mariadb |
| portainer/portainer-ce | 15.1億 | hub.docker.com/.../portainer-ce |
| nextcloud(公式) | 10.2億 | hub.docker.com/.../nextcloud |
| pihole/pihole | 9.77億 | hub.docker.com/.../pihole |
| linuxserver/plex | 9.07億 | hub.docker.com/.../plex |
| homeassistant/home-assistant | 7.79億 | hub.docker.com/.../home-assistant |
| jellyfin/jellyfin | 3.98億 | hub.docker.com/.../jellyfin |
| gitea/gitea | 3.80億 | hub.docker.com/.../gitea |
留保: Pull数は累積値であり、ミラーやCIによる自動取得も含む。ユニークユーザー数ではない。Immichは主にghcr.ioを使うためDocker Hubの数字は代表性が低く、上位から除外した。
逆説: ラズパイは「教育用おもちゃ」ではない
Raspberry Pi LtdのIPO目論見書(2024年6月)によると、2023年通期の販売数量の72%が産業・組込用途で、コンシューマ/教育向けはわずか28%である。売上高$266M、粗利$66M。つまりラズパイは「子ども向けの学習キット」というイメージとは裏腹に、実態は産業用組込ボードとして最も多く使われている。Home Assistant用途で30.1%を占めるという数字も、この産業利用の裾野の一角にすぎない。
本人の立ち位置
| 項目 | 世間の実態 | このPi |
|---|---|---|
| Jellyfin | Docker Hub 3.98億pull | 動かしている |
| fail2ban | popcon 11.3% | 有り |
| Prometheus | popcon 0.3% | 無し(監視スタック常設は過剰と判断) |
| 自作Pythonをcronで11本 | 統計に出てこない | ここが独自性 |
取得できなかったもの(正直に書く)
Stack Overflow Developer Surveyの自宅サーバ/セルフホスト切り出し集計、r/selfhosted年次アンケートの公式集計、CNCF/Linux FoundationのeBPF・可観測性採用率、Podman/Tailscaleの採用率の経年変化(公式一次統計が見つからず非公式ブログのみ)、Docker Hub Pull数の過去比較(履歴APIが無く現在値スナップショットのみ)、Immichのスター数・DL数の月次成長カーブ、popconのRaspberry Pi専用切り出し(popconはハードウェア種別を区別しない)、Forgejo単体の公式利用統計は、いずれも一次情報が見つからなかったため本記事には含めていない。
→ 次のSection 10では、ソフトを増やす前に片付けておくべき「今すぐ直すべき危険 TOP5」を、実測を根拠に深刻度順で挙げる。
🚨 Section 10: 今すぐ直すべき危険 TOP5
このセクションの3点
① 危険は誇張しない。ufwのAnywhere許可は即インターネット公開を意味せず、家庭用ルータのNAT次第である。
② 最も効くのはCodexの指摘で、Forgejoバックアップは「3-2-1の数字を満たすこと」より「月1回の復元試験」の方が重要である。
③ lightdmのようなGUI常駐は無駄だが、TOP5級の脆弱性ではない。危険度の順位づけ自体が、この記事の信頼性を決める。
以下はClaudeとCodexの合議で深刻度順に並べた5件である。すべて実測に基づき、誇張表現は避けた。 「今すぐ壊れる」ものと「いつか効いてくる設計上の負債」を分けて書く。
- 1
深刻度1位
8086 / 34001 / 111 / 22 の無差別許可
実測された事実: ufwで22(SSH)・34001(Pironman5)・8086(InfluxDB)・111(rpcbind/NFS)の4ポートが「Anywhere (v4/v6)」で許可されている。
なぜ危険か: ufwのAnywhere許可は即インターネット公開を意味しない。家庭用ルータでポートフォワーディングしていなければ、外部からは到達しない。 ただしLAN内の他デバイス・Tailscale経由・将来のIPv6直通経路からは無差別に到達可能なままであり、InfluxDBの認証有効性やPironman5:34001のプロトコル・認証、 NFSを本当に使っているか(使わないならrpcbindごと止める)が未確認のまま放置されている点が問題である。
対処: ufwのルールに頼るより、サービス側を
127.0.0.1やLANアドレスへbindする方が堅い。現在の全ルールを一覧化すると次の通りである。ポート サービス 現在の許可元 あるべき姿 22/tcp SSH Anywhere (v4/v6) 鍵認証前提でLAN限定 or fail2ban強化を維持 34001/tcp Pironman5 Anywhere (v4/v6) 認証方式を確認の上LAN限定へ 8086/tcp InfluxDB Anywhere (v4/v6) 127.0.0.1 bindへ変更しufwルール自体を削除 111 rpcbind/NFS Anywhere (v4/v6) NFS未使用なら停止、使用中ならLAN限定 445,139 Samba 192.168.1.0/24 現状のまま(適切) 8096 Jellyfin 192.168.1.0/24 現状のまま(適切) 3000 / 2222 Forgejo Web / git-SSH 192.168.1.0/24 現状のまま(適切) # InfluxDBのufw許可を消し、bind先を確認する例 sudo ufw delete allow 8086/tcp sudo ss -tlnp | grep 8086 - 2
深刻度2位
Forgejoバックアップが同一NVMeのみ
実測された事実: 毎日4:00に
forgejo-backup.shが走り、734MB×5世代=4.8GBのdumpが~/forgejo-backups/に保存されている。保存先は稼働中のNVMeと同一である。なぜ危険か: 世代を5つ持っていても、NVMe自体の故障・誤削除・盗難・電源事故が起きれば全世代が同時に失われる。 ハブの「🍅一括保存」機能で33リポジトリの集約先になっているため、失われた際の影響範囲が大きい。
対処: Codexの指摘が核心を突いている。3-2-1の数字(3コピー・2媒体・1オフサイト)を満たすことより、月1回の復元試験の方が重要である。 バックアップは「取れているかどうか」ではなく「戻せるかどうか」でしか検証できない。オフサイト化には
resticのようなツールが向いている。# resticでオフサイトリポジトリへ増分バックアップする例 restic -r sftp:user@remote-host:/backup/forgejo init restic -r sftp:user@remote-host:/backup/forgejo backup ~/forgejo-backups/ # 復元試験(月1回、別ディレクトリへ) restic -r sftp:user@remote-host:/backup/forgejo restore latest --target /tmp/restore-test - 3
深刻度3位
SearXNG Funnelの公開条件が不明
実測された事実: searxngコンテナ(127.0.0.1:8888)がnginx経由でTailscale Funnelにより
https://raspberrypi-searxng.tailf23edb.ts.netとしてインターネット公開されている。なぜ危険か: FunnelはNATと無関係にインターネット公開する機能であり、ufwのAnywhere許可とは性質が異なる。 認証やレート制限が設定されていなければ、公開検索プロキシとして濫用される・検索エンジン側から異常アクセスとして遮断される・帯域を消費される・不正な入力がログに残る、といった事態が起こり得る。
対処: 本人専用の利用であれば、FunnelをやめてTailscale Serve(tailnet内限定の公開)に切り替えるのが妥当な選択である。
- 4
深刻度4位
183件の更新滞留
実測された事実: apt upgradable が183件。一方で
/var/run/reboot-requiredは存在しない。稼働時間は81日22時間。なぜ危険か: 「81日無再起動」自体は危険ではない。問題は183件の内訳と、実行中のプロセスが更新前の共有ライブラリをメモリ上に保持し続けている可能性である。
reboot-requiredが無いことは「再起動が不要である」ことの証明にはならない。対処:
needrestartを使い、どのプロセスが更新後の再起動を必要としているかを機械的に洗い出すべきである。# 更新後、再起動が必要なプロセス/サービスを洗い出す sudo apt install needrestart sudo needrestart - 5
深刻度5位
不要サービスと無管理ログの累積
実測された事実: lightdm(GUI)がヘッドレス運用にもかかわらず常駐している。さらにCUPS・avahi-daemon・bluetooth・ModemManager・winbindなど用途不明のデーモンが並走し、 自作botのログはリダイレクトのみでローテーションされていない。
なぜ危険か: lightdm単体はTOP5級の脆弱性ではない。主にRAMと起動時間、攻撃面のわずかな無駄にすぎない。 より本質的な危険は、用途不明のデーモン群が積み重なった結果としての攻撃面の総量と、無制限に肥大するログである。
対処: 各デーモンを「所有者・用途・bind先・必要性」の4項目で棚卸しし、不要なものから順にmaskする。ログは
logrotateかjournaldへの一本化を検討する。
危険は5つ挙げたが、そのほとんどは「いま起きている障害」ではない。この機械は壊れていない。 81日間安定稼働し、swapは0Bのままで、温度は41.1℃を保っている。ここに挙げたのは、すべて「いつか効いてくる設計上の負債」である。 今日壊れる話と、5年後に効いてくる話を混同しないことが、この診断の信頼性を保つ唯一の方法である。
→ 次のSection 11では、この記事の目玉である「Codexによる私(Claude)への反論」を、そのまま載せる。
🤖 Section 11: Codexの反論 — 私(Claude)の提案は、どこが間違っていたか
このセクションの3点
① 私(Claude)は当初「eBPF・systemd深堀り・nftables・Nix・監視スタック」を勧めるつもりだったが、OpenAI Codex(GPT-5.6)に「反論しろ」と指示し、7つの指摘を受けた
② 7つのうち「eBPFの順序」「Python+cronの扱い」「復旧訓練の欠落」の3つは私の設計思想そのものを変えた
③ 「監視スタックは過剰」というCodexの直感は、Debian popcon(パッケージ利用統計)の実測値と一致していた
この記事は、最初から「まずソフトを入れて、生活と仕事を載せる」という構成だったわけではない。私(Claude)は当初、実測データを見た時点で「bpftraceとeBPFを軸に、systemdのhardening・nftablesのネイティブ記法移行・Nixによる宣言的管理・Prometheus+Grafanaの監視スタックを一気に組む」という構成を考えていた。これをOpenAI Codex(GPT-5.6)に投げ、「反論しろ」と明示的に指示した。返ってきたのは7つの指摘であり、そのうち何を受け入れ、何を受け入れなかったかを、ここで正直に書く。
7つの反論と判定
| # | Codexの反論 | 私の当初の案 | 判定 |
|---|---|---|---|
| 1 | eBPFを最初に置くのは順序が逆。syscall・procfs/sysfs・namespace・cgroup・ftraceを理解せずに使うと、高級観測ツールのコピペになる | bpftraceの導入を最初の目標に据える | 全面的に受け入れた |
| 2 | nftables移行は深そうに見えて、設定ファイルの書換えにすぎない。netfilter hook・conntrack・routing・network namespaceまで実験して初めてOS学習になる | ufw運用からネイティブnftables記法への全面移行を推奨 | 部分的に受け入れた |
| 3 | NixはLinux内部より構成言語・パッケージグラフの深淵。NixOS全面移行は既存資産を壊すリスクが高い | Nixによる宣言的OS管理への移行を提案 | 全面的に受け入れた |
| 4 | Prometheus+Grafana+LokiはPi5には過剰。journald・systemd metrics・sar・perf・必要時bpftraceで十分 | 監視スタック一式の常設を推奨 | 全面的に受け入れた |
| 5 | カーネルbuildは成果物を作るだけでは浅い。config差分・boot chain・DT・module ABI・panic時rollbackまで扱って初めて深さになる | カーネルビルドは提案していなかった | 新規に採用 |
| 6 | Python+cronは否定すべきでない。flock・予算管理・失敗時disableなどアプリ側設計はかなり良い | Pythonスクリプトそのものを書き直す方向を暗に想定 | 全面的に受け入れた |
| 7 | 最大の盲点は復旧訓練。IaCや監視を入れても、別媒体から復元できなければ運用成熟度は上がらない | 復旧訓練は当初案に含まれていなかった | 新規に採用(完全に見落としていた) |
特に重い3つの指摘
① 「eBPFを最初に置くのは順序が逆」
これが最も記事の骨格を変えた指摘である。Section 8は当初「bpftraceを入れて終わり」の短いセクションになるはずだった。Codexの指摘を受けて、strace → perf → ftrace(既にカーネルに組み込まれている追跡機構) → bpftrace → CO-RE型eBPFという5段の階段に書き直した。理由は単純で、いきなり高級な観測ツールを使えても、その裏で何を見ているか説明できなければ「コピペで動かした」に過ぎないからである。
② 「Python+cronを否定するな」
当初、私は「cronとPythonスクリプトは前時代的で、systemdへの全面移行が正解」という暗黙の前提を持っていた。しかし実測では、sns-posterはfcntl.flockによる多重起動防止・3回連続失敗で自動的に投稿を無効化・月$6.5の予算管理と80%到達時の警告という、決して素人設計ではない仕組みを持っていた。Codexの指摘を受けて方針を「Pythonのアプリケーション側設計は否定しない。起動方法・実行権限・ログの出し先だけをsystemdへ委譲する」に変更した。この方針転換がなければ、記事は「全部systemdに書き直せ」という、実行されない提案で終わっていた。
③ 「最大の盲点は復旧訓練」
これは私が完全に見落としていた指摘である。IaC(Infrastructure as Code、構成をコードとして書く手法)を導入しても、監視ツールを整えても、Forgejo・秘密情報・systemd設定を別の媒体から実際に復元できることを検証しない限り、運用の成熟度は上がらない。Section 10の危険TOP5で「Forgejoバックアップが同一NVMeのみ」という問題を挙げたが、これはバックアップの有無ではなく復元できることの証明が欠けているという、より根の深い問題として扱うべきだとCodexは示した。この視点はSection 12の90日ロードマップの合格条件にそのまま反映されている。
「監視スタックは過剰」という直感がデータと一致していた
Codexの4番目の反論は「Prometheus+Grafana+LokiはPi5には過剰」という定性的な主張だった。これを裏付けるため、Debianの利用実態統計であるpopcon(popularity-contest、Debianパッケージがどれだけ実際にインストールされているかを匿名集計した統計)を確認すると、Prometheusのインストール率は0.3%、Grafanaは0.9%だった。つまりCodexの「深さより監視製品の世話が増える」という直感は、実際のDebianユーザーの選択傾向とも一致していたことになる。
クロスモデルレビューの効用
この一連のやり取りが示すのは、単一のモデルだけで記事を作ることの限界である。私(Claude)だけで書いていたら、この記事は「eBPFとNixとPrometheusを入れましょう」という、見た目は高度だが実際には順序も優先度も誤った提案で終わっていたはずである。Codexという別のモデルに反論させることで、「深そうに見えるもの」と「実際に深いもの」を分離できた。これは記事の構成だけでなく、実際の作業計画(Section 12)にもそのまま反映されている。
→ 次のSection 12では、ここまでの全部を「90日で何を入れて、何ができたら合格か」という実行計画に落とす。
🗓 Section 12: 90日ロードマップ — 何を入れて、何ができたら合格か
このセクションの3点
① Day 1-30は守り(Uptime Kuma / Beszel / Gotify + バックアップのオフサイト化)
② Day 31-60は材料と数字を回す(Umami / Karakeep / Miniflux)
③ Day 61-90は生活と事業を移す(Immich / Paperless-ngx / Vaultwarden / Homepage)。各段階に「検証可能な合格条件」を設ける
- 1
Day 1-30 守りを固める
Uptime Kuma / Beszel / Gotify を入れる + Forgejoバックアップをオフサイト化する
入れるソフト: Uptime Kuma(死活監視)、Beszel(負荷・容量の記録)、Gotify(通知)、restic(バックアップのオフサイト転送)
何ができるようになるか: 過去2回起きたCloudflare事故のようなことが起きても、気づかないまま放置される時間がなくなる。いまForgejoのバックアップは734MB×5世代=4.8GBが同じNVMe上にしかなく、Piそのものが壊れたら消える。resticで別の場所へ複製を持つことで、この一点リスクを解消する。
検証可能な合格条件: サイトを1つわざと止めて、60秒以内にスマホへ通知が来たこと。さらに、バックアップを別媒体から実際に復元できたこと(この2つを自分の手で確認するまでは未完了とする)。
- 2
Day 31-60 材料と数字を回す
Umami / Karakeep / Miniflux を入れる
入れるソフト: Umami(自サイトのアクセス解析)、Karakeep(記事・動画ネタの保存庫)、Miniflux(情報源の一元巡回)
何ができるようになるか: どのwiki記事が読まれ、どこから流入したかが自宅の箱に残るようになる。ネタ集めと情報収集がKarakeepとMinifluxに一本化され、ブラウザのブックマークに散らばっていた状態から抜け出す。
検証可能な合格条件: 「先月どの記事が一番読まれたかを数字で言える」こと。感覚ではなく、Umamiの画面を見て即答できる状態を合格とする。
- 3
Day 61-90 生活と事業を移す
Immich / Paperless-ngx / Vaultwarden / Homepage を入れる
入れるソフト: Immich(写真・動画の自動保存)、Paperless-ngx(契約書・領収書の検索庫)、Vaultwarden(パスワード管理)、Homepage(全サービスの入口の統一)
何ができるようになるか: スマホの写真がGoogleフォトではなく自宅の198GB空きの中に貯まっていく。契約書は紙やPDFの山からPaperless-ngxの検索窓に置き換わる。ログイン情報はVaultwardenの1か所にまとまる。
検証可能な合格条件: 「Googleフォトを解約できた」こと、そして「契約書を3秒で出せた」こと。この2つが揃って初めて生活と事業がPiの上に移ったと言える。
やらないことリスト
・Prometheus + Grafanaを常設しない(Debian popcon実測でPrometheus0.3%・Grafana0.9%しか常設されておらず、Beszelで足りる)
・Watchtowerで自動更新しない(24時間稼働のbotが更新後に黙って壊れるリスクの方が大きい)
・Node-REDとn8nを両方入れない(役割が重複し、自動化の置き場所が分裂する)
・Pi 5でローカルLLMを動かそうとしない(8GBメモリ・GPUなしでは実用速度が出ない。Claude/Gemini APIを使う)
この記事の出発点は「もっとどうしたらいいか」だった。答えは新しい技術を学ぶことではなく、いま余っている198GBのディスクと6.0GBのメモリの上に、仕事と生活を実際に載せることである。Piは既に81日間止まらずに動き続けている。足りていなかったのは能力ではなく、やらせることだった。
🎓 Section 13: 高校生レビュー — Codexに2回、厳しく採点させた
このセクションの3点
① 完成した記事を OpenAI Codex(GPT-5.6)に読ませ、「何も知らない高校生が理解できるか」を厳しく採点しろと指示した。
② 初版は3/10。「で、何をすればいいのかが無い」と読者からも0点をつけられ、記事の主役を全面的に入れ替えた。
③ 改訂版の再採点は 6/10。まだ満点ではない。残った指摘もそのまま載せる。
この記事には「高校生レビュー」を必ず入れるという決まりがある。何も知らない高校生が読んで理解できないなら、その記事は書けていないという考え方である。 そして書いた本人(私・Claude)には「自分が分かっているから読者も分かるはずだ」という盲点がある。だから別のモデルに採点させる。 「甘い評価は不要。厳しく判定せよ。この評価はそのまま記事に掲載される」と指示した。
3/10
初版のCodex採点
0点
初版の読者評価(下記参照)
6/10
改訂版のCodex再採点
3件
初版に含まれていた安全性の誤り
初版がなぜ0点だったのか
初版は、この記事の付録に相当する内容が本体だった。カーネルの設定を読み、eBPFが動かないことを突き止め、systemdへの移行手順を書き、namespaceを手で組み立てる方法を解説していた。技術的には正しい。しかし読者の評価はこうだった。
「私が行っていることを解説していますが、どんな活用方法をすればいいかが全く入っていません。0点です」
正しい指摘である。元の依頼は「もっとどうしたらいいか」だった。私はそれを「もっと深く潜るには」と読み替えて、やるべきことを一つも書かなかった。診断書だけ渡して処方箋を書かなかったのと同じである。だからSection 4〜8と12を新設し、カーネルの話は付録へ落とした。
Codexの再採点(原文のまま)
6/10(前回3/10 → 今回6/10)。 「何を入れると何が変わるか」は大幅に明確になり、Section 5〜8と12だけなら高校生でも目的を追える。ただし、主役のSection 5へ着くまでに約760行あり、Section 0からeBPF・BTF・cgroupなどが大量に登場するため、最後まで読む難度は依然高い。また、導入手順がなく、効果を断定しすぎた箇所や古いSection参照も残る。「読み物」から「行動案」には進化したが、まだ「初心者がこの記事だけで実行できる手順書」ではない。
残った指摘と、この改訂での対応
| # | Codexの指摘 | 対応 |
|---|---|---|
| 1 | 主役のSection 5にたどり着くまでが長い。約760行を読まないと本題に入れず、高校生は用語辞典と35サービスの一覧で離脱する | 修正した 冒頭に「読む順番」の表を追加。「とにかく何をすべきか知りたい人は 4→5→6→8→12 だけ読めばよい」と明示した |
| 2 | ソフト名は分かるが、最初の操作が分からない。「composeファイルを1つ足すだけ」と言われても、どこへ何をどう作るのか分からない | 修正した Section 5末尾に「最初の30分」を追加。Uptime Kuma 1本だけを実際のコマンドで起動し、わざと止めて通知を確かめるところまで書いた |
| 3 | 古い構成への参照が残っている。「第1段」「潜行ルート」など、改訂で消えた節への言及が残骸として残っている | 修正した 該当6箇所すべてを現行の構成に合わせて書き換えた |
| 4 | 導入後の効果を断定しすぎている。Uptime Kumaを入れただけで毎朝正常通知が来るとは限らず、Paperless-ngxも書類の取り込みとタグ付けが必要 | 部分的に対応 Section 6は「入れた1週間後」の姿として書いている。設定なしで自動的にそうなるわけではない点をここに明記して補う |
| 5 | Section 0の「一番の発見」が内部技術の話のまま。改訂後の主題(何を入れるか)と一致していない | 受け入れず Section 0は用語を揃えるための場所として残す。読む順番の表で「何をすべきか知りたい人はSection 4から」と案内する方を選んだ |
⚠️ Section 6について(指摘#4への補足)
Section 6に書いた「1日の流れ」は、ソフトを入れて設定を終えた1週間後の姿である。入れただけでそうなるわけではない。Uptime Kumaは監視先の登録と通知先の設定が要る。Paperless-ngxはまず頻繁に使う契約書10枚だけを取り込むところから始めるのが現実的で、過去の書類が自動で入るわけではない。Umamiも各サイトに計測用のタグを1行入れる必要がある。
「で、何をすればいいのか」は伝わるようになったか
Codexの答え: Yes
「Section 5で候補、Section 8で避けるもの、Section 12で導入順が示された。最初にUptime Kuma・Beszel・Gotifyとオフサイトバックアップを行う方針も明確。ただし、実際のコマンドや設定画面の手順はなく、この記事単独で導入完了まではできない。」
※この指摘を受けて、Section 5末尾に「最初の30分」を追加した。ただし15本すべての手順を載せてはいない。そこは正直に認める。
この記事を読んだ人が、明日やること1つ
Uptime Kumaを1つだけ導入し、自分のサイトを1件登録する。監視間隔は60秒以上に設定し、テスト用サイトを止めてスマホへ通知が届くか確認する。
— Codex(GPT-5.6)が選んだ、この記事で最初にやるべき1つ。手順は Section 5 の「最初の30分」にある
この記事の作り方について
この記事は、私(Claude)が実測・リサーチ・執筆を行い、OpenAI Codex(GPT-5.6)が3回、別々の役割で介入している。 ①提案への反論(Section 11)②初版の高校生レビュー(3/10・安全性に関わる誤り3件を発見)③改訂版の再レビュー(6/10)である。 さらに読者から「0点。活用方法が全く入っていない」という評価を受けて、記事の主役を丸ごと入れ替えた。 3点・0点・6点という数字は、その全部を残すために記事に載せている。点数を隠した記事は、次に何を直せばいいか分からなくなる。
これは付録である(先に読む必要はない)
ここから先はOSの内部を覗く話で、Section 5のソフトを一通り入れ終えてから来る場所である。「何をすればいいか」を知りたいだけなら、ここは読まなくてよい。それでも載せているのは、実際にカーネルの設定ファイルを読んだら予想外の事実が出てきたからである。
📎 付録: カーネル解剖 — このPiで、eBPFの半分は動かない
このセクションの3点
① このPiのカーネルは CONFIG_DEBUG_INFO_NONE=y でビルドされており、BTF(カーネルの型情報)が存在しない。だから最新のeBPF観測ツール群は素では動かない。
② CONFIG_UPROBE_EVENTS も未設定なので、自作Pythonスクリプトの関数呼び出しにプローブを刺すこともできない。
③ ただし絶望する話ではない。ftraceは完全に生きており、2,262個のイベントが今すぐ使える。「使えない」と「何もできない」は違う。
「もっともっとLinuxの深淵に生きたい」と決めて、最初にやったことはアプリを1個増やすことではなかった。
このPiの /boot/config-6.12.75+rpt-rpi-2712 を読むことだった。
アプリケーション層でどれだけサービスを積み上げても、カーネルが観測を許していなければ、その下には潜れない。
だから深淵の入口は、まず「このカーネルは何を許し、何を許していないか」を実測することから始まる。
実行したコマンドは3つだけである。カーネルのビルド設定を grep で確認し、BTF(後述)のファイルが存在するかを ls で確認し、
ftraceが使えるトレーサー一覧を cat する。これだけで、このマシンの観測能力の輪郭が見える。
# カーネルのeBPF/トレース関連ビルド設定を確認
grep -E "^CONFIG_(BPF_SYSCALL|DEBUG_INFO_BTF|KPROBE_EVENTS|UPROBE_EVENTS)=" /boot/config-$(uname -r)
# BTF(BPF Type Format)ファイルの存在確認
ls /sys/kernel/btf/vmlinux
# ftraceが使えるトレーサーの一覧
sudo cat /sys/kernel/tracing/available_tracers結果は明快だった。ls /sys/kernel/btf/vmlinux は「そんなファイルは無い」と返す。 available_tracers は blk function_graph wakeup_dl wakeup_rt wakeup function nop という7つの名前を返す。
以下、実測したCONFIG項目を全て並べる。
| CONFIG項目 | 実測値 | 使えるか | これが意味すること |
|---|---|---|---|
| CONFIG_BPF_SYSCALL | =y | 可 | eBPFプログラムのロード自体は可能 |
| CONFIG_BPF_JIT | =y | 可 | BPFのJITコンパイルが可能(BPF_JIT_ALWAYS_ONは未設定) |
| CONFIG_BPF_EVENTS | =y | 可 | BPFをトレースサブシステムに接続できる |
| CONFIG_KPROBES | =y | 可 | カーネル関数へのフック(kprobe)が可能 |
| CONFIG_KPROBE_EVENTS | =y | 可 | kprobeをtracefs経由で使える |
| CONFIG_PERF_EVENTS | =y | 可 | perfコマンドが使用可能 |
| CONFIG_FTRACE / FUNCTION_TRACER | =y | 可 | ftraceが使用可能(後述の通り2,262イベント) |
| CONFIG_UPROBE_EVENTS | 未設定 (not set) | 不可 | ユーザ空間関数のトレース不可 |
| CONFIG_DEBUG_INFO_NONE | =y | 不可(BTF) | デバッグ情報が一切埋め込まれない=BTFが生成されない |
| CONFIG_DEBUG_INFO_DWARF4/5 | 未設定 | 不可 | DWARFデバッグ情報も同様に生成されない |
BTFとCO-RE — 何が「無い」のか
BTF(BPF Type Format)とは、カーネルの構造体やその型情報をバイナリに埋め込んだデータ形式のことである。
これがあると、eBPFプログラムは「struct task_struct の pid フィールドを読む」というように、カーネル内部のデータ構造を名前で参照できる。
CO-RE(Compile Once - Run Everywhere)とは、このBTFを使うことで、1回コンパイルしたBPFプログラムを、 カーネルのバージョンやビルド設定が違う別のマシンでも再コンパイルなしで動かせる仕組みを指す。 現代のBCCツール群やbpftraceの「構造体メンバに直接アクセスする」記法は、この仕組みの上に成り立っている。
このPiのカーネルは CONFIG_DEBUG_INFO_NONE=yでビルドされている。デバッグ情報を一切埋め込まない設定であり、結果として /sys/kernel/btf/vmlinux は生成されない(実測で確認済み)。BTFが無ければCO-REは成立せず、 BCCの現代的なツール群とbpftraceの構造体メンバアクセスは、このカーネルの上では素のままでは動かない。
もう一点、CONFIG_UPROBE_EVENTSが未設定であることも効いてくる。これはユーザ空間の関数にプローブを刺す機能で、
これが無いということは、自作のPythonスクリプトの特定の関数呼び出しをbpftraceで追跡する、といった使い方ができないことを意味する。
カーネル空間のイベントは観測できても、アプリケーションコードの内部までは踏み込めない。
なぜRaspberry Pi公式カーネルはこの設定なのか。BTFを有効にするとカーネルイメージのサイズが増え、ビルド時間も伸びる。 組込み・SBC向けディストリビューションとしては合理的な判断だと考えられる(これは推測であり、公式の明言ではない)。 実際、Raspberry Pi公式リポジトリには「BTFを有効にしてほしい」という要望issueが存在する。 github.com/raspberrypi/linux/issues/6622
では何ができるのか — ここが救いである
BTFが無い、uprobeが無い、で終わる話ではない。ftraceは完全に生きている。 available_events は2,262個、イベントカテゴリは116個ある。kprobeもCONFIG_KPROBE_EVENTS=yのおかげで使える。
BPF_SYSCALL・BPF_JIT・BPF_EVENTS・PERF_EVENTSも全て有効である。「トレースができない機械」ではなく、
「最新のCO-RE型eBPFツールだけが動かない機械」というのが正確な表現である。
2,262
available_events(今すぐ使える)
116
イベントカテゴリ数
7
available_tracers
0
BTFファイル数(存在しない)
「やりたいこと」に対して、このPiが実際に「できるか/できないか」を対比させると、次のようになる。
| やりたいこと | このPiで可能か | 代替手段 |
|---|---|---|
| syscallの発行数を数える | 可(tracepoint/ftrace) | — |
| exec() / TCP接続をトレースする | 可(tracepointベースのbpftrace) | — |
| 自作Python関数の呼び出しを追う | 不可(uprobe無効) | strace / py-spy |
| カーネル構造体のメンバを読む | 不可(BTF無し) | kprobeで引数レジスタを生で読む |
| 自作Cプログラムの関数を追う | 不可(uprobe無効) | gdb / ltrace(いずれも未導入) |
| CPU・page fault・context switchを測る | 可(perf stat / perf record) | — |
導入済みのトレース系ツールはstraceとsystemd-analyzeだけである。bpftrace・bpftool・perf・ltraceはまだ入っていない。 Debian 13(trixie)ではbpftrace 0.23.2-1、bpfcc-tools 0.31.0+ds-7、bpftool 1:7.7.0+6.18.39-1+rpt1、linux-perf 1:6.18.39-1+rpt1が候補として存在するので、 導入自体は難しくない。難しいのはBTFという前提条件の方である。
この制約は不幸ではない。むしろ深淵への入口である。BTFとuprobeを有効にした自作カーネルをビルドし、 既存のカーネルと並べて起動する——これは曖昧な目標ではなく、「起動できたか/できなかったか」で検証可能な明確なゴールになる。 それが、この付録の先にある作業である。
参考: ebpf.io / docs.kernel.org/bpf / bpftrace.org / docs.kernel.org/trace/ftrace.html / raspberrypi/linux issue #6622
→ 次のSection 4では、この採点の裏返し——このPiで「まだ何にも使われていない資源」がどれだけ余っているかを数える。