HomeAssistant の CPU 負荷
Dockerのプロセス負荷
サーバのプロセス負荷が先週から高くなり、色々と機能追加で遊んでいる HomeAssistant が原因かと、Docker のプロセス負荷の監視を追加。負荷増加の原因は、止めたと思ってた Homebridge の systemd ファイルの残存で、再起動で再び動いていたのが原因だった。

朝のオートメーションが動かない
朝は、少しづつの頭の目覚めのために、朝イチにテレビをつけている。これまでは、TV のオンタイマーだったけど、HomeAssistant に移行しようとしている。HomeAssistant なら、Web 操作で簡単に、オートメーションのON/OFFが切り替えられる。
んで、オンタイマーを切って、朝のオートメーションに切り替えたが、朝テレビが付いていない。原因の1つとして、HomeAssistant からホスト側に処理を起動する際の ssh コマンドで、ホストキーの確認で yes/no/… の入力待ちになっていたのが原因。ssh コマンドに -o StrictHostKeyChecking=accept-new を追加する。
ただ、この対応処理を加えたのに、今朝も TV が点いていない。 #危うく寝坊するところだった。
ダメ元で -o StrictHostKeyChecking=no にしてみる。
Antigravity CLI のインストール
Gemini CLI を便利に使っているけど、新しく統合化された Antigravity CLI に移行されるらしい。コードも Go 言語による実装となった様子。
$ curl -fsSL https://antigravity.google/cli/install.sh | bash : ✅ Antigravity CLI installed successfully at $HOME/.local/bin/agy Run 'agy' to start the CLI

WordPress 7.0 アップデート
特に、WordPress の追いかけしてないし、メジャー番号が上がるのはちょいと不安…といいながら、バックアップも取らずに更新をポチる。うん、問題なし。

HomeAssistant のオートメーション
スマホの Ping(ICMP) の binary_sensor では、スマホがスリープ状態になったりするタイミングがあって、単純な ping では接続/切断が発生して、在宅/外出が正しく検出できない。
Ping(ICMP)の設定には consider_home で『デバイスが応答しなくなってから「切断」と判定するまでの待ち時間』を設定することができるが、エンティティとして扱える binary_sensor には consider_home は効き目がない。調べる中で device_tracker を有効にする必要があることが分かったけど、有効設定の画面にたどり着くのにひと手間かかった。
ようやく、device_tracker が使えるようになり、在宅/外出の判定がうまくできるようになり、オートメーションの設定。
Gemini が automation.yaml で設定する方法を解説してくれたけど、自分が在宅しているかどうかで色々と通知を切り分けたかったので、オートメーションの UI での登録はちょい悩んだけど…
オートメーションの例
UIで設定した結果を、YAML形式で表示
# shell_command.sh_mail_notify_message - メールで送る shell_command
# shell_command.sh_google_notify_message - Google Home で話させる shell_command
alias: とーるの帰宅/外出を通知
description: ""
triggers:
- trigger: state
entity_id:
- device_tracker.iphone_xxxx
conditions: []
actions:
- action: shell_command.sh_mail_notify_message
metadata: {}
data:
to: t-saitoh
message: >-
とーるが
{% if states('device_tracker.iphone_xxxx') == 'home' %}
帰宅/{{ now().strftime('%H:%M') }}
{% else %}
外出{{ (now() - timedelta(seconds=450)).strftime('%H:%M') }}
{% endif %}
- if:
- condition: state
entity_id: device_tracker.iphone_yyyy
state:
- home
then:
- action: shell_command.sh_google_notify_message
metadata: {}
data:
message: >-
とーるが
{% if states('device_tracker.iphone_xxxx') == 'home' %}
帰宅
{% else %}
外出
{% endif %}
しました
mode: single
Homebridge2 はまだ早い?
homebridge2.0 が正式リリース
Homebridge の最新の homebridge2.0 が正式リリースとなった様子。

早々に更新をかけたけど、Homebridge People Pro とか Homebridge Cmdswitch2 などのプラグインが対象外となったようで、更新して起動したら、プラグインが動かず、バージョンを元に戻した。
更新してしまうと、自宅サーバでは Homebridge People Pro を活用して、在宅 / 外出の判定に使っていたのが動かなくなる。HomeAssistant に移行すればいいんだけど、私,ママ,こども,洗濯機などの監視だと、オートメーションの設定がかなり煩雑になる。
当面は、Homebridge 1.11.4 のままで運用かな。
snap refresh のトラブル
Ubuntu 26.04 をいれて、snap store につながらなくなり、snap refresh が動かない。
この2日間ほど色々と原因を探していたが、原因不明。マニアックな自宅ネットワークの設定不備を疑って悩んでた。でも、ややこしくない根っこのルータに直結して実験してもつながらない。ということは自宅ネットワークのトラブルじゃない…と確信できたんだけど、そのあと数分後に(何もしてないのに)動き出す。なんだかなぁ…
2026/05/03
Ubuntu への DDoS 攻撃が出ているらしい。snap も影響うけてたんだろうな。
spamhaus のDQSキー取得
spamhaus はパブリックDNSを拒否
自宅メールサーバでの運用で、spamassassin などの設定をしていても、迷惑メールがそれなりに届く。
傾向としては、Google や Amazon のクラウドサーバから、SPF や DKIM を正規に取得した使い捨てドメインから送られてくる。このため、OpenDMARC などを設定してもダメ。Gemini に聞いたら、使い捨てドメインからの RBL のデータベースが得意な、spamhaus を薦めてくれる。
ただ、spamhaus は、以前にも設定したけど問い合わせを拒絶されたので、設定から外していた。改めて確認すると spamhaus は、無料サービスだけど大量の問い合わせをさばききれないので、8.8.8.8 や 1.1.1.1 のような パブリックDNS を経由した問い合わせには、答えを返さない運用をしているらしい。私の拒絶経験もコレが原因。
んで、色々調べると、無償サービスだけどユーザ登録して DQS キーを使えば、パブリックDNS経由での問い合わせでも拒否されないらしい。(最初、ユーザ登録とか嫌いなので、パブリックDNSを使わないキャッシュDNSサーバを立てようか…とも思ったけどシステムが複雑になるだけ)
spamhaus のユーザ登録とDQSキー生成
spamhaus の登録ページにアクセス(Spamhaus DQS Sign Up )し、DQS キーの発行を行う。
postfix に登録
postfix の main.cf の smtpd_recipient_restrictions に 以下のように登録。xxx…xxx の部分に発行した DQS キーを記載する。
((( /etc/postfix/main.cf )))
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject_rbl_client xxxxxxxxxxxxxxxxxxxxxxxxxx.zen.dq.spamhaus.net=127.0.0.[2..11],
check_policy_service unix:private/policy-spf,
permit
追記 2026-05-07 spamhausの効果覿面
spamhaus を RBD に登録してから、効果覿面。使い捨てドメインからのメールがきれいさっぱり止まっていて、最近は spam なしが続いている。
Ubuntu 26.04 で独自パッケージ設定が無効化
Ubuntu 26.04 をインストールしたら、nodejs, vscode, google-chrome などの インストール用の設定が無効化されている。まあ、競合する可能性あるだろうし、無効化されても文句はいえん。ということで、設定のやり直しをして、古い sources.list を削除
((( node.js ))) $ curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash - $ sudo apt-get install -y nodejs build-essential ((( vscode ))) $ curl -fsSL https://packages.microsoft.com/keys/microsoft.asc \ | sudo gpg --dearmor -o /usr/share/keyrings/microsoft.gpg $ sudo apt install code ((( google-chrome ))) $ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb $ sudo apt install ./google-chrome-stable_current_amd64.deb ((( 古い sources.list を削除 ))) $ cd /etc/apt/sources.list.d/ $ sudo rm *.distUpgrade ((( パッケージ更新の確認 ))) $ sudo apt upgrade -U
UPS交換(Linux 7.0による警告対策)
UPSが大量の警告
Ubuntu 26.04 の導入により Linux の Kernel も linux-image-7.0.0-14-generic になったが、移行後の Load Average が高い。
原因を調べると(後述)、apcupsd で kernel が以下の警告を毎秒くらいの頻度で出ている。APC ES 750 を使っているけど、4byte の返答があるはずなのに2byteしか返ってこないという内容らしい。このため、syslog のファイル出力でシステム負荷が 0.4 ほどに上がっている。
4月 24 23:05:29 ... kernel: hid-generic ... :Event data for report 22 was too short (4 vs 2)
以前の Kernel なら、同様のエラーはでていたのかもしれないが、syslog に警告を記録していなかったから、問題にはならなかった。Kernel が 7.0 になり、この辺の対応がきちんとするようになったのが原因のようだ。

しかたがないので、syslog でこのメッセージを記録しないように設定したけど、それでも 負荷が 0.2 ほどになる。
以前の Kernel なら、0.1 程度だったので、 なんとなくヤな感じ。
負荷の原因の見つけ方
今回、UPS の原因を見つけるにあたり、Gemini を活用しまくり。top の出力を Gemini にかけて、pidstat, vmstat などの結果を確認して…の繰り返し。
$ top
$ htop # あまり重い処理がみつからない
$ sudo pidstat 2 5 # 2秒おきの集計を5回表示
$ sudo vmstat 1 5 # 負荷の原因が、計算かディスク待ちか
$ sudo iotop -o # どのプロセスが入出力しているか
# ここで、systemd-jounald が原因というのが判明
$ sudo journalctl -f # Syslog を確認
# ここで、UPS のログが見つかる
UPSのエラー対策
UPS のエラー警告だけど、UPS の状況を確認すると、apcaccess コマンドの結果が、「ONLINE:つながってるけど NOBATT:バッテリーがつながっていない」との出力がでている。充電電圧も出力されていてバッテリーは動いているはずなのに…。Gemini に聞いても「UPS のよくある故障だし、Syslog を無視するようにして問題なく、他の機能が正しく動いているなら無視していい」とのアドバイス。
$ apcaccess : STARTTIME: 2026-04-24 17:54:04 +0900 MODEL : APC ES 750G STATUS : ONLINE NOBATT
Syslog をフィルタリングしてディスクI/Oが改善しているとはいえ、以前より負荷が高い状態は気持ち悪いので、USPを交換した際の予備(バッテリー交換済み APC ES 550)があったので、元に戻した。
交換したら、UPS の警告は出なくなり、Syslog フィルタリング処理も不要になって、負荷も 0.1 程度に落ち着いたので、これで良し!!

Ubuntu 26.04 LTS リリース
Ubuntu 26.04 LTS が4/23にリリースされた(る?)。
ひとまずお試しと思うが、4/23 21:00 (JST) では、do-release-upgrade を実行しても、何も起こらない。
do-release-upgrade –devel-release
ということで、数時間フライング。ただし、影響を気にして WSL 環境に入れる。Windows App 的には、Ubuntu 24.04 なんだけど、Ubuntu 25.10 に更新済み。んで、今回の更新で Ubuntu 26.04 LTS となる。
$ sudo apt upgrade -U $ sudo do-release-upgrade --devel-release $ cat /etc/os-release PRETTY_NAME="Ubuntu 26.04 LTS" NAME="Ubuntu" VERSION_ID="26.04" VERSION="26.04 (Resolute Raccoon)" :

メインサーバの更新は一苦労
WSL 環境は、無事に 26.04 に更新できたので、メインの自宅サーバを更新。
ただ、こっちは面倒だった。サーバは、複数のネットワークインタフェースを Policy-routing させているけど、パッケージ更新中に netplan の関係で、インターネットにつながる設定を消してしまったのか、途中でネットワークが切れ、do-release-upgrade の最中に reboot せざるおえなくなった。
なんとか、復帰させたのはいいけど、最後は apache2 + wordpress のトラブル。
WordPress を起動したけど、データベース接続エラーが出てしまう。確認をすすめると、mariadb が後方互換で datadir = /var/lib/mysql で動いていたけど、datadir = /var/lib/mariadb がデフォルトの設定にされていた。いろいろ試していたけど、/var/lib/mysql の中身をごっそり /var/lib/mariadb にコピーしなおして無事復旧。
do-release-upgrade の最中に reboot したから、mariadb の正しい移行に失敗したんだろうな。



