n97搭載のミニPCをおうちサーバーとして迎い入れました

久しぶりのITエンジニアらしい記事

購入

ミニPC系で一番目立っているシリーズのデザインが好みではないため、在庫のこり2個のときに少し高めな¥19,950で購入。セールを狙えば1.7万円前後で狙えたようです。
NVRに使うため大きい方の512GBのSSD、docker運用で色々幅を効かせるためメモリも大きい方の16GB

Ubuntu Serverを入れるつもりのため、整理で捨ててしまって手元にないUSBメモリも合わせて買いました。¥790

ミニPCで使われるCPUというとN150、N200、N100、N97、N95といくつかラインナップがありますが、パフォーマンスが一番良いとされる※N97にしました。AMD系はDocker周りに冒険感あるらしいので見送り。
※N200がクロック上は高いがTDPが高く設定されているN97のほうが高負荷が続いても耐えられるらしい。どっこいどっこいではあるし、そもそもN200は安いマシンがない

24H稼働させるマシンでCPUの消費電力が高くてよいのかというのはありますが、マシン全体でも年間5000円程度っぽいのでこの程度は誤差でしょう。

この手のものはWindowsが入っており、ライセンスが怪しいですが今回はHomeということもあり、ボリュームライセンスではなく、OEMライセンスでした。(今回は使わないけど)

ちなみに、インフラ勉強会のDescodeで機運を高めてもらいました(名前は塗りつぶしました)

Ubuntu Server 24.04LTSインストール

Ubuntuをインストールから行うのは10年ぶりくらいです。USBメモリにISOイメージをブート用に書き込む作業も懐かしさがあります。(クラウドサービスだとポチポチで始められるので…)

BIOSの入りにクセを感じながら、USBブートします。ちなみにUSBタイプのマウスは持っていたので大丈夫でしたが、キーボードはヒヤヒヤしながらケーブルでHHKBを繋いだら認識してくれて助かりました。

仕事でLinuxに触るのは慣れているので、GUIがあるデスクトップ版では無くServer版を入れます。
適当に解説付きの記事を眺めながらセットアップしていきます。

ネットワークの設定はモニターがある場所に有線LANを持ち込むのが手間だったので、無線LANで設定します。(netstatがいつの間にか廃止になりnetplanになったんだなと思いながら)

インストールに使わなかった部分のボリューム設定も後追いで行います。全てデータ用として作ります。

あとはSSH接続できることを確認し、後追いでkey-pear接続に変えたり、場所を移し有線LANを接続し固定IPを割り当てたりしました。

NVR構築

NVRとはNetwork Video Recorder(ネットワークビデオレコーダー)」の略で監視カメラの映像を記録管理するものを差します。

OSSでもいくつかあり、Frigate、Shinobiがメジャーらしいです。

そのそも監視カメラは団地のベランダから駐車場を監視するために H.View (HV-800G2A) ¥21,900 を買い1年程使っていました。
(買い替え直前に隣の隣の車にぶつけられ最初誰がぶつけたかわからなかったので…買い替え後の車も高い車ではないのですが)

納車する。ではなく納車された話。(この指摘をネットだとよく見る) 納車前後で色々有りすぎて、単なる納車話になってないです...

カメラ自体はズームができるので5階ベランダから駐車場をそれなりにズームでき(人物の特徴までは抑えられる)、PoE対応なので、LANケーブル引くだけで終わりという感じで良いです。夜間の画質は映るものの人物だと特徴は厳しいかな。車は車種はわかるかな程度です。

このカメラ自体にもIPアドレスにブラウザ or スマホ用アプリからアクセスすると操作や、本体のmicroSDに動態検知で録画もしてくれるのですが、導入当初はできたもののいつの間にかPCからは再生ができず、スマホからは再生が途切れがち、リアルタイムも再生できないと使い勝手が悪く、どうしたものかと思っていたところです。

更に団地の理事をやる中で、ごみ捨てのルールを守らない内部or外部の人がおり町内会側で防犯カメラ設置の機運が高まるのではという中で構築欲が高まったというのもあります。

参考情報(by ルータ芸人)

マシンは今回色々やるのを見越してn97にしましたが、NVRのみなら上記のRaspberry Pi CM4かN100が候補になると思います。
Raspberry Piも種類が色々あり、ケースどうする問題に加えてOSもちょっと別なのでとっつきにくさがあります。

さてNVRのソフトとして Frigate、Shinobiどちらを選ぶかですが、参考情報でも採用しているFrigateを選びました。こっちのほうが高度な動態検知ができるらしいので。

生成AIでシュッとdocker-compose.ymlを作らせ、監視カメラがストリーミングしているrtspのURLを指定し、動態検知のcarとかを追加すれば動きます。

マシンの負荷はこんな感じです。比較対象がないから分からないですが、n97でもそれなりに余裕を持って動いています。
一応GPUを有効化したものの負荷が軽いH264(H265もカメラで選べる)を使っているからかあまり使われていません。

さすがNVRだけあって、動態検知(+物体検出)も良いですし、一覧や再生もサクサクできて快適です。
ある意味出番がないに越したことがない用途で使っているのであれですが、良い感じにできました。

次やるとしたらゴミ置き場の監視(3箇所あり全て別の建物にローカルLANと確認用の無線のみの構成)かベビーモニターになると思います。
ベビーモニターは専用製品とカメラ+NVRは絶妙なラインです。

RemoのAPIを叩き室温などをロギングする

我が家はNature Remoの赤外線で多少家電を操作しています。また温度や湿度はGoogleHome経由かアプリ経由で確認します。

別のクラウドの温度計だとロギングサービスもあり、ロギングできると良いだろうな~と思いつつ、Remoの標準にないのでやらないまま数年が経ちました。

せっかく24時間動くマシンがあるので、ロギングできるようにします。

といってもRemoはロギングできない代わりにAPIを公開しており、APIキーを取得すれば気軽に値を取得することができます(5分以内に30回の制限がある)

生成AIにpythonでAPIを実行しcsvに書き出すプログラムを作ってもらい、更にcsvからグラフにするプログラムも作ってもらいました。
cronで1分毎に書き出しを行っています。

1部屋の1日の温度・湿度の変化をサーバー内でjpgを作成するところまでできました(部屋名のタイトルが文字化けしている)

気が向いたらDB化してGrafanaなどで可視化したいところです。気軽に見れないと中々見なさそうではある。

あとCO2モニターのCO2-miniはドライバを入れるとmicroUSB経由で情報を取れるのですが、マシンを置く場所はキッチンで、CO2モニターは自室にあるので悩ましいところです。CO2こそ過去の履歴含め可視化したいところではあるのですが…

細かい部分

  • Cursorから接続できるようにする
  • Gemini CLIをセットアップする
  • 作ったものをgit管理する
    • aptのパッケージリストもバックアップしておきたい。
  • RTX810のインターネットVPNで外出先からも一応触れる

n97はファンがあるので、キッチンのネットワーク機器の置き場でなんか聞こえるなーと耳を澄ませるとファンが聞こえます。自室に置くと寝るときに少し気になるかなーと思います。

ちなみに下にあるPoEスイッチがそれなりに熱を持っているので、今はRTX810の上に縦型で置いてます。(一応足が5mmくらいあるのと、吸気は横からで排気は背面なのでそこまで影響もない気もしつつ…)

10インチラックが欲しいかというと…まだいいかなという気持ち

固定IPアドレスの割当が増えてきたので構成図か管理表的なものを作りたいと思いつつ放置している。

  • ルーター
  • 無線LAN 3台
  • 監視カメラ
  • ミニPC

24時間動くPC用途がありそうで限られているのと、セットアップの手間とかが億劫で導入をずっと先送りしていましたが、勢いで導入し最低限使えるところまでやりました。

次に色々触るのはいつになるか絶妙ですが、初期構築としては一旦完了です。