Photon OS
VMWare ESXi(以下ESXi)にHome Assistant、もしくはHomebridgeがインストールされているイメージがあって、それを展開して使うというのは記事としてたくさんある。
ただし、ESXi上にHome AssistantとHomebridgeを両方インストールする記事がないので、ESXiに特化したPhoton OSを入れて試してみることにした。
・・・が、色々試して結局のところ、インストールは可能だが、root権限で入れないと不安定だったり、プラグインが動かないで追加のリポジトリを拾ってこようとすると存在しない(自分で作る方法はあるが、これが面倒)とかで良くないことが判明した。
Photon OSはDockerを動かすために特化されたOSだということが良くわかった。Docker上で上記2つのコンテナを動かすことができるが、使用するプロトコルの問題か私の知識不足かで、コンテナがうまく動かないことが多々あった。そもそもDockerイメージ用のOVF,OVAファイルをESXiに直接インポートして動かしたほうが処理速度的にも早かった。
ただせっかくなので、備忘録として記述しておくことにした。
Photon OSのインストールに関する、基本的なことはすべて下記のサイトに記載があるので合わせて参考にすること。
Photon OS を使って、Docker / Docker Compose 環境を作ってみよう - DENET 技術ブログ
但し、ユーザーアカウントを作成すると、アクセス権限がきびしいのかchmodを連発することになり、root権限のまま使う事を推奨する。安全の為、SSLポートは変更したほうが良い。下記参照。
ESXi上のdocker環境(Photon OS)構築 - makoのノート
インストール
Downloading Photon OS 4.0 Rev2よりOVA with virtual hardware v13 (UEFI Secure Boot)をダウンロードした。
まずはESXiの下記アイコンをクリックする。

次に「OVFファイル、または~」を選択する。

次に名前を入力した後、先ほどダウンロードしたOVAファイルをドラックアンドドロップする。

あとは道なりにインストールする。途中でプロビジョニングの問い合わせがあるが、シン(規定値)のままでOK。

インストール後にログインする。初期値のID:root PASS:changeme 初回ログイン時にパスワード変更を要求されるので変更する。
まずは一番最初に案内した参考のブログを見ながら、下記を設定。
tdnf install kbd lsof nano localectl set-keymap jp106 timedatectl set-timezone Asia/Tokyo
※Photon OSはsudoが入っていない。ユーザーアカウント作るのならばsudoもいれること。
メンテナンス
後で見直す率が高い項目を、予めここに記述したい。
パッケージのインストール
sudo tdnf list | grep (パッケージ名の一部) <-インストール可能なパッケージを表示、インストール済みなら@systemと表示される。
パッケージの更新
sudo tdnf check-update <-インストールしたパッケージの更新情報を調べる。 sudo tdnf upgrade <-インストールしたパッケージのアップデート。対象は全てのRelease版。 sudo tdnf clean all <-ゴミ掃除。
以下はnodejsの話で使わない。
sudo npm install -g npm-check-updates <-専用のアップデートチェッカー、ncuというコマンドが使えるようになる。 sudo ncu <-重要なセキュリティアップデートがないかチェック sudo ncu -u <-npmの情報を更新する。 sudo npm install <-更新した情報で、インストールされたパッケージを更新する。
再起動
sudo shutdown -r now
ポートを開放する
今現在、空いているポートを調べる。
iptables --list
初期状態では22(SSH)しか開放していない。ip4saveというファイルを開く。
nano /etc/systemd/scripts/ip4save
ファイルが開くので、SSHの22番ポート開ける指示の下に、空けるポート番号を以下の追加。
-A INPUT -p tcp -m tcp --dport (ポート番号) -j ACCEPT
Ctrl + oで名前を付けて保存したあとに、Ctrl + xで終了。最後にiptablesを再起動。
systemctl restart iptables
iptablesが正しく反映されているかは、リストが更新されているか確認する。
サービス操作
systemctl start (サービス名) <-サービス起動 systemctl stop (サービス名) <-サービス停止 systemctl restart (サービス名) <-サービス再起動 systemctl enable (サービス名) <-サービス自動起動有効 systemctl is-enabled (サービス名)<-サービスが自動起動になっているか確認
直近のシステムログを調べる
下記は1分以内のログ
journalctl -r --since "1 min ago"
Homebridgeのインストール
Install Homebridge on Red Hat, CentOS or Fedora Linux · homebridge/homebridge Wiki · GitHub
上記の公式インストール手順によると、まずnode.jsをインストールする。すると、併せてnode.jsのパッケージ管理ソフトnpmがインストールされる。次にnpm経由でhomebridgeをインストールする、といったところ。
sudo tdnf install nodejs sudo node --version <- 正しくインストールされているとバージョンを返す。 sudo npm --version <-正しくインストールされているとバージョンを返す。 sudo tdnf install python3-devel <-python3は入っているが、develは入っていない。 sudo npm install -g --unsafe-perm homebridge homebridge-config-ui-x sudo hb-service install --user (ユーザー名)
これで下記のように表示されたら成功。
ℹ Installing Homebridge Service ℹ Creating Homebridge directory: /var/lib/homebridge ℹ Creating default config.json: /var/lib/homebridge/config.json ℹ Starting Homebridge Service... ✔ Homebridge Started Manage Homebridge by going to one of the following in your browser: * http://localhost:8581 * http://192.168.**.**:8581 * http://[fe80::***:****:****:****]:8581 Default Username: admin Default Password: admin ✔ Homebridge Setup Complete
sudo systemctl enable homebridge.service sudo systemctl restart homebridge.service
Homebridgeのインストールは完了だが、Photon OSはセキュリティ上SSHの22番しかポート開いていないから。次のポートを開ける。参照
- 9 (Wake-on-LAN、PCの起動をやりたいときに開ける)
- 5353 (マルチキャストDNS、mdnsと表示、iphoneの検索に使用)
- 8283 ?
- 8581(Homebridge-Configure-ui-x)
- 51826
。。。と思ったら、アクセスできない。ログを確認したら、下記のエラーを凄い出力している。
Feb 15 15:32:40 photon-machine systemd[1]: Stopped Homebridge. Feb 15 15:32:40 photon-machine systemd[1]: homebridge.service: Scheduled restart job, restart counter is at 432. Feb 15 15:32:37 photon-machine systemd[1]: homebridge.service: Failed with result 'exit-code'. Feb 15 15:32:37 photon-machine systemd[1]: homebridge.service: Main process exited, code=exited, status=203/EXEC Feb 15 15:32:37 photon-machine systemd[5198]: homebridge.service: Failed at step EXEC spawning /usr/lib/node_modules/homebridge-config-ui-x/dist/bin/hb-service.js: Permission denied Feb 15 15:32:37 photon-machine systemd[5198]: homebridge.service: Failed to locate executable /usr/lib/node_modules/homebridge-config-ui-x/dist/bin/hb-service.js: Permission denied Feb 15 15:32:37 photon-machine systemd[1]: Started Homebridge. Feb 15 15:32:37 photon-machine systemd[5196]: homebridge.service: Executable /usr/lib/node_modules/homebridge-config-ui-x/dist/bin/hb-service.js missing, skipping: Permission denied Feb 15 15:32:37 photon-machine systemd[5194]: homebridge.service: Executable run-parts missing, skipping: No such file or directory Feb 15 15:32:37 photon-machine systemd[1]: Starting Homebridge...
Permission deniedがでているので、フォルダを回帰的に権限を変更。644,666でダメだから、7xxなら良いのかな?(未検証)→いや駄目だった。
sudo chmod 755 -R /usr/lib/node_modules/
とりあえずこれでHomebridge-Config-ui-xが動いた。→動いてなかった。結局Rootでインストールするしかない。
hb-service install --allow-root --user root
nano /etc/default/homebridge <code> 1行目にあるHOMEBRIDGE_OPTSに、--allow-rootを追加する。 <code> HOMEBRIDGE_OPTS=-I -U "/var/lib/homebridge" --allow-root
保存して、システム再起動すると動いた。
パッケージマネージャを利用した Node.js のインストール | Node.js
Home Assistantのインストール
tdnf install python3-devel
tdnf install