カテゴリー: 計算機

  • ProxMox VE の状態をメールで通知する

    OpenMediaVault の状態をメールで通知するには、メニュー System > Scheduled Tasks を利用してシェルスクリプトを実行、という方法があります。シェルスクリプトの標準出力が cron のおかげでメール送信される、という仕掛けです。

    これを真似て ProxMox Virtual Environment (PVE) の状態を通知させてみました。

    PVE ではローカルの root ユーザーへメールを送ると、通知ターゲット(Notification Target) で指定した SMTP サーバーを経由して、そのメールを転送できます。

    Notifications – Proxmox VE
    https://pve.proxmox.com/pve-docs/chapter-notifications.html

    あらすじ
    1. 「ユーザー」を作って、宛先メールアドレスを指定します。
    2. 「通知ターゲット」を作って、SMTPサーバーと、作った「ユーザー」を指定します。
    3. 「通知 Matcher」の設定を変更して、作った「通知ターゲット」を指定します。
    4. 状態をテキスト出力するシェルスクリプトを作ります。
    5. root の crontab を編集して、作ったシェルスクリプトを定期的に実行させます。
    ユーザー(宛先メールアドレス指定)を作る

    データセンター > アクセス権限 > ユーザ

    通知ターゲット(SMTPサーバー指定)を作る

    データセンター > 通知 > 通知ターゲット

    通知 Matcher の設定変更

    データセンター > 通知 > 通知 Matcher

    既定の「default-matcher」のタブ「通知するターゲット」で、既定の mail-to-root のチェックを外し、作った通知ターゲットにチェックを入れます。

    シェルスクリプトを作る
    #!/bin/bash
    (
    	echo "<date>$(date)</date>";
    	echo "<uptime>$(uptime)</uptime>";
    	echo;	#------------------------
    	echo "<free>";
    	free;
    	echo "</free>";
    	echo;	#------------------------
    	echo "<lsblk -fipr>";
    	lsblk -fipr | grep "\s\S";	# a space followed by a non-space
    	echo "</lsblk>";
    	echo;	#------------------------
    IFNAME=vmbr0
    	echo "<ip address show $IFNAME>";
    	ip address show $IFNAME;
    	echo "</ip>";
    	echo;	#------------------------
    IFNAME=enp2s0
    	echo "<ethtool $IFNAME>";
    	/usr/sbin/ethtool $IFNAME | grep 'Speed\|Duplex';
    	echo "</ethtool>";
    	echo;
    	echo "<ip -statistics link show $IFNAME>";
    	ip -s link show $IFNAME;
    	echo "</ip>";
    	echo;	#------------------------
    	echo "<ss --tcp --all (!TIME-WAIT)>";
    	ss -t -a | grep -v "^TIME-WAIT";
    	echo "</ss>";
    	echo;	#------------------------
    	echo "<ss --udp --all>";
    	ss -u -a;
    	echo "</ss>";
    	echo;	#------------------------
    )
    crontab に登録する

    crontab で1日1回実行させます。

    11 23 * * *     sh /home/work/pve-status.sh

    おしまい。

  • ProxMox Virtual Environment

    VMware さんが Broadcom さんに買収された結果、諸々の環境が様変わりしましたので、一念発起して ProxMox仮想サーバーへ移行しました。ついでに物理ホストも、Core i5-8400 (6C/6T)のデスクトップ(IdeaCentre 510S)から、Ryzen 5 6600H (6C/12T)の小型 PC(GMKtec NUCbox M6)へリプレース。

    メモリは変わらず16GB ですが、電気代は下がったかも(未確認)。ゲストは OpenMediaVault と BOINC と、年賀状と年末調整と音楽 CD の取り込みに使っている Windows です。

    今のところ大きなトラブルなく動いてくれてます。ちょっと引っかかっているのは OpenMediaVault 用の2TB ストレージ(SATA HDD)が 1.92TB の PCIe M.2 SSD になったこと。寿命は大丈夫かなぁ・・・

  • ESXi 8.0 Update 1c

    久しぶりに ESXi のリリースノート(Web)を見たら、最新バージョン8.0 Update 1c が公開されていました。いつもの如く、バンドルをダウンロードして適用しました。

  • ELB背後のHTTPリダイレクトのループ回避

    もう3月も半ば。兄猫みゃおの一周忌も過ぎて、桜もちらほら。早過ぎます〜

    さて、ちょっと気になっていたことがあって、検索でヒットしたページにアンカーを打っておきます(リンクを貼る、やね)。

    ELB で http から https に 301 リダイレクトするとリダイレクトループになる場合の対処法 | Psychoco Laboratory
    https://psychoco.net/misc/redirect-http-https-elb

    Elastic Load Balancing を使用して HTTP トラフィックを HTTPS にリダイレクトする | AWS re:Post
    https://repost.aws/ja/knowledge-center/redirect-http-https-elb

    システム構成としては、ELB (Application Load Balancer) が HTTPS を終端した後、443/https と80/http のどちらも EC2サーバーへ繋いでくれます。ここで HTTP を HTTPS にリダイレクトしたいんですが、それをサーバー側でやる場合(ELB の設定でもできるそうです)。

    このときサーバーはどちらも80/http で受けるので、常にリダイレクトすると無限ループになります。そこで「元々 ELB に届いた時に HTTPS だったか」判定する必要があって、そのとき使えるのが HTTP リクエストヘッダーの X-Forwarded-Proto です。

    HTTP headers and Application Load Balancers – Elastic Load Balancing
    https://docs.aws.amazon.com/elasticloadbalancing/latest/application/x-forwarded-headers.html

  • ESXi 7.0 Update 3e

    火曜日に ESXi 7.0 Update 3e が公開されていました。さっそくバンドルをダウンロードして更新しました。

    ESXi 7.0 Update 3e installed.
  • ESXi 7.0 Update 3d

    3月末に ESXi 7.0 Update 3d が公開されていました。今日になって気づき、いつものようにバンドルをダウンロードして、アップデートしました。

    ESXi 7.0 Update 3d installed.
    2022-04-29T13:45:25.747Z SSH[587334]: SSH login enabled
    2022-04-29T13:46:06.818Z shell[587485]: Interactive shell session started
    2022-04-29T13:46:48.300Z shell[587485]: [root]: esxcli software sources profile list -d /vmfs/volumes/datastore1/VMware-ESXi-7.0U3d-19482537-depot.zip
    
    Name                            Vendor        Acceptance Level  Creation Time        Modification Time
    ------------------------------  ------------  ----------------  -------------------  -----------------
    ESXi-7.0U3sd-19482531-standard  VMware, Inc.  PartnerSupported  2022-03-29T00:00:00  2022-03-29T00:00:00
    ESXi-7.0U3sd-19482531-no-tools  VMware, Inc.  PartnerSupported  2022-03-29T00:00:00  2022-03-11T13:53:29
    ESXi-7.0U3d-19482537-standard   VMware, Inc.  PartnerSupported  2022-03-29T00:00:00  2022-03-29T00:00:00
    ESXi-7.0U3d-19482537-no-tools   VMware, Inc.  PartnerSupported  2022-03-29T00:00:00  2022-03-11T15:01:02
    
    2022-04-29T13:47:10.210Z shell[587485]: [root]: esxcli software profile get
    
    ESXi-7.0U3c-19193900-standard
       Name: ESXi-7.0U3c-19193900-standard
       Vendor: VMware, Inc.
       Creation Time: ...
    
    2022-04-29T13:48:38.286Z shell[587485]: [root]: esxcli software profile update -d /vmfs/volumes/datastore1/VMware-ESXi-7.0U3d-19482537-depot.zip -p ESXi-7.0U3d-19482537-standard --no-hardware-warning
    
    Update Result
       Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
       Reboot Required: true
       VIBs Installed: ...
    
    2022-04-29T13:49:40.341Z shell[587485]: [root]: esxcli system shutdown reboot -r "Update to version 7.0U3d"
    2022-04-29T13:51:22.606Z ESXShell[265406]: ESXi Shell unavailable
  • LibreELEC の BOINC クライアントを RPC で制御する

    LibreELEC のアドオンで BOINC クライアントを走らせていますが、プリインストールされた BOINC Manager で制御するように Docker コンテナが作られています。そのせいか、外部から RPC がつながりません。他の BOINC クライアントは、OpenMediaVault の Scheduled Jobs を利用して状況取得 & メールしているので、LibreELEC にも RPC が繋がればできるのにな〜と思っておりました。

    ちょっと時間ができたので、あれこれググりながらやってみたら、とりあえずできました。でもアドオン(コンテナ)を更新したら元に戻ってしまうと思うので、やり直せるように記録しておきます。

    1. LibreELEC へ ssh でログイン
    2. BOINC アドオンの起動用スクリプトがあるディレクトリへ移動
    # cd /storage/.kodi/addons/docker.linuxserver.boinc/bin
    1. 念のためバックアップ
    # cp docker.linuxserver.boinc docker.linuxserver.boinc_ORIG
    1. 編集します
    # vi docker.linuxserver.boinc
    • 編集する前はこの内容でした
    #!/bin/sh
    
    name="boinc"
    
    ・・・・・・・中略・・・・・・・
    
    docker run --name="$name" \
               --rm \
               --network=lsio \
               --hostname="Boinc-LibreELEC" \
               -e WARNING_MSG="DO NOT CONTROL THIS IN PORTAINER!" \
               -e PUID="65534" \
               -e PGID="100" \
               -e TZ="$TIMEZONE" \
               -p "$P_port":8080 \
               -v "$V_config":/config \
               $D_vaapi_args \
               $E_additional \
               "$DOCKERIMAGE"
               -p "$P_port":8080 \
    1行追加     -p "31416":31416 \
               -v "$V_config":/config \
    1. BOINC のデータファイルがあるディレクトリへ移動
    # cd /storage/.kodi/userdata/addon_data/docker.linuxserver.boinc
    1. RPC を有効にします
    # vi cc_config.xml
    • こんな中身にします (元は無かったファイル)
    <cc_config>
      <options>
         <allow_remote_gui_rpc>1</allow_remote_gui_rpc>
      </options>
    </cc_config>
    1. RPC のパスワードを確認 (同じディレクトリ)
    # cat gui_rpc_auth.cfg
    (半角英数字が32文字入っていました)
    1. BOINC コンテナを停止
    # docker ps --no-trunc
    CONTAINER ID                                                       IMAGE               COMMAND             CREATED             STATUS              PORTS                                        NAMES
    a24984d93d148b9f551c7266851145566dfb02c1b060527ced4fadf2c3f809f6   linuxserver/boinc   "/init"             4 days ago          Up 21 minutes       3000/tcp, 3389/tcp, 0.0.0.0:8088->8080/tcp   boinc
    # docker stop a24984d93d148b9f551c7266851145566dfb02c1b060527ced4fadf2c3f809f6
    a24984d93d148b9f551c7266851145566dfb02c1b060527ced4fadf2c3f809f6
    1. 停止したのを確認しつつ、自動的に起動するのを待ちます (LibreELEC が再起動してくれる)
    # docker ps --all --no-trunc
    # docker ps --all --no-trunc
    # docker ps --all --no-trunc
    # docker ps --all --no-trunc
    CONTAINER ID                                                       IMAGE               COMMAND             CREATED                  STATUS              PORTS               NAMES
    88aa0ee935fa88b53ed7f4b30283ff4be6c5c297e70208edc28266adffe72cdf   linuxserver/boinc   "/init"             Less than a second ago   Created                                 boinc
    1. ポート番号31416が公開されたのを確認
    # docker ps --all --no-trunc
    CONTAINER ID                                                       IMAGE               COMMAND             CREATED             STATUS              PORTS                                                                  NAMES
    88aa0ee935fa88b53ed7f4b30283ff4be6c5c297e70208edc28266adffe72cdf   linuxserver/boinc   "/init"             18 seconds ago      Up 17 seconds       3000/tcp, 3389/tcp, 0.0.0.0:31416->31416/tcp, 0.0.0.0:8088->8080/tcp   boinc
    1. BOINC Manager から接続してみる

    おしまい。お疲れ様でした(笑)

  • 等幅フォント

    macOS のテキストエディタに mi (エムアイ)を使っています。XML などのコードを読んだり書いたりするのに等幅フォントが欲しくて探したら、Apple さんが公開してくれていました。

    This monospaced variant of San Francisco enables alignment between rows and columns of text, and is used in coding environments like Xcode.

    — Fonts for Apple Platforms

    超便利! ありがとうございます。

  • iPhone 着信音の追加(と削除)

    1. 拡張子 m4r の音声ファイルを作る。
    2. 「ミュージック」アプリを起動して、サイドバーに iPhone が表示されるのを確認。
    3. 音声ファイルを iPhone へドラッグ&ドロップ。
    4. おしまい。macOS Monterey でも効くんじゃないかなぁ :-p

    iPhoneの着信音を好きな曲に、ミュージック内の音楽を設定する方法 | アプリオ
    https://appllio.com/ios-how-to-set-ringtone-favorite-music


    ここから下は2017年12月20日。macOS Monterey では使えない技です…

    最近の iTunes (例えばバージョン12) は Mac 側のライブラリから着信音がなくなったので、iPhone の同期操作で着信音を追加・削除できなくなりました。代わりに iTunes で iPhone 側へ直接コピーしたり削除したりできます… というわけで備忘録。

    iTunes から iPhone、iPad、iPod touch に着信音を移動する

    追加するには

    1. Mac で、iPhone へ追加したい着信音または通知音を探します。iTunes ライブラリに以前表示されていた着信音や通知音は、「iTunes Media」フォルダの「Tones」フォルダに入っています。
    2. iPhone へ追加したい着信音を選択してコピーします。
    3. iTunes に戻り、「ミュージック」の「ライブラリ」タブを表示します。
    4. 左のサイドバーでデバイス > iPhone の下の「着信音」をクリックします。
    5. 着信音をペーストします。

    削除するには

    1. iTunes の左側のサイドバーで、デバイス > iPhone の下の「着信音」をクリックします。
    2. 削除したい着信音を「control」キーを押しながらクリックまたは右クリックし、着信音を削除するオプションをクリックします。
  • ESXi 7.0 Update 3c

    トラブって非公開にされていた Update 3が修正されたようで、1月27日に ESXi Update 3c が出ていました。

    ウチでは Update 2d から無事に Update 3へ更新できたのでそのまま使っていましたが、そこから Update 3c への更新は行なっていません。ハードウェア自体を新しくしたのでクリーンインストールしました。

    新しいと言っても Core i5-8400中古 PC です。オンボードは Realtek な NIC なので Intel 82574L なカードを増設して ESXi に認識してもらいました。6コアに増えてシングルコア性能も上がって快適。OpenMediaVaultTime Machine をサービスするのが主用途ですが、WCG@BOINC さんも嬉しそうです。