2026-28週 週報
やったこと
今週は、HermesとNASを安全に運用するための監視・承認・復旧経路を整えた。
Hermesの安全性・堅牢性向上(7/7〜7/8)
- Discordから誰でも操作できる状態になっていたので、
GATEWAY_ALLOW_ALL_USERSを削除してallowlistを有効化した - Hermes WebUIを127.0.0.1 bindに変更し、アクセス経路をTailscale Serveに限定した
- WebUIに
MemoryHigh=4G/MemoryMax=6Gを設定し、メモリ使用量の上限を設けた - Hermesのextrasを17個から5個に減らし、不要な機能を停止した
~/.hermesをgit管理に移行し、夜間コミットとNAS・B2へのバックアップ対象にしたnetwork-online.targetが実際の疎通を待てていなかったので、起動時に実疎通を確認する方式へ変更した
破壊的操作の承認ゲート追加(7/8)
- wgerの削除時に、ダンプより先に
down -vが実行されてDBが復旧不能になった - 同様の事故を防ぐため、
down -v、Docker volume削除、resticのprune、B2削除、DROP DATABASEなどに人間の承認を必須化した - セッション承認キャッシュや自動承認設定を使っても、クリティカル操作だけは素通りできない構造にした
- 軽量モデルが複数ステップの順序制約を落とすことを確認し、プロンプトではなく能力側で制限する方針にした
NAS監視・障害通知の整備(7/7〜7/12)
- NASのunhealthy・exitedコンテナを5分間隔で検出し、状態変化時だけntfyへ通知する監視スタックを追加した
- Hermesの障害通知で、OnFailureの環境変数が渡らない問題と、複数ユニットで通知先を共有できない問題を修正した
- ntfyのURL構成ミスで通知が届いていなかった問題を修正し、E2Eで通知を確認した
- Hermesの再起動時に誤通知されないよう、45秒経過後も停止している場合だけ通知する方式に変更した
- NASのIP変更に伴い、ntfy配送先とheartbeat監視を現行IPへ更新した
- ntfyのJSON endpointとJSON Lines形式に対応し、heartbeat監視の実行成功を確認した
NASサービス・バックアップ構成の整理(7/8)
- filebrowser、adguardhome、glances、wgerを削除し、filebrowserのDBは退避した
- immich、paperless、minifluxのコンテナイメージをバージョン固定した
- 監視対象から意図的に停止しているサービスを除外した
- UGOSのrsync/scpがSSH経由の受信を拒否することを確認し、NASへのファイル転送はtar over SSHを使う方針にした
- NASのOS移行前に、UGOSの復元イメージを作成する必要性を確認した
iris-newsとHermes運用基盤の更新(7/7)
- iris-news Phase 3の週次レビュー機能を実装し、全315テストを通過した
- 日曜20:00に購読リスト変更提案を生成する仕組みを追加した
- Hermesへ渡すシークレットの3層分類や、メモから構造化・通知・リマインドへつなぐ運用設計を文書化した
- skillsのmtimeを3か月ごとに確認してntfyへ通知するcron jobを設定した
- Hermes configをversion 30から33へ移行し、
hermes config checkの成功を確認した
ネットワーク・メディア環境の更新(7/6〜7/11)
- 無線ルーターをTP-LinkからBuffaloへ交換した
- NASのHDDを8TBのものへ交換し、交換処理を開始した
- NASとの通信性能をiperf3とpingで測定し、有線接続で最大343Mbps、UDP 200Mbps時の損失46/517974を確認した
- GITADORAサントラの不足ファイルを確認し、メタデータを補完してNASへ同期した
album_artistをKONAMIに統一し、トラック番号とdiscタグの整合性を確認した- GITADORAのスキル値を6365.49から6404.36まで伸ばした
- Homeboxを試したが、型番よりバーコード中心の設計でAPI周りも合わなかったため、今回は採用を見送った