古いWindows10タブレットを再活用！MagicMirror2を稼働してGoogleフォトフレームを作ろう！

# はじめに

**([2024/04/13補足]インストール後の手順に誤りがありましたので、訂正致します。コメント欄でご指摘くださったとおり(@rabe さま、ありがとうございました!)、npm startで動かす場合、追加手順が必要になります。稼働手順をpm2経由のみに変更いたしました。ついでにタイトルも変えました(笑)**


以前[RaspberryPi+MagicMirror2で超簡単にGoogleフォトフレームをつくる]( https://qiita.com/tonasuzuki/items/901558bf3731fde7c70d ) を書きました。少し前に、[ShigeZone](https://www.shigezone.com/)で売られていた[SHARP Mebius Pad](https://jp.sharp/support/mebiuspad/)を手に入れてしまい、MagicMirror2を稼働してみました。この機種はIntel ATOM Z3770 (Passmark:739)・4GBメモリですが、使用で困らない程度に動作します。

![windows-mm2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679798/f8570c23-876c-418b-ac3b-799083cafe09.jpeg)


このように、MagicMirror2稼働にはちょうどいいサイズ・性能の中古タブレットPCが入手しやすくなっています。そこで、それらタブレットにプレインストールされているWindows10でMagicMirror2をそれなりに動かすためのインストール手順をまとめてみました。

ここでは起動時にMagicMirror2が安定的に稼働することまでを記載しておりますので、その後の設定は、以前まとめた [RaspberryPi+MagicMirror2で超簡単にGoogleフォトフレームをつくる]( https://qiita.com/tonasuzuki/items/901558bf3731fde7c70d ) をご確認ください。

# 手順の概要
- MagicMirror2は、node.jsとPM2を使って稼働していることから、Windows 10 Proに以下手順でインストールすることで、RaspberryPiと同様の稼働環境にしています。ただし、一部シェルスクリプトが使われていることから、この部分は手作業で設定します。(Windows 10 Proにインストールしたので、Windows 10 Homeですと、手順の一部が異なる可能性があります)
- MagicMirror2自身は、%USERPROFILE% (/Users/<ユーザー名>/)にインストールします。
- MagicMirror2は、稼働すると画面を占有してしまいます。他のPCから、SSH経由でコマンドプロンプトを利用することを前提にしています。
- Windowsは、バージョンや稼働環境によってビミョウに挙動が異なることから、質問を頂いてもお答えするのは難しいです。むしろ「この環境だと、ここが違うのでこのようにすると動くよ」的なコメントを記載頂けると、他の閲覧者が助かります！

# Windows環境を整備する

### OpenSSHを入れてリモートでコマンドプロンプト/ファイル転送できるようにする。
メンテナンスしやすいように、リモートでコマンドプロンプトとファイル転送が行えるように、OpenSSHをインストールします。
- スタートメニューから、＞ 設定 ＞アプリ ＞アプリと機能 ＞オプション機能 ＞機能の追加 を選びます。
- ここで「OpenSSHサーバー」を選んでインストールを行います。
- インストール後、%ProgramData%\ssh\sshd_config の最後の以下2行をコメントアウトします。
```
# Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
```
- コントロールパネルから、＞ 管理ツール ＞サービス で、「OpenSSH SSH Server」を「自動」にして、OpenSSHを起動時に実行するようにします。
  - /Users/<ユーザー名>/.ssh/ にauthorized_keysを用意した場合は、authorized_keysの Everyone 権限に読み取り権限が付加されますが、これがあると SSH 鍵認証が通らないため、この権限を削除しておきます。

これで、他のWindows PCのコマンドプロンプトなどから、
```
ssh ＜ユーザー名＞＠＜コンピュータ名＞
```
 で、設定したPCのコマンドプロンプトを開くことができます。ファイル転送は[WinSCP]( https://winscp.net/eng/docs/lang:jp) などのSCPクライアントも使えるようになります。
 
### ロック画面を表示しないよう、windowsの設定を変更する
  https://otona-life.com/2022/07/10/126547/ や、https://hirogura.com/2016/08/18/post-3982/ などを参考にして、サスペンドなどからの復帰時でも、ロック画面を表示せずにすぐにMagicMirror2が表示されるように設定します。
- コントロールパネル ＞ 電源オプション で、「スリープ」ボタンの動作を「なし」に設定します。
- コントロールパネル ＞ 管理ツール ＞ コンピュータの管理 で、「ヒューマンインターフェイスデバイス」→「USB入力デバイス」→「プロパティ」→「電源の管理」→「電力の節約のために…」をOFFに設定します。

# MagicMirror2に必要なツールをインストールします。
- node.jsをインストールします。
  - https://nodejs.org/ja/download/
- git をインストールします。
  - https://git-scm.com/download/win
- 再起動します。

# MagicMirror2をインストールする
- 管理者権限でコマンドプロンプトを開きます。以下コマンドを順に実行します。
```
> cd %USERPROFILE%
> git clone https://github.com/MichMich/MagicMirror
> cd MagicMirror/
> npm run install-mm
```
- Windows だと途中でインストールに失敗するので、以下を手動で実行します。
```
> cd fonts  && npm install && cd ..
> cd vendor && npm install && cd ..
> cd config && copy config.js.sample config.js && cd ..
```
- %USERPROFILE%\MagicMirror\config\config.js を修正します。(localhostがIPv6アドレスの「::1」だと、うまく動かないことがあります。)
```
let config = {
	address: "localhost", 
⇒	address: "127.0.0.1", に変更します。
```

- ~~正常にインストールできていれば、以下コマンドでMagicMirror2が起動します。~~
```
>  npm start
```
- ~~無事に動いたら、[CTRL]+[C]で、いったんMagicMirror2を終了しておきます。~~
- ** (2024/04/13修正) npm start での起動は、[Installation & Usage](https://docs.magicmirror.builders/getting-started/installation.html#other-operating-systems) の5a項目にある package.json の修正が必要です。修正を行うか、そのまま次の項目に進んでください。**

# PM2をインストールする
node.jsで標準的に使われている管理ツール [PM2](https://pm2.keymetrics.io/)で、MagicMirror2を自動実行できるようにします。
- 管理者権限でコマンドプロンプトを開き、pm2をnpmコマンドでグローバルインストールします。
```
npm install -g pm2
cd %USERPROFILE%\MagicMirror\
pm2 init simple
```
- 自動作成されたファイル「%USERPROFILE%\MagicMirror\ecosystem.config.js」を修正します。なお、ファイル内でフォルダパスを記載するときは、「\」ではなく「/」で区切ります。ファイル内で環境変数(%USERPROFILE%)は使えないので、フルパスを記載してください。

```
module.exports = {
  apps : [{
    name   : "MagicMirror",
    script : "node_modules/electron/cli.js",
    args   : "js/electron.js",
    watch  : ["config/config.js"] ,
    cwd    : "MagicMirrorのあるフォルダ(例：/Users/ユーザー名/MagicMirror)"
  }]
}
```
- 変更したら、管理者権限でコマンドプロンプトを開き、以下を順に実行してPM2を設定します。
```
cd %USERPROFILE%
npm install pm2-windows-startup -g
cd MagicMirror
pm2 start
pm2 save
pm2-startup install
```
- これで、PCの電源を入れると、MagicMirror2が自動的に起動するようになります。

# MagicMirror2の起動と停止手順
- MagicMirror2は、実行すると画面を占有してしまいます。MagicMirror2を一旦起動・停止する場合は、リモートでコマンドプロンプトを開き、以下コマンドで停止・実行します。
  - MagicMirror2を実行する⇒ pm2 start all
  - MagicMirror2を停止する⇒ pm2 stop all

# PM2ログをローテートする手順
しばらく稼働するとPM2ログがたまってくるので、ログを適宜削除するように設定します。管理者権限でコマンドプロンプトを開き、以下を順に実行します。
- インストール
  - pm2 install pm2-logrotate
- 1つのログの最大サイズ(1Mバイト)を設定します。
  - pm2 set pm2-logrotate:max_size 1M
- logを保持する数(8つ)
  - pm2 set pm2-logrotate:retain 8

# PM2を定期的にリスタートする手順
以下に詳しいです。
- https://pm2.keymetrics.io/docs/usage/restart-strategies/#restart-at-cron-time
- 例えば以下のように設定すると、毎朝4:15にMagicMirror2が再起動します。
```
cron_restart: '15 4 * * *',	//4:15に再起動
```

# MagicMirror2のバージョンアップ手順
MagicMirror2は,だいたい3か月ごとにバージョンアップします。管理者権限でコマンドプロンプトを開き、以下手順で更新します。
```
pm2 stop all
cd MagicMirror
copy /y config\config.js config\config.js.update.bak
copy /y css\custom.css css\custom.css.update.bak
git pull
npm run install-mm
cd fonts  && npm install && cd ..
cd vendor && npm install && cd ..
cd ..
pause
pm2 start all
```

# 最後に

実際の環境設定やカスタマイズは、過去の記事 [RaspberryPi+MagicMirror2で超簡単にGoogleフォトフレームをつくる]( https://qiita.com/tonasuzuki/items/901558bf3731fde7c70d ) をご確認ください。
なお、上記記事中でモジュールのインストールを行うときは、「cd ~/MagicMirror/」の部分を、windowsの表記「cd %USERPROFILE%\MagicMirror\」に置き換えてください。