hikihashiのブログ -13ページ目

hikihashiのブログ

主に購入したガジェット系の感想と、カメラで撮った写真の感想を気ままに書いています。

 前回はMac miniにインストールしたAntigravity CLIをiPhoneでも使えるように設定を行っていました。

 

 

 無事に設定は終わったのですが、スリープ中のMac miniには接続できないという当たり前の問題が発生しました。

 

 

 

 なので、今回はMac miniをNAS経由で外出先からでもスリープを解除できるようにしてみたので、そちらについて書いていきます。

 

 

 最初、外からスリープを解除しようとして失敗ばかりだったため、決められた時間スリープを無効にできるアプリ「Amphetamine」を入れたものの、結局諦め切れずに色々と試してみることにしました。

 

 最終的にNASのDockerを使って、Wake-on-Lan(WoL)という遠隔でPCのスリープを解除できるコンテナ「WoLWeb」を作ることで、何とか上手くいきました。

 

 

 Geminiに聞きながらコンテナを作ったのですが、最初にDockerのファイルの中に「wolweb」のファイルを作り、「devices.json」というファイルをその中に作る必要があるみたいです。

 

 

 上のスクショは小さくて見づらいのですが、①がDockerファイルで、②はその中に新規フォルダ「wolweb」を作成し、③でさらにその中に「devices.json」という新規フォルダを作成。

 

 ④は「/volumes1/docker/wolweb/devices.json」というファイルの場所が必要になることを覚えておくために残しています。

 

 それからPortainerのStackで入力するコードをGeminiに作ってもらい、そちらを入力し、一部自分の環境に合わせて修正したら完成。

version: "3"
services:
  wolweb:
    container_name: wolweb
    image: "ghcr.io/sameerdhoot/wolweb"
    restart: always
    volumes:
      # ここをホストマシンの絶対パスに書き換えます
      - /home/user/wolweb/devices.json:/wolweb/devices.json
    network_mode: host
    environment:
      WOLWEBHOST: "0.0.0.0"
      WOLWEBPORT: "8089"
      WOLWEBVDIR: "/"
      WOLWEBBCASTIP: "192.168.1.255:9" # ご自身の環境に合わせる

 

 コンテナが問題なく起動できていたら、http://<NASのIPアドレス>:8089/をブラウザで開きます。

 

 

 そうするとこのような画面が開くので、上にある+NEWをクリックし、Device名・MACアドレス・Broadcast IP・Interfaceを入力したら完成なのですが、ここでもなかなか上手くいかず1時間ぐらい何が間違っているのか悩みました。

 

 Mac miniはUSB LANアダプターでネットに繋いでいるため、そちらのMACアドレスを入力していたのですが、USB LANアダプター経由ではスリープ解除できないみたいで、Mac miniに元々あるLANポートにケーブルを繋ぎ、そちらのMACアドレスを調べて入力したらスリープ解除できるようになりました。

 

 TailscaleでVPN接続を行い、上のブラウザを開いて「WAKE-UP」と書かれた青いアイコンをクリックしたところ、また失敗しないかが不安でしたが、なんとか無事にスリープが解除され、外でもiPhoneを使ってMac miniにSSH接続ができるようになりました。

 

 

 

 今回も自己満足にはなりますが、Mac miniをスリープ無効で使うのは抵抗があったので、外からスリープを解除できる方法があり、ちゃんと使えるようになって良かったと思いつつ、今回は終わろうと思います。

 最近Gemini CLIが6月に終了し、Antigravity CLIに切り替わることを知りました。

 

 Geminiアプリばかりで、Gemini CLIはほとんど使っていなかったのですが、何かやりたくなった時のために、Antigravity CLIを入れてみることにしました。

 

 

 

 UGREENのNAS「DH2300」に入れてみたりしたのですが、どうもCPUが非対応らしく、起動ができなかったので、諦めてMac miniに入れることにしました。

 

 まずはMac miniのターミナルを起動し、コマンドを入力。

curl -fsSL https://antigravity.google/cli/install.sh | bash

 

 ただ、これだけだと起動しようとすると上手くいかず、調べるとインストールしただけだとパスが通っていないらしく、Geminiに聞くと下記のコマンドを入力してくださいと教えてくれました。

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc

 

 設定を反映させるために次のコマンドも入力するように教えてくれました。

source ~/.zshrc

 

 そうすると無事にAntgravity CLIが起動するようになり、Googleアカウントでログインを求められるので、ログインしたところ、無事に使えるようになりました。

 

 

 

 Mac miniにAntigravity CLIをインストールしたら、次にiPhoneからMac miniに接続できるように設定をしていきました。

 

 最初はMac miniのリモートログインの設定をオンにする必要があるらしく、設定アプリから「一般」を開いて、「共有」の中にある「リモートログイン」をオンにしました。

 

 次にSSH公開鍵認証の方法ですが、以前作った鍵があり、どうもそれが使えるらしいのですが、どうすればいいのかわからず、時間がかかりました。

 

 iPhoneの「a-Shell」アプリを開き、下記のコマンドを入力すると鍵が表示されるとのことですが、最初Geminiが教えてくれたコマンドだと上手くいかず、~/.sshとなっていたのですが、.sshにしたら上手くいきました。

cat .ssh/id_ed25519.pub

 

 そうすると画面にssh-ed25519 AAAA…というような文字列が出るので、それが鍵とのこと。

 

 Mac miniのターミナルを開いて、公開鍵の登録を行いました。

 

 .sshのファイルは以前作ったとは思うのですが、ファイル名が違うと登録できない可能性があるため、下記のコマンドを入力。

mkdir -p ~/.ssh

 

 それから、iPhoneで表示したSSH公開鍵を下記のコマンドを使って登録したところ、SSH接続時にパスワードが不要になりました。

echo "コピーした公開鍵の文字列" >> ~/.ssh/authorized_keys

 

 

 最後にiPhoneから起動できるかの確認のため、Mac miniにSSH接続を行いました。

 

 リモートログインをオンにすると、SSH接続ができるようになっているので、下のコマンドをiPhoneの「a-Shell」アプリで入力して接続を試みました。

ssh ユーザー名@PCのIPアドレス

 

 最初の一回だけ確認みたいなのがありましたが、公開鍵認証のおかげでパスワードなしでも接続されるようになりました。

 

 接続後にAntigravity CLIの起動コマンドである「agy」を入力したところ、無事に起動できるようになりました。

 

 

  iPhoneで最初にログインした時もGoogleアカウントの認証を求められ、表示されるURLを使って認証するのですが、SafariだとURLをコピペしても認証エラーして駄目かと思いましたが、Chromeではちゃんと認証できたので、無事にAntigravity CLIをiPhoneでも起動できるようになりました。

 

 

 

 ショートカットアプリの設定を行い、アクションボタンで起動できるようにしたので、次回からはボタン一つでiPhoneからAntigravity CLIも起動できるようになり、今回は満足したのでここで終わろうと思います。

 最近またUGREENのNASでネットワークエラーを起こすようになったので、今回はそのことについて書いていこうと思います。

 

 

 まず最初に、ネットワークエラーを起こす大元の原因はUSB LANアダプターを繋いでいることなので、それを止めれば良いだけなのですが、何とかして使えるようにしたいと使い続けています。

 

 

 色々と試した結果、1ヶ月前までは調子が良く、1ヶ月以上経過してもエラーを起こさずに使えていたのですが、NASのアップデートで再起動してからまたエラーが起こるようになりました。

 

 アップデート以外にもMac mini M4に買い替えて設定を少し変えたり、スイッチングハブの接続を少し弄ったのも原因だとは思うのですが、数日使うとエラーを起こすようになりました。

 

 結局原因ははっきりしないものの、Mac miniのWi-Fiをオフにして使っていることで、スリープ時にネットワークが切断され、SMB接続が切れてしまうのも原因の一つだと考え、スリープ時にSMBのマウントを切断するように設定することにしました。

 

 

 以前Geminiで「SleepWatcher」でスリープ復帰時にSMBの再マウントする設定を調べたのですが、軽く書いただけでまとめていなかったこともあり、使い方をすっかり忘れてしまいました。

 

 なので、今回は新しく設定をやり直すので、ついでに自分用にメモを残しておこうと思います。

 

 

 ターミナル(Homebrewインストール済み)を起動し、

 

1. SleepWatcherのインストール

brew install sleepwatcher

2. サービスの起動(常駐化) 

brew services start sleepwatcher

3. 動作確認

ps aux | grep sleepwatcher

4.「sleep」ファイルの作成

nano ~/.sleep

5. 中身を書き込む

#!/bin/bash

# アンマウントするNASのパスを配列(カッコ内)に改行(またはスペース)区切りで列挙します
MOUNT_POINTS=(
    "/Volumes/Obsidian"
    "/Volumes/Ufile"
    "/Volumes/WD SSD"
)

# 配列の中身を1つずつ取り出してループ処理する
for MOUNT_POINT in "${MOUNT_POINTS[@]}"; do
    # ディレクトリが存在する(マウントされている)場合のみアンマウント処理を実行
    if [ -d "$MOUNT_POINT" ]; then
        diskutil unmount "$MOUNT_POINT"

        # 動作確認用にログを残す場合は以下の行のコメントアウトを外す
        # echo "$(date): Unmounted $MOUNT_POINT" >> ~/.sleep_log.txt
    fi
done

[^(コントロール)O→エンターで書き込み→^Xで終了]

 

6. スクリプトに実行権限を付与

chmod +x ~/.sleep

7. 手動での動作確認

~/.sleep

8. 復帰用スクリプト(~/.wakeup)の作成

nano ~/.wakeup

9. マウント処理の記述

#!/bin/bash

# ネットワーク接続が復帰するまで待機(環境に合わせて5〜10秒程度に調整してください)
sleep 5

# マウントするNASのSMB URLを配列で指定
# 形式: "smb://NASのIPアドレス/共有フォルダ名"
# ※すでにMacで接続したことがあり「キーチェーン」にパスワードが保存されていれば自動で認証されます。
MOUNT_URLS=(
    "smb://NASのIPアドレス/共有ファイル名"
    "smb://NASのIPアドレス/共有ファイル名"
    "smb://NASのIPアドレス/共有ファイル名"
)

# 配列の中身を1つずつ取り出してマウント処理を実行
for URL in "${MOUNT_URLS[@]}"; do
    # AppleScriptを使用してマウントを実行
    osascript -e "mount volume \"$URL\""
    
    # 動作確認用にログを残す場合は以下の行のコメントアウトを外す
    # echo "$(date): Mounted $URL" >> ~/.wakeup_log.txt
done

10. スクリプトに実行権限を付与

chmod +x ~/.wakeup

11. 手動での動作確認

~/.wakeup

 

 ひとまず、以上の内容を入力することで、スリープ時にマウントの解除、復帰時に再マウントされるようになったものの、これでエラーが起こらなくなったのかは不明なので、今後も色々と試す必要がありそうです。

 

 

 とりあえず、今回はここで終わりにし、また何かあれば書いていこうと思います。