デコパレ6行ってきた

今回もお目当てはBOZ。
ローランドジャケットのグレーが出ていたのでそれが欲しいなー、実物みたいなーと思って行った感じ。
もちろんお迎えしました。 別の色を。。

グレーとホントに悩んだんだけども、どちらも試着してみて別色の方が似合うと思う。と言われてそのままお迎えした感じ。 確かにこの色は持ってない、着ている感じが本当に浮かばない。っていう色。

偶然、今日はOZZ にも行っていて、そこでも服を買っていたのだけれども、組み合わせるとうまく行きそうという雰囲気なので一回お迎えしちゃおうという勢いでやりました。
きれるようになるのは秋(今着たら熱中症になる)なので、そこまでに痩せないと…

Oracle Cloud の Always Freeインスタンスが半分になった件

https://docs.oracle.com/en-us/iaas/Content/FreeTier/freetier_topic-Always_Free_Resources.htm#freetier_topic_Always_Free_Resources_Infrastructure

ARMの A1.Flex が 4コア 24GB メモリ に相当する分まで無料だったのが、いきなり半分の2コア 12GB までに変更された。
なにより恐ろしいのは、この件は特にメールで通知等がなく、いきなり半分になった模様。
いつから適用なのかも不明。 有償アカウントになっている場合は、超えた分は課金します。
ということのようなので、いきなり結構な額の課金になる人が出そうな予感。

特に、Fedi界隈ではAlways Free枠で全部やるみたいな話が多いと思っていて、悲鳴が上がりそうだなぁという感じがする。

さて、仕方ないので半分に縮退をしたわけですが…
24GBのメモリがあることに甘えてだいぶ富豪的な設定になっていたので、12GBメモリになると厳しい。
とりあえず、Fastladderはオンプレに戻し、Growiは停止した。

Mastodonと周辺のものを動かした状態でメモリ8GBくらいは使用していて、毎朝のアップデート中はMastodon関連のPodが二重に起動する(サービスを継続しているPodと、新しいバージョンのPod)のである程度メモリを空けておく必要があり、コレ以上使うと危ないかなという値になっている。

Growiは復活させたいが、これをやるならx86 1core 1GB メモリのVMを立ててそこでやるしかなさそう。
(もともとそうなっていたが、Growiが armでも動いたので統合していた。1GBしかメモリがないVMをk3sのnodeにするのは無駄が多いよね…というのもあった)

なかなか悩ましい。

遠くのパン屋に行ってきた

Fastladder のコンテナのビルドが年単位で止まっていた。
(ここでいうコンテナは https://hub.docker.com/repository/docker/yakumosaki/fastladder を指す)

原因としては、OCI用に arm用にビルドしていた fastladder-aarch64 の方だけしか使ってなかったから…というより新しくしなくても困らなかった。 という感じ。

mastodon glitch edition の方は順調にビルドが成功するように直したし、Multiarch化もしたが、同じことをFastladderにも適用した。
※ mastodonは公式コンテナイメージがあるので、そっちを使ったほうがいい。

あとは、JenkinsのジョブでCIを回せるようにすればOK。 アップデートの適用はちょっとどうやるか悩むが…
(Mastodonはk8sで動くので苦労しない)
もう少し、調整をしてビルドが余計に動いたり、動かなかったりしないようにはしたい

遠くのパン屋に行ってきた

最近、パン屋巡りにハマっている。
城の近所には、パン屋が5,6件あって(ただし徒歩30分圏内)割とそれぞれで特徴が違う。

なので、最近パン屋を巡って朝ごはん用のパンを買うということを続けている。
今日は徒歩20分くらいのところまで歩いてパンを買ってきた。
ちょっと行くのが遅かったせいでほとんど売り切れていた(15時くらいだった)けれども、なんか昔懐かしというかある意味ちょっと古い感じのパン屋さんだった。
(チョココロネとか、メロンパンとかが強いみたいな)

いくつか残っていたパンを買ってみたけど、甘くて美味しい、店員さんもいい人だったしすごくよかった。
また行く。

NASをどうにかしたいの巻

城のNASサーバーは、未だに Microserver Gen8を使っている。
とはいえ、CPUを換装したりして処理性能的にはそんなに不満はないのだが…

しかし、中古で入手したときから筐体がサビていたり、さすがに IvyBridgeなのはどうなのよとか
色々と問題が出てきている。とはいえ、今はPCを買うには大変時期が悪い。
とはいえ、もうこの問題は数年放置していていい加減どうにかしないとなぁと思っている。

奮発して、Minisforumの強いやつ(Ryzen AI 積んでます)みたいなのを買うのが一番良いのだが、
さすがにNASサーバーにそこまでのお金は出したくない。

ということで、自作でなんとかしよう。みたいな感じになるのだが、これがまた選択肢が難しい。
まず、NASケース自体がすごい高い。よく使われる Jonsbo N2とかN3 は大体2.5万円くらい。
よく使うN100のマザーも2万円、メモリも2万円(で済むのか?) みたいな状況。

ということで、ずっとヤフオクとかを眺めていたらいいことに気がついた。
Club One Systems NWS-2T100ES というサーバーがある。
このサーバーは、 ATX電源が使えて、HDDが4台のエンクロージャーがついている、mini-itx マザーが使える。
そしてこのサーバーは中古で1万円ちょっとで買える。
(そして、Skylake世代なのでそのまま使えばいいじゃん。という説はある)

今回はたまたまこのサーバーのジャンク品(CPU、メモリなし)が安く手に入ったのでコレを使う。
電源ユニットも250wのものがついているので、一旦これでいい。 送料込み 4300円

あとは、マザーとCPUがあれば1台でっち上げられる。
(メモリは、SODIMM DDR4 が16GB分あるのでこれを使う)
そして、なぜか、B250 マザーに Core i3 9100 が乗っているというセットが出品されていたのでこれを購入した。
7300円。

よく考えると、B250マザーは 6,7世代なので、9100が乗っているのは大変不思議なのだが、動作動画まで貼ってあったのでなにかのマジックで動くのだろう(ソケットは同じだし)
※ あとで調べたら、 1xx、2xxのチップセットで 8,9世代Coreを動かすというハックがあるらしい。おそらくそれが適用されているのだろう。 一応同じLGA1151なので(3xxのマザーは電源関係が強化されているとかなんとか)
物理的には刺さるが、何やらブロックしているとかなんとか… なのでそこをバイパスすれば動いちゃうみたいな話の模様。

あ、あとSODIMM→DIMM変換基盤を2枚買っているので 1723円。
合計すると 13,323 円。 これくらいならまぁ… というところ。

メールサーバー変更

さくらのレンタルサーバーから、purelymail.com に移転した。
決め手になったのは、 AWSの勉強をしようと思って、AWS Organizationを作って、アカウントを分離しようとしたら、アカウントごとにユニークなメールアドレスが必要だったこと。

調べてみてわかったけれども、 name+alias@example.com みたいなアドレスを plus addressing / subaddressing と呼ぶらしい。 ところによっては dynamic alias とも言う模様。

検討したのは、 Migadu と Purelymail。 Fastmailだと信頼性あっていいなと思ったものの、値段がちょっといい感じなのでパスしてPurelymailにした。
Migaduの方がそれっぽいのだけれども、 メール受信100通/day だと万が一SPAMで超えちゃった場合が不安なのが決め手だった。

Webmailが普通にRoundcubeだったりしてなんともはやだけど、機能的には十分なので一旦様子見な感じ。

ついでに、 Freshping から Cronitor への移行も始めた。

zigbee2mqttで遊ぶ その5

お風呂時間をGoogle Calendarに保存することにした。
これは、Rescue Time というアプリケーションがやってるのを真似した。

そして、Mastodonへの投稿も復活させた。
あとは、Slackへの投稿だけではあるけれども、これはちょっとまだできていない
何にしても、あとはしばらく運用してみて不具合を潰したいなと思っている

zigbee2mqttで遊ぶ その4

ボタンをセットアップしたので、ChatGPTの力を借りながら、お風呂るボタンを復活させていく。
とりあえず処理全体をどうするかだが、Node-RED上ではJavascriptが動くのでここですべてを完了させることも
できなくは無さそう。 とはいえ、既存のスクリプトとかが色々とあるので、それは流用したい。

ということで今回の構成はこうした。
Node-RED上のfunctionで、ボタン→お風呂入った、出た というイベントに変換する。

別に用意してある、Jenkins上に General Webhook Plugin を入れる。
(別に入れなくても良いのだが、パラメタの処理が楽だったので入れた)
これで、 JENKINS_URL/general-webhook-plugin/invoke?token=任意のトークン
にPOSTすることで、Jenkinsジョブを起動することができる。
ついでに、リクエストボディにJSONを投げ込めば、それをこのプラグインの設定で、JSONPathを指定して環境変数に取り込んでくれる。
例えば、 BATH_EVENT = $.event とか書いておけば良い。

とりあえず、今日はWebhookでジョブが起動すること、パラメタが渡せていることまでは確認できた。

zigbee2mqttで遊ぶ その3

SNZB-01Pが届いた。
これは… Aqaraのスイッチを選ぶ必要が全くない。 個人的には完全にSonoffの方が上位互換である。
一番気に入ったのは、金属のプレートが同梱されていること。
これを、壁に貼り付けておけば、本体の裏に結構強力な磁石がついているため金属プレートにくっつくこと。

ボタンのサイズ自体はあまり変わらないし、ペアリング時の変なクセもなく素直。
敷いて言えば、電池部を開けるときに、スマホのSIMを開けるときのようなピンが必要なことくらいか。
といっても、ピン自体も付属しているので全く問題ない。
個人的には100点と言いたい感じ。

zigbee2mqttで遊ぶ その2

Zigbee2MQTT と mosquitto と node-red をセットアップしてとりあえずボタンを押したら何かを動かすことができるようにはなった。

さて、肝心のお風呂る機能を作るぞ…の前に、ボタン設置してこようと思ったら…
床に落とした。
そして、壊れた。。 ボタンが引っかかって押せなくなった。
なんてこったい。。

ChatGPTに相談してみたら、Aqaraのスイッチは小さい代わりに弱いです。
頑丈さならSonoff SNZB-01P を選んでください。だって・・・
それを早く言ってくれ。

そして、Sonoffのボタンはどうもあまり出回ってないようで… しばらく進展しなそう。

zigbee2mqttで遊ぶ

昔、Amazon Dashボタンでお風呂時間をログしていた。
しかし、DashボタンはAmazonに殺されてしまい、今ではもうただの不燃ごみ。

では…と、AWS IoT ボタンに乗り換えたが、これもまたサービス終了。

しばらく放置していたが、なんとなくまたログを取りたいなと思って考えてみた。
…考えてみたといってもChatGPTに相談しただけなんだけども。

Dashボタンの頃と同じことをするなら、Zigbeeボタンを使えばいいらしい。
Zigbeeでの通信は、USBドングルを使えば良く、Zigbeeボタンは Aqara のボタンを揃えろ。とのこと。
ソフトウェア的には zigbee2mqtt というブリッジソフトウェアがあるので、これを使えば構築できる。
なるほど。

Sonoff Dongle-P USBドングルとAqaraのボタンで5000円強。
届いたとき、Aqaraのボタンの電池の金具が変形していて明らかにおかしくなっていたので、手で直した。
(CR2032電池の上に来るべき金具が、下に行ってしまっていた。そのせいで蓋がやたら硬かった)

最初は、Raspberry Pi Zero W が余っているのでこれでやろうと思ったが、セットアップしてみると遅い…
さすがにこれは厳しい。何より、armhf は docker も node.js もサポート外という感じなのが辛い。
これでは構築してもいまいちなので、普通にx86のサーバー上で構築した。

zigbeeの機器は、それぞれがメッシュネットワークを構築して、パケットの中継みたいなことをするらしいので
理屈上は距離が届くのではないかという期待を込めている。
(お風呂場の前にRPiでも置きたくないし…湿度すごいので)

ハマりどころとしては、なかなかペアリングがうまく行かなかった。
エラーメッセージを貼ってみると、ChatGPT曰く

① ペアリング手順(重要)

手順

  1. Zigbee2MQTTで Permit join ON
  2. ボタンのリセット穴(ピン)を長押し 5秒以上
  3. LEDが点滅したらすぐ離す
  4. その後 2〜3回 短押し(これ重要)

👉 この「短押し追撃」で安定して join します

だそうで。 怪しいなと思いながら試したら、本当にjoinした。 短押し追撃をしないとjoinが失敗する。
ChatGPTすげーな・・・

Joinが成功すると、MQTTにイベントが流れ出すのであとはそれをListenして好きに処理すればいいだけ。
多分 n8n とかを通して楽する感じになるかなと。
(相談してみたら、 node-red のがいいよと言われて結局従った)

Thinkpad X13 Gen2 が起動しなくなった

再起動したら、Boot menuに入ってしまい、どの項目を選んでも起動しなくなった。
BIOSセットアップに入ろうと思ったら、またBoot menuが表示され、 System Deployment Modeと表示された。

これは、おそらくUEFIに内蔵されたMSの証明書の有効期限が切れたので、UEFIセットアップすら起動しなくなったに違いない。

このPCは、ずっとLinuxで使っているので、証明書の更新はされていないはず。

…ということで、NVMe SSDを入れ替えて、Windows 11をセットアップし、Windows Updateをすべて更新した。ライセンスはBIOSに書いてあるタイプなので助かった。 まあ、アクティベーションが必要になるまでの間にWindows Updateだけなら終わるだろうけど。
Windows Updateの中に、Lenovo Firmware というのがあったのでコレがおそらく問題のかなと。

Windows Updateをあてて、再起動してみると BIOSセットアップにも入れるようになっていた。
で、SSDを元に戻して、念のためBIOSセットアップに入って Save and Exit したら、何事もなかったかのようにLinuxが起動してきた。

PCの寿命に対して証明書の寿命が足りないというか、証明書の更新プロセスがWindows Onlyなのはひどいというか…

JenkinsサーバーをDocker化した

めちゃくちゃ大変だった。
大変だったのは主に以下

依存パッケージの洗い出し

ホストに適当にパッケージを入れて運用していたので、それを洗い出すのが大変だった。
ジョブを実行してはコケ、パッケージを入れて… という感じ。
途中からは docker exec -it -u root container bash とやって、パッケージ追加してOKかどうかを見てから次に進む。ということをした。
ついでに、言語処理系はすべてmiseに寄せることにした。

avahi

avahi のsocketとD-BUSをコンテナにbindして、avahi-utils 入れて nsswitch.conf を書き換えれば mDNSをコンテナでも解決できる

SSH トンネル

ControlMaster と、 initがなくてゾンビが回収されなかった問題、 BUILD_ID=dontKillMe 問題

python

venv を使って書いていたが、なんか妙なディレクトリができたり、 bin/activate が実行できないとか言われたりで微妙だったので、全面的に uv に移行した。

ChatGPT契約した

個人で ChatGPT の有料プランに入ってみることにした。

なんか、自分のコーチとして使えそうな気がしたので…
ただ、今のところ、写真の加工とかをやってもらってる。 これだけでもだいぶすごい。とてもいい

AIすごいなと思った

実は会社でClaudeのアカウントをもらっていたことが判明し、早速使ってみた。

これは、なかなかいい。
それ以前にも、AIがあることを前提に仕事のやり方を考えないといけないよね。という話もあって、色々と変わっていかないと行けないんだろうなぁと思った。