Home Assistant: スマートホームの高みを目指し、自宅サーバ・IT環境を再構築中

Home Assistant: スマートホームの高みを目指し、自宅サーバ・IT環境を再構築中
Page content

堰を切ったように

仮想化基盤の上でゲストとしてVM/LXCを運用し、そのイメージの定期的なバックアップを稼働中でも取得できるシステム構成は、可用性を高められる点で大変ありがたいものだ。これは業務では鉄板の構成であるものの、しかし、Raspberry Piを中心にずいぶん昔に組んだ私の自宅のサーバ構成は、当時の知識に基づいたまま、これまでずっと物理OSでの直運用を行っていた。

ほかにも、自宅の1ベイNASのHDD (2016年製) の寿命がそろそろ尽きるかもしれないという懸念や、最近知った定番のアプリ「Home Assistant」を運用してスマートホーム化をさらに楽しみたい、CO2センサーを増やして室内の換気制御をより緻密にしてみたい、などの欲望が押し寄せてきて。私の気持ちは、IT×住まいに関して抱く現段階の理想を具現化したくなり、サーバを含む自宅IT環境の再構築に、ここ数週間は趣味の時間を使っている。

基本は無音で、小規模で省エネで、ITと住まいとの自然なつながりを実現する。個人でできる範囲で、私も家族も楽に使えて、可用性は高く。そのためにはどうしたらいいか。どのような基盤から作っていくべきか。

“NOT A HOTEL”

ここまで書いたところで蘇ってきた記憶があり (本当に忘れていた)、今回の気持ちのきっかけを再認識した。2025年3月に『NOT A HOTEL FUKUOKA』を訪れた際に知った、スムースな空間体験と、それをもたらすための裏方の物凄い作り込み。あの時の衝撃をやっと私は咀嚼しはじめて、いま手を動かしているのだと思う。

書き留めておく

自宅のIT環境が“完成”に達することはないので、このブログ記事は、今回の再構築のきっかけや概要をいったん書き留めておくための、記録のマイルストーンのような位置づけだ。再構築の各部分の詳細については、本サイトとしてのネタ度 (バリュー) を判断して、もしかしたら単体の記事として仕上げていくかもしれません。

System-1. サーバ関係について

サーバ関係のBefore/Afterは次の通り。再構築の第一の目的は、仮想化基盤を用意すること。それは各アプリケーションごとの環境を用意して相互に分離し、かつ環境が確実に復元できるバックアップを残すためだ。

項目BeforeAfter備考
ハードウェアRaspberry Pi 4 Model B [8GB]Raspberry Pi 4 Model B [8GB]ラズパイ5への切替えも可能だが当面は4を維持する
物理OSUbuntuProxmox VE (Proxmox-Port; PXVIRT)仮想化を利用し、アプリ別VM/LXCで環境を分離する構成とする
ストレージ1USB接続: AMPCOMケース + M.2 NVMe SSD [120GB]USB接続: Buffalo SSD-PST250U3BA/N [250GB]物理OS起動用
2nd NICPLANEX USB-LAN1000R2nd NICは自宅のIP電話ネットワーク接続に必要 (Asterisk用)
2nd NIC + USB給電ハブUGREEN 45321 (6-in-1 USBハブ LANアダプター)ラズパイ4単体では給電力不足だったようで、USB接続ストレージのエラーが多発したのでUSB給電ハブを追加
ストレージ2USB接続: SanDisk SDSSDE81-4T00-GH25 [4TB]Dropbox, Google Driveのバックアップ先とするローカルストレージ / フォーマットは耐障害性の観点からFAT32ではなくext4
USB-ACアダプタ一般的なものAnker 521 Charger (Nano Pro)2系統の出力をラズパイ本体とUSB給電ハブへ1系統ずつ入力

余談: ラズパイの給電能力をUSB機器の消費電力が上回ると

ラズパイのUSB給電能力と接続するUSB機器の消費電力の大小関係には、注意が必要、と今回の構築途中に思い知った。この関係がほぼ拮抗していたり、消費電力が上回る状態が発生する場合には、おそらく接続の瞬断的なことが起こるのだろう、外付けUSB接続ストレージであればデータ異常のエラーが多発する。

分かってしまえば簡単な因果関係なのであるが、私はこのエラーの謎を解くまでに、クラウドから4TB SSD (上記のストレージ2) へ総量数百GBのデータ転送を試しては途中で失敗、を何度か繰り返し数日間悩んだ (白状すると、高額だった新品SSD本体の初期不良かなぁとも考えて返品処理の一歩手前までやっていた)。下記写真は、4TBの方ではなく250GB SSD (上記のストレージ1) が死んだときの端末画面である。後者が死ぬと仮想化基盤のホストOSが起動しなくなるので悲しい思いでモニターを接続した。そして、新品の4TBではなく250GB SSDもこのように死にうると判明したことにより、ストレージ2つに共通する要因として、USB給電に問題がある可能性を悟った。

参考リンク: サーバ

Before

After

System-2. 外部ストレージについて

外部ストレージのBefore/Afterは次の通り。再構築の第一の目的は、保守し続ける必要があるHDDを自宅の中から撤廃すること。

項目BeforeAfter備考
クラウド1Dropbox [2TB](左記を継承)日常的なファイルの置場
クラウド2Google Drive [2TB](左記を継承)写真・動画等の置き場, Dropboxのバックアップ先
クラウド3 (WebDAV)InfiniCloud [30GB (無料枠)]Proxmox VE VM/LXCイメージの定期的なバックアップ先
NAS, 外付けNAS: QNAP TS-128 + WD WD30EFRX [3TB]外付け: SanDisk SDSSDE81-4T00-GH25 [4TB]Dropbox, Google Driveのバックアップ先 / NASは自宅での必要性の低下、HDDの寿命を鑑みて廃止

クラウド3としてWebDAVアクセス可能なサービスを選定している理由は、Proxmox VEでのWebDAVマウントが標準設定の範囲で行えて、利用が容易であるからだ。仮に何らかの障害が発生してProxmox VEをゼロから再構築する必要がある場合、当該サービスをWebDAVマウントしてVM/LXCイメージのバックアップを復元することは数ステップの作業で可能なので、システム復旧に大きな工数はかからないと見込んでいる (実際、上記System-1の写真にあるcrash時にPVEを再構築したが比較的短時間で行えた)。

参考リンク: 外部ストレージ

Before

System-3. アプリケーションレイヤーについて

アプリケーションレイヤーのBefore/Afterは次の通り。再構築の第一の目的は、「アプリAの実行環境を触っていたらアプリBが動かなくなった」なんて困った事態が発生しないように、各アプリの実行環境をカプセル化すること。

項目BeforeAfter備考
センサー連携・スマートホーム物理OS上の各種自作スクリプトVMで構築 (Home Assistant)PiMox HAOS VM
Pi-Hole (自宅用Adblocking)物理OSに導入LXCで構築Pi-Hole LXC
Asterisk (IP電話の子機)物理OSに導入LXCで構築, 2nd NICへも接続Ubuntu LXC + Asteriskパッケージ
Podman (コンテナ実行環境)物理OSに導入LXCで構築Ubuntu LXC (Unprivileged container: No) + Podmanパッケージ
rclone, rsync, gpup (クラウドとのファイル同期・写真転送)物理OSに導入LXCで構築, USB-SSDをbind mount, 各種自作スクリプトUbuntu LXC + 標準パッケージ等

Proxmox VEで使えるHelper-Scripts

Proxmox VE (Proxmox-Port; PXVIRT) による仮想化基盤の上に各アプリのゲスト環境を構築する際、Proxmox VE Helper-Scripts (Proxmox ARM64 Helper-Scripts) を用いると物凄く楽ができる。例えば、PiMox HAOS VM (Home Assistant) やPi-Hole LXCの構築は、次のページにある手順で指定のスクリプトを実行すると半自動的に行える。

System-4. センサー・IoT機器について

センサー・IoT機器関係のBefore/Afterは次の通り。再構築の第一の目的は、これまで部品を組み合わせて手作りしていた部分を既製品へ置き換えて、センサーを実験装置ではなく調度品化すること。第二に、部品を余らせて新たな実験ができるようにすること。

項目BeforeAfter備考
リビングRaspberry Pi 4 (GPIO接続) + BME280 + MH-Z19C▲SwitchBot CO2センサー (温湿度計)GPIO接続物よりも既製品のスッキリ感・ハンディさを重視
書斎Raspberry Pi Zero WH (GPIO接続) + BME280 + MH-Z19C + WaveShare 2.7inch e-Paper HAT▲(上記と同じ)(上記と同じ)
寝室▲(上記と同じ)隣室のセンサーでもカバーできるが計測精度を上げるため追加
屋外▲SwitchBot 防水温湿度計屋外の温度・湿度も計測したいため追加
ハブ▲SwitchBot ハブ2SwitchBotセンサー製品用
その他スマート電球: 9個, スマートプラグ: 10個 (サーバ空冷用1, 照明用3, 換気扇用2, サーキュレータ用1, その他電化製品用3), スマートメーター: 1台, IRリモコンハブ: 1台(「サーバ空冷用1」を除いて左記を継承)IKEA, Tuya, Meross, SwitchBot, Nature Remoが混在

表中の▲印のセンサーの置き換えは記事執筆時点で未着手であり、これから作業を進める。Home Assistantにセンサーを統合 (Integration) する設定作業の難易度については、SwitchBotが公式ページ Home Assistant – SwitchBot International で紹介しているぐらいだから、ほぼほぼ心配していない。

参考リンク: センサー

Before

After

今回のまとめ

個人の範囲で行えるスマートホーム化は、冒頭部分で「定番」だと述べたように現段階ではHome Assistantを導入し、各種クラウドサービスや家電製品やセンサーをありったけHome Assistantに統合し、連携動作をプログラムするというアプローチが最も手っ取り早いであろう。

そう考えると、今進めている自宅サーバ・IT環境の再構築の方向性は、Home Assistant自体や、生活の中で用いているその他のアプリ (例えば自作のtelppo, liblibや、毎日必要時に実行しているGoogle NestのText-to-Speech機能など) が、これから自宅内で、安定的に動作し続けるために行っているものであるから、すなわち、大げさに言えばスマートホーム化推進のための基盤強靱化につながっているのかもしれない。

下記の画面は、我が家のHome Assistantの現状 [2025-05-11] だ。多くの様々なものを統合した状態だが、プログラム (if-thenで組むロジック) にはほとんど手を付けておらず、自分としては面白味がまだ全然足りない。これから生活の中で家族とも発案しつつ、模索していくのでしょう。