Raspberry Pi 4しばらく登板 (3)

Raspberry Pi 4 Model B RAM 4GBでまる4日ほど運用しました.定量的なデータは何もありませんが,LAN内のクライアント1からのアクセスでは,レスポンスがSlackware ARM 32bit時よりも少し改善された感じはしました.

ただし,写真のupload時の処理時間に大差はないです2

今回は,同じRaspberry Pi 4 Model Bですが,RAM 8GBのものに置き換えました.RAM 4GBだと定常的な運転状態でswap (ZRAM)が500MB前後になります3.8GB RAMではswapが実質的にゼロなので,差は出ると思います.

Redis Object Cacheの反応時間,最大のピークは90 ms

このRedis Object Cacheの反応時間のグラフの中央 (16:35) あたりの大きなピーク(90 ms)はハードウェア交換直後に複数のdaemonが起動したため反応時間が大きくなったと推測できます.このピークの前がRaspberry Pi 4 Model B RAM 4GB,後が同8GBです.反応時間の平均的な値は小さくなっているように見えます.

この状態でまたしばらく運用してからRaspberry Pi 5に戻します.

  1. M4 Mac mini, MacBook Air M4など. ↩︎
  2. Uploadした写真をWordPressのシステムがいくつかのサイズに作り直します.当然写真によりますがだいたい16秒前後処理時間がかかります. ↩︎
  3. ZRAMは1GBに設定しました. ↩︎

Raspberry Pi 4しばらく登板

Raspberry Pi 5 (RPi5)による新サーバーの運用もだいたい目鼻がつきました.ここでいったんRPi5からRaspberry Pi 4 Model B (RPi4)にサーバー担当を交代しました.

実はこれが一番やりたかったことで,これまで,32bit OSのSlackware ARM 15.0をRPi4で動かしてきましたが,同じハードで64bit OSだとどれくらいパフォーマンスが違うのか,ということです.

ChatGPTによればArmv8では,64bit OS/アプリと32bit OS/アプリでそれほどパフォーマンスに目だった差はないとのことです.

Slackwareの頃のWordPressプラグインRedis Object Cacheのグラフを取っておけばよかったのですが,探したらありませんでした😓

これが,先ほどWordPressをRPi5からRPi4に切り替えたRedis Object Cacheの反応のグラフです.

Redis Object Cacheの反応時間.最大のピークは60 ms

最初の大きなピーク(60 ms)あたりがRPi4の起動したタイミングです.その前はRPi5ですから,両者の性能の差が顕著に出ています.たぶん,RPi4をSlackwareARMで動かしてきたときもこんなもんだったと思います😓

今回の件についてはChatGPTの言うことは正しかったようです.残念です.

早速不正アクセス

昨日の夜9時頃でしたか,何気なくサーバーのコンソールからtopコマンドを実行してみると,上から下までapache2のプロセスが並びました.これは尋常ではないことが起きていると,/var/log/apache2/access.logを見てみると,ものすごい勢いで/wp-login.phpにアクセスがかけられています.間違いなく辞書を使ったbrute-forceアタックです.

その時はIPアドレスをプロバイダーのルーターに登録して止めましたが,次に記すセキュリティーアプリのインストール中に,5万件のアクセスだったことが解りました.

そういう訳で今朝はGeminiにDebianでiptablesを使ったブロックの仕方を教わっているうちに,WordPressのデフォルトのログインを止めるpluginのインストールと,Fail2Banというソフトのインストールを勧められました.

WordPressのpluginはWPS Hide Loginというもので,ログインのURL内のパスを任意の文字列に設定できます.そこで迷うことなくUUIDにしました.それでwp-login.phpを指定してきたアクセスは404 not foundになります.これはこれでめでたしめでたしです.

次のFail2Banは,ログを解析して,怪しいアクセスをしてきたところからのIPを無視するように設定するソフトです.設定が複雑なので,Geminiと相談しながらやってみました.その過程で昨夜のログを分析させたら5万件もの “不正アクセス” が検知できたわけです.これは,以前のRaspberry Pi 4 Model B (RPi4)ではそこまで行かなかったと思います.RPi4より体感や簡単な計測で4〜8倍速いRaspberry Pi 5 (RPi5)ならではの被害です.

sendmailもこれを使って防御しつつIPv4のポートも開こうかななどと少し考えています.

Tableのインポート完了

海外サイトで見つけたティーテーブルが素敵だから個人輸入しました.という話ではありません.WordPressの移植のための確認・作業をその後も進めている話です.

既にメインサイトのほうでは,投稿したページの本文,写真の移転に成功しています.ページ数が高々百数十なので,手で直すような作業もそれほど非現実的ではありません.

この作業で最大の問題は,WordPressの「インストール時のホスト名に執着する」特性です.既にホスト名は新サーバーに譲り,ローカルな名前を付けていると管理画面にログインすることさえできません.

そこで講じた策は,LANケーブルを外して孤立させて,ホスト名を昔の名前にすることです.具体的には/etc/HOSTNAME1/etc/hostsを編集します./etc/hostsについては,127.0.0.1::1の定義を古い名前に戻すだけです.このへんSlackwareはNetworkManager等が上書きしたりしないので楽です.

そして,GUIを立ち上げてWebブラウザーFalkonを立ち上げて作業します.これでメインサイトとBLOGの投稿記事やコメントをexportすることができました.

しかし写真はついてきません.写真についてはWordPressのディレクトリー内のwp-contents/uploads/にありますので,tarして持ち出してから新サイトで展開しました.この方法だとWordPressのライブラリーには表示されない2 のですが,古い記事内にはちゃんと表示されます.

これでだいたい終わったかと思いましたが,TablePressで作った表があります.ところが,管理画面のTablePressでExportタブを押しても,存在するはずの表が表示されません.どうもFalkonではダメなようです.念のためKonquerorで試しましたが,エンジンが同じなので全く同じ症状でした.

そこで作業をやめて考えながら風呂に入ったら思いつきました.旧サーバーであるRaspberry Pi 4 Model B(RPi4)とまともなWebブラウザーが使えるパソコンを直結すれば良いではないかと.

今朝実行しました.昔と違ってパソコン同士の直結にはクロスケーブルもHUBも不要で手持ちのUTPのケーブルで直結すれば良いのです.この作業はMacBook Air M4に前の名ばかりCore i7搭載MacBookで使用していたCableCreation製のドックをつないで行いました.

MacBook Air M4にCableCreationのドックをつなぎ,RPi4から来たLANケーブルを接続

RPi4側の設定は孤立させるときと同じです.

MacBook側の設定はWi-Fiを切り,有線LANポートにはIPアドレスを手動で与える設定にして,RPi4と同じサブネット内の適当なIPアドレスを与えます3.また,/etc/hostsに,

192.168.0.10  古いサーバーのホスト名 古いサーバーのFQDN

のように書き込む必要があります4.無事つながり,MacBookのFirefoxで旧サーバーの管理画面まで入れました.

そしてTablePressのExportを開くと正常に表示されますので全ての表を選んでExportしました.

Exportしたファイルを新しいサイトのWordPressのTablePressでインポートすることにより,文字コードの問題もなく全て読み込むことができました5

現状ですが,メインサイトの移転作業は終了しました.BLOGのほうは記事数が多い(たぶん数千ページ)ので,同様の作業を重要な作業の前にはバックアップをし,慎重に行っていく予定です.

  1. Slackwareではこれが自分のホスト名の定義ファイルです. ↩︎
  2. したがって管理できない. ↩︎
  3. RPi4が192.168.0.10なら,192.168.0.11など. ↩︎
  4. この行は作業が終わったらコメントアウトします. ↩︎
  5. 例えばこのページ↩︎

pcmanfm-pi

Raspberry Pi 5 (RPi5)のGUIはほぼ直りました.完璧ではないです😓

Geminiも勝手なことを言っていたようで,後から振り返ると違う方に導かれていました.

最終的には自力で回復しました.Rapsberry Pi 4 Model B (RPi4)が余っているので,そちらにRaspberry Pi Imagerで最新OSを書き込んだSDカードを差し込んで起動し,動いているプロセスやインストールされているソフト,設定等を比較しました.

その結果見えてきたのは,pcmanfm-piというプログラムかスクリプトが,lwrespawnによって繰り返し起動されますが落ちているようで,systemctl statusps aufxで確認するといつもsleep 1となっています1

それで,RPi5のほうで探してみると,pcmanfm-piなどというプログラムやスクリプトはありません.RPi4で見ると,/usr/bin/にインストールしてあるスクリプトで,pcmanfmを起動するためのラッパー2であることが判明しました.

apt-fileというユーティリティーをインストールして検索すると,rpd-commonというパッケージに含まれていると解ります.

そこで,apt install rpd-commonとすると,LX何とかで始まるGUIの重要なパッケージをいくつも削除してしまい,またGUIが起動しなくなりました.

どうもRaspberry Pi OS独自のパッケージが依存性にかなり重大な問題を起こしているように思います.

しかたがないので,rpd-commonは削除して,apt install raspberrypi-ui-modsでGUIを復活させました.この状態ではpcmanfm-piはありませんから,比較用のRPi4からコピーしました.

これでほぼ元通りです.残念ながらメニューの小さいアイコンなどが一部失われています.まあ,なんとかほぼ操作できるのでよしとします.

  1. つまり,1秒間待ってまた起動を試みる. ↩︎
  2. 引数や環境変数を与えて本プログラムを起動する. ↩︎