スマホをサーバーに転用した実録

原題: My server is a phone now

なぜ重要か

廃材スマートフォンをサーバーとして再利用する具体的な手法として、低コスト個人インフラ構築の実例を示す点で参考価値が高い。

あるエンジニアが、自宅インフラをHetzner VPSからCMF Phone 1へ移行した経緯を公開した。8コアARM CPU・8GB RAM・128GBストレージを備えた同端末にTermuxをインストールし、Webアプリやリモートブラウザ「Surf」などを稼働させることに成功。Gitからのデプロイやネットワーク移動後の到達性も確保済みだという。

著者はこれまで個人インフラをHetzner VPSで運用していたが、リモートブラウザ「Surf」がChromeを実際に動かす場面で共有型の安価なVPSでは非力さを感じるようになった。専用CPU型マシンに移行すれば費用が増し、新規ミニPCの購入はDRAM価格高騰により割高だった。そこで手元に眠っていたCMF Phone 1(8コアARM、8GB RAM、128GBフラッシュ、Wi-Fi 6、5Gモデム搭載)を転用する案を思いついた。

最初の試みはpostmarketOSのフラッシュだったが、Wi-FiやBluetoothなど主要機能が未対応で起動後すぐ行き詰まり、ソフトブリック状態に陥った。リカバリーにはQEMU上のWindowsを使ったUSBパススルーやMediaTekドライバとの格闘が必要で、最終的に別のWindows環境でファクトリーイメージを焼き直すことで端末を復旧させた。この経験から「Androidにはすべてのハードウェアに対応した動作済みドライバが既にある」という事実を再認識し、方針を転換した。

第二の試みではstock Androidを維持したまま、Termuxをホスト環境として採用した。TermuxはOpenSSH・runit・Caddy・Cloudflaredなど標準的なUnixツールを提供し、Termux:Bootにより再起動後も自動でサービスが立ち上がる。Tailscaleで端末に固定のプライベートアドレスを割り当てることで、Tailnet上の任意のマシンから「ssh cmf」の一行で接続できる。TermuxはVMではなくAndroidのLinuxカーネル上で直接動作するが、Bionic系ユーザースペースの違いにより既存のDebianイメージはそのままでは動かない。著者はこの制約を活かし、Termuxをコントロールプレーンとして各アプリを独立したコンテナ的な単位で管理する構成を採用した。現在は「Surf」と管理対象のChromeインスタンス、個人財務トラッカー、画面共有サービス、その他複数の小規模Webアプリがこの端末上で稼働している。

出典

seg6.space — 元記事を読む →