ホーム » コンピュータ » Linux (ページ 3)

Linux」カテゴリーアーカイブ

システム

最近の投稿

アーカイブ

カテゴリー

アクセス解析 GoAccess の導入

webalizer, awstats などのWebサーバのアクセス解析ツールを使っていたけど、Gemini にお薦めを聞いたら GoAccess を紹介される。単純に動かすだけだと、access.log だけになる(我が家では1日づつのlogrotate)ので、月別にログをまとめるように設定ファイルを作成し、月別ログを切り換える機能を追加してみた。

homeassistant を watchtower で更新

先日 DHCP の設定で、Docker 環境が DHCPREQUEST を出しているかもとの勘違いで、HomeAssistant をアンインストールしていたけど、改めて HomeAssistant を運用再開。

HomeAssistant の運用再開(HTTPSに変更)

HomeAssistant のイメージダウンロードして、設定を最初から…と思ったけど、前回インストールしてあったものが残ってて、一発で環境が復活。

でも、homeassistant の更新方法を確認すると、docker image をダウンロード, stop, remove ,新しいイメージを run させるとかの手順が出てきて面倒。Gemini に聞いたら、Watchtower を勧めてくれた。

また、HomeAssistant を https で起動するように設定を見直す。

$ sudo docker stop homeassistant
$ sudo docker rm homeassistant
$ sudo docker run -d \
    --name homeassistant \
    --privileged \
    --restart=unless-stopped \
    -v /var/lib/homeassistant:/config \
    -v 証明書へのPATH:/certs:ro \
    --network=host \
    ghcr.io/home-assistant/home-assistant:stable
$ sudo /var/lib/homeassistant/configuration.yaml # 以下を追記
http:
  ssl_certificate: /certs/fullchain.pem
  ssl_key: /certs/privkey.pem
$ sudo docker restart homeassistant

Watchtower で HomeAssistant の更新

HomeAssistant を自動更新させる Watchtower をインストールする手順は、Gemini に出てきた設定方法をそのまま実行。

$ sudo docker run -d \
  --name watchtower \
  --restart=unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower --interval 86400 homeassistant

$ sudo docker ps
CONTAINER ID IMAGE                                        COMMAND                  CREATED     STATUS                         PORTS    NAMES
e94a5eea7468 containrrr/watchtower                        "/watchtower --inter…" 4 seconds ago Up 1 second (health: starting) 8080/tcp watchtower
94c7a25097d4 ghcr.io/home-assistant/home-assistant:stable "/init"                6 minutes ago Up 6 minutes                            homeassistant

でも、現状のバージョンが 2025.9 だったので、最新の 2025.12 に早々に上げたいので、確認したら、以下のように、 –run-once を指定して実行すればいいらしい。

$ sudo docker run --rm \
        -v /var/run/docker.sock:/var/run/docker.sock \
        containrrr/watchtower \
        --run-once \
        homeassistant

エラーが出たので、Gemini の協力もあり、バージョン指定で更新。

$ sudo docker run --rm \
        -v /var/run/docker.sock:/var/run/docker.sock \
        -e DOCKER_API_VERSION=1.44 \
        containrrr/watchtower \
        --run-once \
        homeassistant

無事に、2025.12.5 に更新ができた。

んん? –run-once で更新ができるのなら、watchtower を起動させっぱなしなのは、プロセス資源がもったいない。/etc/cron.monthly で “docker run … watchtower –run-once …” を実行した方がいいじゃん。docker stop/rm watchtower して cron 管理に移行させた。

Docker管理の Portainer のインストール

Docker 絡みで Gemini にお勧めを聞いたら、Docker を Web の GUI で管理ができる Portainer をすすめられた。
ということで、おすすめ設定を実行。

https 通信を使うので、オレオレ証明書のエラー画面で継続をすると、自宅サーバのアクセスで信用できない通信が表示されるようになる。そこで自宅サーバの証明書を使うように設定を追加。(Gemini に聞くと証明書の設定方法を提案してくれる。便利。)

((( 設定データ保存用のボリューム作成 )))
$ sudo docker volume create portainer_data

((( Portainer コンテナの起動 )))
$ sudo docker run -d \
        -p 8000:8000 \ # Edge Agent通信用の HTTPポートの割り当て
        -p 9443:9443 \ # HTTPSポートの割り当て
        --name portainer \
        --restart=always \
        -v /var/run/docker.sock:/var/run/docker.sock \
        -v portainer_data:/data \
        -v 証明書へのPATH:/certs \
        portainer/portainer-ce:latest \
        --sslcert /certs/fullchain.pem \
        --sslkey  /certs/privkey.pem

Homebridge を https に変更

Dockerの https の設定がうまくできたし、Homebridge も https で使えないか確認。ただし、homebridge は user=homebridge で起動しているので、アクセス権を与えないと、秘密鍵が読めない。かといって 証明書のアクセス権をユルユルにするのも避けたいので、Geminiに設定を提案してもらうと ACL でアクセス権を与える方法を示してくれた。(Linux での ACL の使い方、参考になる。Geminiに感謝。)

((( ACL で 読み込み権限を与える )))
$ sudo setfacl -m u:homebridge:r 証明書へのPATH/fullchain.pem
$ sudo setfacl -m u:homebridge:r 証明書へのPATH/privkey.pem

((( /var/lib/homebridge/config.json )))
"platforms": [
    {                                                                                                       "name": "Config",
        "port": 8581,
        "lang": "ja",
        "theme": "purple",
        "menuMode": "default",
        "lightingMode": "light",                                                                            "sessionTimeout": 100000,
        "platform": "config",
        "ssl": {
            "cert": "証明書へのPATH/fullchain.pem",
            "key": "証明書へのPATH/privkey.pem"
        }
    },

((( homebridge 再起動 )))
$ sudo systemctl restart homebridge

ということで、homebridge, HomeAssistant, DockerのPortainer などの Web サービスを https 化することができ、ブラウザの「保護されていない通信」の表示を消すことができた。

arpalertをarpwatchに変更

不審なネットワーク接続を見つけるために、arpalert を使っていたけど、新しい端末を登録するときに警告メールが飛んでこない。サーバを切り替え ubuntu に変更となって、何も考えずに arpalert をインストールしてあったけど、細かい点の動作確認をしていなかった。

調べると arpalert は最近メンテナンスされていないらしい。systemctl status arpalert すると、/etc/init.d/arpalert の sysv 形式で起動している。古い証拠なので切り替え。

最近は arpwatch を進められたので、arpwatch に切り替え。

arpwatch の設定

設定は、設定対象のインタフェース名(自宅の場合 enp2s0)をしらべ、以下で起動

$ sudo apt install arpwatch

$ sudo vi /etc/arpwatch/enp2s0.iface
IFACE_ARGS="-m root@tsaitoh.net"     # 警告メールの送り先
PCAP_FILTER="net 192.168.11.0/24"    # 監視対象を制限

$ sudo systemctl enable arpwatch@enp2s0
$ sudo systemctl start arpwatch@enp2s0

$ sudo apt remove arpalert

Ubuntu 25.10 へのアップグレード

Ubuntu 25.10 も公開されたので、do-release-upgrade を実行。X.org が使えなくなり Wayland だけになるとのことであったが、ssh x-forward で使うのがほとんどだし影響も少ないだろうと更新を行ってみた。

dovecot が動かない

最初のトラブルは、dovecot 。設定ファイルの変更が原因。dovecot って、設定ファイルの基本的な書式で動かなくなることが多い。

メールボックスを Maildir 形式 に変更と、SSL の設定ファイルを変更

((( /etc/dovecot/conf.d/10-mail.conf )))
#mail_driver = mbox
#mail_home = /home/%{user|username}
#mail_path = %{home}/mail
#mail_inbox_path = /var/mail/%{user}
mail_driver = maildir
mail_path = ~/Maildir
## mail_inbox_path = ~/Maildir/.INBOX -- 設定ミス(自宅サーバでは.INBOXはナシ)
mail_inbox_path = ~/Maildir

((( /etc/dovecot/conf.d/10-ssl.conf )))
# Preferred permissions: root:root 0444
ssl_server_cert_file = /var/lib/dehydrated/certs/tsaitoh.net/fullchain.pem
# Preferred permissions: root:root 0400
ssl_server_key_file = /var/lib/dehydrated/certs/tsaitoh.net/privkey.pem

sudo-rs で CIDR記法が使えない

Ubuntu 25.10 での大きな特徴では、sudo が Rust で書かれた sudo-rs に移行したことらしい。んで、Host_Alias で の文法やセキュリティが厳格になったようだ。

Host_Alias LOCAL = 127.0.0.1 , 192.168.11.0/24

といった書き方で記載してあったが、コンマ空白区切りが、厳密にコンマか空白で区切るようになり ” , ” のような前後空白コンマなどがエラーになる。また、自宅内ネットワークからという意味で、CIDR 記法を使っていたが、Host_Alias では CIDR 記法が使えなくなった。自宅ネットワークなら OK といった雑な指定はセキュリティ的にまずいということらしく、CIDR 記法が使える部分に制限が加わった様子。今回は、localhost だけに変更しておいた。

LEDバッジが動かない(11/16追記)

自宅でスケジュール表示などに活用していた LED バッジが動かなくなった。

Perl で書いてあるし、今までの OS のアップグレードでは、ほぼ問題なく移行できていたのに…

Kernel が Linux 6.14.x から 6.17 に更新された影響かと思い grub メニューで 6.14 で起動したけど改善せず。Kernel が原因ではないのかな。

Raspberry-Pi で再起動後に vcgencmd のエラー

Debian/GNU/Linux bullseye で運用している Raspberry-Pi が 再起動後に vcgencmd がエラーをだす。通常 vcgencmd を実行するには、/dev/vcio のアクセスが root にしか許可されていない。そこで root 以外が使えるようにするには video グループで読み込みできるようにすればいいけど、再起動すると設定が消えてしまう。

このために udev のルールを作成して、起動時にアクセス権を変更させる。

$ sudo vi /etc/udev/rules.d/99-vcio.rules
KERNEL=="vcio", GROUP="video", MODE="0660"

$ sudo udevadm control --reload-rules # 新しいルールを読み込み
$ sudo udevadm trigger # ルールを即時摘要

nextr 2G を活用するには

nextr 2G を活かせていない

我が家のネットワーク契約は、こしの都ネットワーク(丹南ケーブル) nextr 2G の契約だけど、自宅の端末の管理をきめ細かくしたいので nextr 2G のルータ(G-240W-B GPON) の配下に Buffalo のルータを設置。すべてのネットワーク機器は Buffalo ルータ配下に設置している。このためすべてのトラヒックは、Buffalo ルータ経由となり、ルータの WAN 側は 1G bps なので、2Gbps の最大性能の半分しか使っていない。

改善前の性能

自宅サーバで動かしたブラウザと、Windows で動かしたブラウザで、それぞれを別タイミングで動かすと以下の性能で 1Gbps に近い性能が出る。

しかし、サーバのブラウザとWindowsのブラウザで同時に計測すると、全部が Buffalo のWAN側を通るので、1Gbps の性能になってしまう。(speedtest のリロードボタンの同時押しがなかなかできないので、微妙にタイミングがずれるので500Mbpsを若干越えてるけど)

nextr 2G で WiFi と2つのLANポートに分散

そこで、nextr 2G のルータで活用していなかった WiFi と 2つのLANポート(各1Gbps)で分散を目指した。

nextr 2Gの WiFi は、CATVSTB の インターネット側を 設定。また、自宅サーバに USB 接続の 1Gbps の有線LANを追加し、未使用だった nextr 2G ルータの2つ目の LAN ポートに接続。

これで、サーバのトラヒック(max 1Gbps)と端末のトラヒック(max 1Gbps)に分散して 2Gbps を目指した。

この結果、サーバと端末で同時に speedtest を起動しても 1Gbps に近い性能がでるようになった。

とはいっても、ブラウザで動画を家族それぞれが見たとしても、3人で 100Mbps のトラヒックでさえも出ないけど。

外から自宅サーバが見えない

分散はできるようになったものの、自宅サーバ宛てのメールが届かない。確認したら、Web サーバも外から見えない。外から、Buffalo ルータ経由でアクセスできると思ってたけど。抜き差しする可能性のある USB 有線LANだし、できればnextr 2G ルータの DMZ 設定変更したくないんだけど。もう少し、設定チューニング必要だな。ひとまず USB 有線 LANを抜いておく。

原因としては、パケットが出る際の経路(サーバ⇒nextr 2Gルータ⇒インターネット)、パケットが入る際の経路(インターネット⇒nextr 2Gルータ⇒Buffaloルータ⇒サーバ)の不一致のせい。Gemini に対応案を提案してもらうと、3つの対策を提案してくれた。

  1. ルータのインターネット接続を Buffalo ルータ経由にする案を提案してくれるが、これじゃトラヒック分散にならない。
  2. nextr 2Gルータの DMZ の宛先を直接サーバ: 抜き差しする可能性のある 有線LAN だしなぁ。
  3. PBR(ポリシーベースルーティング)を提案してくれるが、設定は複雑化するとな。

FTTHルータの流量モニタ

以前より、丹南ケーブルへの接続用の FTTH ルータ G-240W-B GPON の munin 用の流量モニタを運用していたけど、WiFi の流量のモニタ機能を追加。これにあわせて、Packet 量でのモニタリングを Byte をモニタするように切り替えた。前も Byte 運用失敗してたけど、再チャレンジ。

でも、運用最初はそれなりに正しそうなグラフなんだけど、数時間動かすと GPON の WiFi を使っているのに流量が表示されなくなる。munin の プラグイン の使い方として、Byte だと通信量のカウンタのオーバーフローしているのかと、色々触ってみるが、改善せず。やむなく パケット単位でのモニタリングに戻す。なんでかなぁ…

光回線ルータの WiFi を稼働させる

自宅ネットワークは、丹南ケーブルの光2G 回線。光のルータの LAN ポートは 1Gbps 回線。自宅ネットワークは、IPアドレス管理をきめ細かく扱っているため、光ルータでは DHCP を切ることができず、家の中で広く WiFi を使えるようにするため、メッシュ機能のルータを設置してあり、若干効率が悪いものの2段ルータ構成となっている。メッシュのルータは WAN側が 1Gbps であり、光2Gbps を有効利用できていない。とはいえ、WiFiの電波の取り合いを避けるため 光ルータの WiFi は切っていたけど、今回 光2G を少しでも有効活用を考えた。

ということで、自宅の動画視聴に活用されている CATB-STB の動画視聴のネットワークを 光2Gルータに WiFi で接続できるように設定。

上記のネットワークモニタの画面の 赤部分が 光ルータの WiFi 回線。つまり赤が自宅TVで、Netflix や YouTube を見ていたトラヒック。水色はメッシュ WiFi ルータのトラヒック。

エアコンをスライドバーで操作

エアコンの温度設定を赤外線リモコン制御できるようにしておいたけど、リモコンのボタンに割り当てていると、設定できる温度の幅に限界。ということで、スライドバーで温度設定できるようにしてみた。

DNSセカンダリサーバを動かす

UPSの移行などの際に、自宅内ネットワークが止まってしまう問題もあり、raspberry-pi サーバ上にセカンダリDNSを設定してみた。

$ sudo apt install bind9 bind9utils
((( /etc/bind/named.conf.options )))
acl     internal-network {
        192.168.11.0/24;
};
options {
        directory "/var/cache/bind";
        forwarders {
                192.168.11.<プライマリ>;   // internal DNS
        };
        allow-query  { any; };
        recursion    yes ;
        dnssec-validation auto;
        listen-on    { any; };
        listen-on-v6 { none; };
};

((( /etc/bind/named.conf.local )))
zone "<自宅ドメイン>" {
        type slave ;
        file    "db.<自宅ドメイン>.slave";
        masters {
                192.168.11.<プライマリ>;
        };
};

DHCPサーバ側では、出来上がった セカンダリ情報を流すように追加設定。

option domain-name-servers  192.168.11.<プライマリ>, 192.168.11.<セカンダリ>;

UPSのバッテリー寿命・要交換

UPSの警告が出てると思ったら、だめだこりゃ。

apcupsd で監視してるし apcaccess で確認すると、交換から4年半、バッテリー寿命は長くて5年とな。だめだこりゃ。

LINEV    : 103.0 Volts
LOADPCT  : 13.0 Percent
BCHARGE  : 36.0 Percent
TIMELEFT : 11.4 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
LASTXFER : Automatic or explicit self test
XONBATT  : 2025-10-02 09:58:00 +0900
STATFLAG : 0x05000008
BATTDATE : 2021-01-23

交換用バッテリーを発注したけど 7000円 ほど。でも、自分の過去記事みたら、半額のバッテリ買ってる。ということで、発注キャンセル&再度 Amazon で検索し、互換バッテリ LONG 12V9Ah を見つけて発注しなおし。自己満足の BLOG だけど、こういう時に役立つ。

(追記 2025-10-12)

UPSとしては機能しないけど、テーブルタップ状態で使えるかと思ってたけど、今朝ピーピー音がして給電が止まってサーバーダウン。我が家はサーバ周りが死ぬと便利な機能が全滅。ということで普通のテーブルタップに差し替えして復帰。

UPS のボタンには、テレビの下をこそこそ歩く猫対策として、ボタンを踏めないように透明なカバーを張り付けておいた。

Google 検索

My Google   Yahoo

Microsoft

ファンサイト

メタ情報