【ntpsec】geminiさんに聞いてみよう

監視カメラを運用しているので、そこで動かしているZoneMinderにはできるだけ正確な時計を与えてやらないといけない。

Raspberry Pi 4には、USB接続のGPSを接続していて、それをgpsd経由でntpsecにデータを渡してやり、GPSから時刻データを得るようにしている。

サーバー負荷に応じて、GPSから得た時刻データを調整するのだが、見ているウチに「あれ、進めるんだっけ?遅らせるんだっけ?」と混乱してくるので、AIのgeminiさんに丸投げ(^^:

ntpq -pn の結果から判断すると、適切な time1 の設定値は 0.077(またはより正確には 0.077251)となります。
計算の根拠
NTPにおける offset(オフセット)の単位はミリ秒(ms)です。
現在の設定(time1 0.106)において、基準となる公的機関の NICT(日本の標準時サーバー)と、お使いの GPS(SHM(0))の間で以下のズレが生じています。
    • SHM(0) のオフセット: +5.7048 ms (システム時間より 5.7ms 進んでいる)
    • NICT のオフセット: -23.0438 ms (システム時間より 23.0ms 遅れている)

GPS(SHM)を正確な NICT の時刻に一致させるためには、両者の差分である 28.7486 ms5.7048 - (-23.0438))だけ GPS の時間を遅らせる(マイナスする)必要があります。
    • 現在の設定値: 0.106
    • 必要な修正量: -0.0287486
    • 新しい設定値: 0.106 - 0.0287486 = 0.0772514

修正後の設定例
/etc/ntp.conf の該当箇所を以下のように書き換えてください。

この設定値は、USB接続のGPSからデータを取ってくるのに、遅延が発生するので、設定値によって、遅延分の時刻を先に進ませるという趣旨のパラメータ。

なので、設定値を増やすと時計が進むし、少なくすると時計が遅れるという仕組み。

ntpqコマンドで状態を見ると、基準となっているのが、Raspberry Pi 4のシステム時計で、それよりもGPSやNTPサーバーの時刻が進んでいたら正の値で、遅れていると負の値になる。

GPSの値と、基準とするNTPサーバーの値を見ていると、プラスだったりマイナスだったりするので、混乱してくるのだ(笑)

geminiさんに丸投げは楽でいいね 🙂

TP-LINK Tapo C545D ZoneMinderに設定

通常の監視範囲だと死角になっている玄関を自動で追尾してくれる。追尾後、動態検知をしなくなると元の位置へ戻る。

カメラが動くとモーター作動音がするので、敷地に入ってきた柿どろぼうさんは結構ビビるに違いない(笑)

TP-LINK Tapo C545Dはデュアルレンズで、ZoneMinderのモニタ設定は広角とズームでそれぞれ1つずつ設定する必要がある。

広角が常時録画で、ズームはカメラが動態検知して追跡するので、動態検知録画に設定してある。次に挙げるのは弄ったとこだけ。

・C545D(wide)
【general】
Source Type: [remote]
Function: [mocord] ※1
Reference Image Blend: [12.5% (Outdoor)]
【source】
Protocol: [RTSP]
Method: [RTP/RTSP]
Host: [アカウント:パスワード@カメラIPアドレス ※2
Port: [554]
Path: [/stream2] ※3
Capture Resolution (pixels): [640][368] ※4
Use RTSP Response Media URL:☑
【Storage】
Save JPEGs: [disabled] ※5
Video Writer: [encode]
OutputCodec: [h264]
Encoder:[libx264]

※注
1. 常時録画
2. Tapoアプリで作成したアカウント
3. 高画質は /stream1
4. ディスク容量節約で640×368
5. 映像で確認するので、画像は保存しない

・C545D(zoom)
【general】
Source Type: [remote]
Function: [modect] ※1
Reference Image Blend: [12.5% (Outdoor)]
【source】
Protocol: [RTSP]
Method: [RTP/RTSP]
Host: [アカウント:パスワード@カメラIPアドレス ※2
Port: [554]
Path: [/stream7] ※3
Capture Resolution (pixels): [640][368] ※4
Use RTSP Response Media URL:☑
【ONVIF】
ONVIF_URL: [カメラIPアドレス:2020]
Username: [アカウント] ※2
Password: [パスワード] ※2
【Storage】
Save JPEGs: [disabled] ※5
Video Writer: [encode]
OutputCodec: [h264]
Encoder:[libx264]
【control】
Controllable: ☑
Control Type: [ONVIF_camera]
Control Device: [profile_2]
Control Address: アカウント:パスワード@カメラIPアドレス:2020 ※2

※注
1. 動態検知のみ録画
2. Tapoアプリで作成したアカウント
3. 高画質は /stream6
4. ディスク容量節約で640×368
5. 映像で確認するので、画像は保存しない

ZoneMinderでONVIFにより、カメラのpan/tiltは制御できるが、Tapoアプリのzoomはソフトウェア処理なので対応していない。

使った感想としては、ZoneMinderは、検知設定を詰めてないと、動態検知では録画できてない場合があるので、常時録画にしてあるが、Tapo C545Dは割と動態検知がよくできている。

カメラの追尾は車などでは追尾しないが、自転車や歩行者など人と認識できるものは割とすぐ追尾状態になる。従って、ズームカメラが動く時=録画すべき時なので、ZoneMinder側の検知設定を煮詰める必要がない。

夜間は赤外線カメラに切り替わるので、前のRaspberry Pi3 + Webカメラよりはハッキリ見える。

Tapoアプリだと、ライト点灯や音声通話が可能なので、夜間の侵入者への威嚇にも使える。

なんかもう一台欲しくなった(笑)

家のサーバーがクラックされた?

家のサーバーがハングアップして再起動したが、監視カメラWebアプリのzoneminderが古い見た目になり、sshで外からログインしようとすると、

なんてのが出てくる。

# cat /etc/os-release

RETTY_NAME=”Debian GNU/Linux 10 (buster)”

って、OSが古くなっとる!?

よくよく考えてみると、ディスクケースがお陀仏になって、そこから抜き出したハードディスクをUSB変換器で接続してたから、古いハードディスクで再起動しちゃってたんだな。

古いハードディスクを繋いでいた事を完全に失念してて、ちょっとしたオカルト気分を味わったよ (^^;

【Raspberry Pi4】dovecot設定

Rasberry Pi OS liteのメールサーバーdovecotで、またパラメータが変わってて、Maildirの設定にちょっと苦労した。

mail_location が廃止されたので、namespace で解決するのが正しいようだ。

情報源: Namespaces | Dovecot CE

INBOX は /var/mail/noizumi で、他のフォルダ類は Maildir形式の /home/noizumi/Maildir に保管してるので先の設定にした。

昔、mbox 形式だと、メールフォルダの階層化ができなくて、フォルダ削除して Trash/delFolder みたいな状況になると、削除できなくなるってのがあったので、Maildirにしている。

今、mbox はフォルダの階層化できるようになってるんだろうか? AIさんに聞いてみる 🙂

はい、IMAPを利用している場合、mbox形式のメールボックスであってもフォルダの階層化(サブフォルダ作成)は可能です。

技術的には、ThunderbirdなどのIMAP対応メールクライアントを使用してサーバー上にフォルダを作成・管理することで、階層構造が実現されます。

あー、mboxはサーバー側にディレクトリを掘らずにファイルしか配置できないから、ファイル名に区切り文字で階層を表してる。

つまり、メールクライアントによっては、うまく判別できずに階層構造にならないって事もあり得るんだな。

じゃあ、Maildir形式の方がいいな。

新しく買ったHDDケース

ORICO 9928RU3を買った。

支那製だが、レオナルド・ディカプリオのカードのCMとは関係ない 🙂

どうせ日本メーカーでも、中身は支那製だし、日本メーカーと同価格帯なら、日本企業のマージン分、中の品質が高い可能性がある。

買って、大爆死する可能性があるので、今まで買った製品に触れなかったけど、アルミ筐体で冷えやすく、従来品よりファンの音もうるさく無く、速度も速いので、中々良い。

Amazonだと、同じ製品で、もっと安いページもあるが、低評価レビューがあって、欠陥品ロットがまとめられたページの気がするので、高い方のページでこうにう。

RAID1を構成するのに、この手の製品は今まで使っていたRAID1のデータの入ったディスクを継承できないので、新規にWD20EARZ-ECを2つこうにう。
昔買った値段より1.5倍くらいになっとるね 🙁

新規RAID1のディスクを構築してから、今まで使ってたディスクの1本をGREENHOUSEのIDE/SATA→USB2.0の変換コネクタを繋いで、必要なデータをコピーした。

新しく買ったディスクは、データ転送速度が180MB/s だそうなので、HDDケースに入れて、速度を計ってみる。

「UASP対応」と謳ってるだけあって速い。
元のディスクスピードの180MB/sを上回ってるのは、RAID1は読み出しに関しては2台のディスクから読めるので、その分高速化されるのだろう。

果たして耐久性はいかがなものか。
せめてハードディスクより先に逝って欲しくないなあ。

【Raspberry Pi4】家のサーバー復旧ちう

HDDケースぶっ壊れた。

という事で、Raspberry Pi Imagerを取ってきて、Raspberry Pi OS Lite 64bitをRAID1のHDDケースにインストール。

どうせ、GUI使わないので、X Window System系が入ってないのにした。

割と短時間で終了し、HDDが2TBなのに、ディスクイメージのサイズで限定され、容量が少ないなんて事もなく、フルに2TBを使っていた。

最近のディストリビューションは、swapパーティション切らないのね。

後、SoftEther VPN serverを使う上で、ネットワークでbridgeデバイスを使う必要がある。

今までのUbuntu 24.04LTSでの構築経験上、desktop版は正常に作成できず、server版だとうまくいくというのがあって、NetworkManagerベースは避けたかった。

で、Raspberry Pi4(以下RP4)にHDDを繋ぎ替えて起動すると、ルーターでRP4のMACアドレスに192.168.11.254を割り当てていたので、DHCPでIPアドレス設定はできたから、これもサクッとssh接続できた。

bridgeデバイスを作成する上で、Ubuntuのserver版だと、netplanのスクリプト書いて、netplan apply でサクッと作れていた。

しかし、NetworkManagerが生きてると、bridgeにeth0とtap_softetherの2つをぶら下げないといけないのに、eth0しか無いという状態にされる。

恐らく、NetworkManagerの不具合だと思われるが、bridgeに2つのslaveぶら下げてて、1つしか有効にならないなんて事例が無いw

netplanとNetworkManagerの統合を進めているらしいが、Raspberry Pi OSのベースのdebian 13では、よりNetworkManager寄りになっているようだ。

という事で、

無事に br0 デバイスができた 🙂

あと、やった事色々。

apt install fail2ban tcpdump apache2 telnet  default-jre-headless php php-xml php-curl php-mbstring samba smbclient certbot nslookup bind9-dnsutils python3-certbot-apache

a2ensite 000-default-le-ssl
a2enmod userdir
a2enmod rewrite
a2enmod ssl
a2enmod auth_digest
a2enconf auth_digest

そして、コピー元ディスク見ていて、メールサーバーの postfix がインストールされてて、設定もやってるんだけど、何でだったのかと暫く考える……

あー、SPFの設定で、silverfox.noizumi.orgを送信ホストとして登録したくなかったから、家のサーバーのメールもirc.noizumi.orgへ投げるようにしたんだっけ。

あと、zoneminderとかあるけど、家の玄関リフォームしたせいで監視カメラ撤去したし、その間にプロバイダ変更したから、監視カメラのWiFi設定変えないといけないし、面倒だから、後回しにして原神やろう 🙂

新しく買ったHDDケース

HDDケースぶっ壊れた。

家でRaspberry Pi4にUSBでHDD RAID1のケース(センチュリー 裸族の二世帯住宅 CRNS35EU3S6G)を接続して、ホームサーバーにしているが、認識しなくなった。

RAID1 は 2台のHDDで構成し、2台共同じ内容にして、1台が壊れても、新しいハードディスクと入れ替えてやれば、再び複製を開始して、継続して使用できるというコンセプトだ。

ところが、その母体となるHDD ケースが壊れたのでは、いくらデータの冗長性を確保していようが、全く意味がない。

まあ、8年使用したので、壊れても仕方がない気がするが、壊れやすいHDDが壊れていないのに、HDDケースの方が先に壊れるというのは、何とも納得しがたいものがあるのであった。 🙁

SSL証明書の期限切れ警告

Let’s encryptからSSL証明書期限切れの警告メールが来た。
家のサーバーのSSLの証明書は cron で自動的に更新するようになっているのだが、2月の初旬に切れるようだ。

サーバーにログインして調べてみると、名前が引けないので、bind9のdaemonをリスタート。

# systemctl restart bind9.service

そして、SSLの証明書更新。
# certbot renew

これで解決。相当長期間名前が引けない状態だったみたい。

最近、プロバイダのDNSでは、特定サイトの名前解決ができないとか、制限を掛けていたりするので、家のサーバーはDNSのルートサーバーから直接情報を得て無制限に使えるようにしてるんだな。

ホワイトガソリン

ベンジンの在庫が少なくなったので、今年の2月にホワイトガソリンをamazonで 2,574円で買っておいた。

500mlのベンジンは600〜800円くらいだが、このホワイトガソリンは、500mlあたり321.75円。

今日、ハクキンカイロに入れて使っているが、カイロ用のエビスベンヂンなどと使い勝手は変わらない。

今見たら、3,300円に値上がりしてたけど、それでも500mlあたり412.5円と安い。

4リットル缶のままだと、使い勝手が悪いので、エビスベンヂンの空き瓶に入れていて、ライター用にZIPPOオイルの空き缶にも入れてある。

非常用燃料として、ホワイトガソリン一本にしたいが、コンロが5千円くらいの中華の安物は★3以下と評価が低く、メーカーものは1万円以上とお高い。

ガスと違って、揮発させる為のプリヒーティングとか、結構面倒くさいのも難点。

まあ、当面はガスとホワイトガソリンの両建てでいきますか。

新車内ソーラーシステム発電状況

※注意 raspistill で撮った2592×1944ピクセルの超巨大画像(2.6MB)なので、モバイル回線でクリックしないように。

13.6V なので、車のバッテリー60Ahを充電しつつ、30,000mAhモバイルバッテリー充電と、携帯電話充電と、Raspberry Pi Zero 2 W+GPSモジュールが動かせてるな。

この画像はGIMPでシャープネス加工して見やすくしたものだけど、文字が細いから、高解像度にしないと読み取れないのが課題だな。