5月8日、開発者のBradley Taunt氏が「Serving a Website on a Raspberry Pi Zero Running Entirely in RAM」と題した記事を公開した。この記事では、わずか512MBのRAMしか搭載していないRaspberry Pi Zero v1.3で、完全にRAM上のみでWebサイトを運用する技術について詳しく紹介されている。
驚くべきことに、この構成ではPi Zeroが完全に起動した後はmicroSDカードを物理的に取り外しても動作し続ける。2015年に登場した5ドルのRaspberry Pi Zeroは、現在のスマートフォンの1/10以下という極めて限られたメモリしか持たないが、それでも実用的なWebサーバーとして機能させることができるのだ。
SDカード不要の完全RAM運用の仕組み
Taunt氏は自身のマイクロサイト「zero.btxx.org」を、Raspberry Pi Zero v1.3で公開している。この構成の核心技術は、Alpine Linuxのディスクレスモードにある。
Raspberry Pi Zeroは全体でわずか512MBのメモリしか搭載しておらず、そのうち約40MBはAlpine Linuxの動作に使用される。残りの472MBという現代基準では極めて厳しいメモリ制約の中で、システム全体がRAM上に展開されて動作している。
Alpine Linuxのディスクレスモードでは、起動時にmicroSDカードからシステムイメージをRAMに読み込み、以降はメモリ上でのみ動作する。設定変更はLocal Backup Utility(lbu)を使ってmicroSDカードに保存される仕組みだ。
必要な機材と外部サポート構成
ローカル環境
- Raspberry Pi Zero v1.3
- 512MB以上のmicroSDカード(起動とRAMへの展開用のみ)
- Waveshare Ethernet HAT(OTGアダプタでも可)
- イーサネットケーブル
- micro USB電源ケーブル
TLS処理のための外部VPS
Pi ZeroでTLS暗号化処理を行うのは現実的ではないため、Taunt氏は年額数ドル程度の格安VPSを併用している。このVPSで以下の構成を採用:
- Alpine Linux
- 128MB RAM
- 1GB NVMeストレージ
- 1 vCPU
この格安VPSでHAProxyによるTLS終端を行い、socatで自宅のPi Zeroにトラフィックを転送する構成だ。これにより、Pi Zero本体は軽量なHTTP配信のみに集中できる。
ディスクレスモードの設定手順
通常のsetup-alpine実行前に、設定永続化のための準備が必要だ:
setup-lbu mmcblk0p1
mkdir -p /media/mmcblk0p1/cache
setup-apkcache /media/mmcblk0p1/cache
lbu commit -d
重要な注意点として、lbu commit -dコマンドをパッケージのインストールやファイル変更の度に実行しないと、再起動時に変更が失われる。setup-alpine実行時は、ディスク設定で必ず「none」を選択することでディスクレス運用が維持される。
軽量Webサーバーの選択
darkhttpd(推奨)
リソースが限られた環境では、**darkhttpd**が最適解だ。基本的なHTTP配信のみに特化した軽量サーバーで、以下のようにOpenRCサービスとして設定できる:
#!/sbin/openrc-run
description="darkhttpd static web server"
command="/usr/bin/darkhttpd"
command_args="/var/www/example.com --port <desired-port-number> --maxconn 20"
command_background=true
pidfile="/run/darkhttpd.pid"
maxconnパラメータで同時接続数を制限し、メモリ使用量をコントロールできる点が重要だ。
nginx(高機能が必要な場合)
より柔軟性が必要な場合はnginxも選択可能だが、メモリ使用量は当然増加する。
メンテナンスとバックアップ
この構成の大きな利点はバックアップの簡単さだ。ネットワーク経由でバイト単位の完全クローンを作成できる:
ssh root@YOUR-PI-ZERO-IP "dd if=/dev/mmcblk0 bs=4M" > zero-backup.img
512MBという小容量のSDカードを使用しているため、バックアップ作成も高速で、複数のバックアップファイルを保持してもストレージ容量を圧迫しない。
極限環境での工夫とその意義
512MBという現代基準では極めて厳しいメモリ制約の中で、Taunt氏は以下の工夫を施している:
- 軽量なdropbear SSHサーバーの使用
- 最小限のパッケージ構成
- 静的サイトのみに限定した運用
- TLS処理の外部委託
この取り組みは単なる技術的実験にとどまらない。近年注目されているエッジコンピューティングやIoTデバイスでの軽量Webサービスにおいて、リソース制約下での効率的なシステム設計は重要な課題となっている。組み込みシステムでの軽量Webインターフェース実装や、電力制約のある環境でのサーバー運用を検討する開発者にとって、この手法は実用的な知見を提供している。
また、持続可能なコンピューティングの観点からも興味深い。古いハードウェアを最大限活用し、最小限のリソースで目的を達成するアプローチは、環境負荷の軽減にも寄与する考え方だ。
詳細はServing a Website on a Raspberry Pi Zero Running Entirely in RAMを参照していただきたい。