世界を動かす技術を、日本語で。

このブログはリサイクルされたGoogle Pixel 5(2024)で運営されています

概要

  • Androidスマホ を使ってブログサーバーを構築した体験談
  • Pixel 5Termux を活用した低消費電力・オフグリッド運用
  • ソーラーパネル とリサイクル部品による持続可能な構成
  • Hugo による静的サイト運用と自動化・バックアップ手法の紹介
  • 実際の運用での課題と工夫点を簡潔にまとめた内容

Androidスマホでブログサーバー運用

  • Android端末 をサーバーとして活用したブログ運用の試み
  • Linux prootデスクトップ の構築経験を活かした発想
  • Pixel 5 (Verizonロック・最新機種)を選択
  • USB-OTG対応 ・有線LAN運用のためのドック使用
  • セキュリティ重視 のため、できるだけ新しい端末を利用

インスピレーション

  • ESP32 でサイト運用する@kaimac氏の投稿
  • Android端末+ソーラーパネル で運用するcompost.party(@computersandblues氏)
  • OpenWRT導入TP-Linkルーター での自宅サーバー(@stevelord氏)
  • 省電力志向 ・リユースハードウェアの活用

ソーラーパネルとオフグリッド運用

  • Harbor Freight Tools の100Wソーラーパネルを利用
  • Jackery 160Wパワーステーション で蓄電・安定運用
  • 完全オフグリッド なブログサイトの構築
  • Permacomputing 思想の実践

Termuxによるサーバー構築

  • Termux でLinux環境を簡単に構築
  • Hugo がTermuxリポジトリに存在し、即導入可能
  • git, screen, テキストエディタ, hugo のインストールのみで運用開始
  • dufs (静的ファイルサーバー)でブラウザ経由の投稿・編集も可能

必要なユーティリティ

  • rsync, openssh, git, wget, curl, fish shell, cronie, termux-services, iperf3, speedtest-go, screen, helix, hugo の導入
  • sv-enable コマンドで sshd, cronie をサービス化
  • 再起動後 にサービス有効化

SSHによるリモート管理

  • SSHサーバー をTermuxでセットアップ
  • ssh-copy-id で公開鍵を登録
  • sshd_config の編集ポイント
    • ユーザー名は固定(whoamiで確認)
    • ポート番号は 8022 で固定

Hugoサイトの運用・自動化

  • 既存Hugoサイト をVMからPixel 5へ移行
  • リバースプロキシ の設定変更のみで公開
  • cronie で定期的にブログ再起動・キャッシュクリアを自動化
    • fishエイリアス でコマンド簡略化
    • screen でHugoプロセス管理
    • cron で5分毎に再起動スクリプト実行

バックアップ運用

  • rsync でリモートからファイル同期
  • デスクトップPCNAS への定期バックアップ
    • cronで自動実行
  • git によるバージョン管理・バックアップ
    • 自宅gitインスタンスやGitHub等へプッシュ可能

まとめ・感想

  • Androidスマホ でも十分なパフォーマンスと安定性を実現
  • 省電力・リユース ・オフグリッドなブログ運用の可能性
  • Termuxオープンソースツール の活用で構築が容易
  • 運用上の課題 はバージョン差異と電源管理のみ
  • フィードバック・質問 はMastodonまたはメールで受付

コメント・質問受付

  • Fediverse (Mastodon: @cinimodev@masto.ctms.me)または
  • メール (blog.discourse904@8alias.com)まで

Hackerたちの意見

ペダンティズム:再利用されたGoogle Pixel 5。壊れて再構成されたわけじゃないよ。環境への影響の順番は「減らす、再利用する、リサイクルする」だから、再利用はアップグレードだね!

「Recycle」は文法的には全然正しいよ。再利用の別の言い方って感じ。

いや、全体として再利用されたんだよ。「リサイクル」は完全に正しい。細かいことを言うのは無駄だったね。https://en.wiktionary.org/wiki/recycle#:~:text=To%20reuse%20...

古いスマホをインフラ軽量アプリケーションに使うアイデア、いいね。低消費電力と内蔵UPSを活かせるし(もちろん、欠点もあるけどね)。自分もいくつかの古いAndroidデバイスがあって、こういうクールなことに使いたいんだけど、今のホームラボのインフラにVMやコンテナを追加すれば、追加の電力消費なしでできそう。やってみたいけど、やっぱりクールだよね。このプロジェクトについての疑問は、なんでWi-Fiじゃないの?著者には良い理由があると思うし(自分もこだわりがあるから)、ドッキング→イーサネットデバイスが必要なくなるのは、電力を必要とするデバイスの無駄な追加に感じる。あと、使っているデバイスを考えると、帯域幅やスループットもあまり制限にはならないと思う。著者のこの要件についての具体的な理由に興味があるな(自分はBAだから、こういう質問が得意)。著者へのコメント:Pixel 5をホームラボの在庫に加えなきゃ!サイトもいい感じだし、レイアウトや情報も素晴らしいね。

なんでWiFiじゃないの?著者じゃないけど、推測してみるよ。WiFiは遅延が高くて、ちょっと確率的なんだ。サーバーへのリクエストのうち、最も遅い1%は追加で1000msくらいかかるかもしれないし。もし俺が携帯からブログを運営してたら、すごく速く動いてほしいと思うよ。それに古いAndroidフォンだと、最新のWiFi規格が使えないかもしれないし、HNのホームページに載ってるとトラフィックに苦しむこともあるだろうね。

しばらく前から、使っていない古いスマホを使って…分散型ウェブやアプリのテストをするアイデアを考えてるんだ。夜に充電しておいて、朝起きたらちょっとお金が稼げてる感じ。問題は、誰も本当に気にしてくれないことなんだけどね。クラウドホスティングは安いし。

こんにちは、ブログの著者だよ。ありがとう!VMやコンテナは、すでに動いているホームラボの電力使用量には影響しないって思う。ちょっと楽しみでやってみたし、太陽光で動かせるのが良かったんだ。最初は夜にラボをオフにして、スマホがバッテリーで動く予定だったんだけど、ホームラボが重要なインフラになっちゃって、常に稼働させなきゃいけないんだ(笑)。Ethernetが必要だったのは、帯域幅の一貫性のためだよ。俺のWiFiネットワークはあんまり良くないし。

これをやる上での一つの問題は、セキュリティについてなんだよね。古いAndroidフォンはもうアップデートされないことが多いし(Pixel 5がまだサポートされてるかはわからないけど)、特にインターネットに接続されてると、セキュリティの脆弱性が放置されるのが心配。

どうせ繋ぐなら、電源とイーサネットも一緒に使った方がいいよね。

Wi-Fiの送信に必要な電力がUSBよりも少ないって言ってるの?それと、BAって何?

Elixirでこれをやる夢があって、ノードを簡単に安全に繋げる能力を使って、もっと処理能力を追加するために、ただ単にもっとスマホを繋げるっていうのを考えてるんだ。

古いスマホをインフラ軽量アプリケーションに使うアイデアはいいね。低消費電力と内蔵UPSを活かせるし(もちろん、欠点もあるけど、それはある程度しか軽減できないよね)。モバイルデバイス向けの「サーバー化」キットが見てみたいな。ゲームボーイアドバンス用に開発された「コンソライズド」キットみたいにね。[1]: スマホからメインボードを取り出して、外部ストレージやより良い電源、物理ネットワークインターフェースと直接接続して拡張する感じ。

一番の心配は、スパイシーピロー問題をどう避けるか... USBからバッテリーなしでスマホが動けば、めっちゃ嬉しいんだけど。

https://www.instructables.com/Power-an-Android-Phone-Without... 特定のモデル用のダミーバッテリーもオンラインで買えるよ。

俺もそれが心配だよ。週に一回くらいチェックしてる。もっと安全な方法を見つけないと。

スパイシーピロー問題の最悪なところは、バッテリーセルを取り外してBMSに電源をハンダ付けしても、Androidが「もうバッテリー切れだろう」と判断して自動的にシャットダウンしちゃうことなんだ。これをオーバーライドするにはデバイスをルート化しなきゃいけなくて、すごく面倒だよ。もちろん、君が提案したように、直接壁の電源から動かせれば、こんな問題は起きないんだけどね。

俺の小さな古いAndroidデバイスの軍団は、USBの「充電ステーション」に繋がってるんだ(1つのプラスチックデバイスから複数のUSB充電ポートが出てるやつ)。それがスマートスイッチに繋がってて、夜の数時間だけスイッチが入るようにしてる。最低限充電を保つためにね。ほとんどのデバイスはカスタムROMを使ってて、ルート化もしてる。ACCAアプリを使って、充電を最大80%に制限してる。2015年に出たSamsung Note 5は、6ヶ月前にやっと調子が悪くなった。Samsung S9とNokia 6.1は、どちらもまだ元気で、比較的新しいLineageOSのバージョンを使ってる。どちらも2018年のモデルだから、約6.5年経ってるけど、スマホとしては古いけど「電子的には」そんなに古くはないよ。

耐火ボックスに入れて、もし壊れたらそれまでって感じでいいんじゃない?

一番簡単なのはプログラム可能なプラグを使うことだね。スマートじゃなくてもいいから、安い電源で1時間か2時間充電するように設定すればOK。あとは普段通りバッテリーを使う感じ。バッテリーがダメになってる?それなら、4時間ごとに30分充電するように設定するといいよ。

24/7でプラグインされたスマホって、超最適化されたクラウドサーバーのスライスよりも実際に電力効率がいいの?

太陽光パネルから充電されたバッテリーに繋がっているなら、そうだよ。

電力効率については分からないけど、リソース効率は確実に良いよね。減らす、再利用する、リサイクルする。最後の部分にこだわるのはやめようよ。

まあ、ざっくり言うと、誰も電力効率のためにクラウドサーバーを買わないよ。人々は信頼性やパフォーマンス、コストのためにクラウドを利用するか、その組み合わせだね。超パワーを買うなら、電力効率は諦めることになるよ。

パワーマネジメントが正しく設定されていれば、そうだね。

さらにすごいのは、HNで同時に2つのフロントページ投稿があること!

おお、これは確かに珍しいね。

電力効率が面白いよね。現代のスマホは基本的にバッテリー寿命に最適化されたARMサーバーみたいなもんだし。Pixel 5は負荷時に5W未満しか使わないけど、典型的なx86サーバーは50-100W使う。個人のブログなら、年間400-800 kWhの節約になるよ。電子機器の再利用とリサイクルの環境への影響は、あまり評価されてないよね。

静的サイトなら、S3やGithub Pagesに載せるだけでかなり良くなるよ。サーバーは既に動いてるから、使われてない時は0Wで、リクエストされてない時はリソースも消費しないしね。でも、静的サイトのために家にx86サーバーを置くのは、めっちゃ非効率だよね。

2020年のスマホと同じ仕事をするには、少なくとも10年前のCPUだと50-100Wくらいかかるだろうね。もしPiやスマホ、ラップトップが20W未満でアイドル状態で動くなら、静的ファイルをホストするのに75Wも使うのはちょっともったいないと思う。でも、家にある超効率的な「Pi」を使うのは悪くないアイデアだよ。古いスマホがいくつかあればね!ただ、50W未満でアイドルできないゲーミングデスクトップと同じ目的には使わない方がいいけど。

OSを変更せずにCloudflaredとTermuxを使いたい人のために、ブログを書いたよ!興味があったら見てみてね。https://mitanshu7.github.io/html/SSH_into_Android_with_Termu...

どこかのGoogleの役員が、なぜ自社の資産をこんな風に再利用させているのか知りたがっているだろうね…広告を出す方法はないのかな。

こういう設定でDNSはどう機能するの?ISPsは一般的に、住宅用の接続でサーバーをホストすることを望んでいないと思うんだけど。

ダイナミックDNSのソリューションはたくさんあるよ。TP-Linkのアプリから設定できるやつもあるし(別に推奨するわけじゃないけど、良いか悪いかは知らない)。

このメッセージは、まだまだ調子のいいPixel 5から送信されました!今まで使った中で一番いいスマホで、サイズも完璧だし、背面に指紋リーダーもついてる。これ以降に試したやつは全部劣化してる。

この投稿は、約250ドルで手に入れたリファービッシュのPixel 5から作成しました。あなたと同じように、これが今までで一番のスマホだと思ってる。2020年のデザイン哲学がすごく好きで、技術的に印象的な機能(例えば、画面下の指紋リーダーみたいな)を省いているのがいいよね。これからも充電1回で2〜3日使えるのと、まあまあだけど素晴らしくはない写真が撮れることを願ってる。