こちらの記事で紹介したようにtailscaleを使ってラズパイをVPNサーバとして使っていますが、VPNできたら当然自宅NASにもアクセスしたくなりますよね
でも、以前書いたようにNAS(DS118)は常時電源を入れていないので、使うときには起こす必要があります
ですので、必要な時にNASを起こせるようにラズパイをwolサーバに仕立てます
NAS(DS118)のwolを有効にする
使っているNAS↓
まず、NASがwol信号を受け付けられるように、wolを有効にします
https://support.ask-corp.jp/hc/ja/articles/360051678474-Wake-on-LAN-を設定したい
ラズパイに WOLサーバ を建てる
参考(大感謝!)
構成は Flask + uWSGI + Nginx となっています
ラズパイのCPU温度とクロック周波数を追加していますが、すべてそのまま使わせていただきました
便利に使えており、大変感謝しております!
構築に関して、自分のつまずいた点などを書いています
出来上がり見た目↓
pip install -r requirements.txt のインストール方法
https://note.nkmk.me/python-pip-install-requirements/
文字化けしたがインストールできたっぽい
たぶんteratermの設定のせいで文字化けした
起動など
ファイルは大体をPCで作って、FTPソフト(filezillaを使用)でラズパイに転送し、手直しはSSH接続して直接ファイルを弄った
ubuntu@ubuntu:~$ pwd
/home/ubuntu
/home/ubuntu の下にファイルを作って配置する
サービス起動
sudo systemctl start wakeonlan-server
サービス自動起動(起動時)
sudo systemctl enable wakeonlan-server
実行したのでbootで自動実行される
サービスのステータス確認
sudo systemctl status wakeonlan-server
active(running)になっているのでおけ
プログラム(wol.py)のエラー箇所もわかる
ValueError(“Incorrect MAC address format”) が出ていることがわかった
たぶんwol.htmlから変数(MACアドレス)をwol.pyに渡す時におかしくなってるのだが、検証できなかった
なので、MACアドレスを直書きすることにした(当面は同じNASしか使わないし)
MACアドレスは:で区切る
# wol.py 一部抜粋
def wol():
# addr = request.args.get('addr', '')
addr = "XX:XX:XX:XX:XX:XX" # NASのMACアドレス直書き
message = ""
if request.method == 'POST':
send_magic_packet(addr)
message = 'Sent magic packet'
return render_template('wol.html', message=message, addr=addr)
WOLの方法
ubuntuのアドレス/wol
例えば↓
http://192.168.100.126/wol
tailscale越しなら
http://100.XX.XX.XX/wol
アドレスはtailscaleで確認する
WOL確認のあれこれ
上記のエラーでラズパイからwolができないとき、原因切り分けのために別の方法でwolを試みた
WindowsからはnWOLを使用し動作を確認した
ラズパイからwakeonlanのパッケージならできた
https://zenn.dev/murachi/articles/cf0be8cb206e15f631ac
そこでMACアドレスは:で区切ることがわかった
定期再起動
ラズパイをサーバで使う時は毎日夜に再起動するようにしている
いままで使ってきた中で、毎日再起動するのが調子が良いみたい
こちらを参照
以上😋