[PR] 本記事にはプロモーションが含まれています。

【自宅サーバー】停電のあと、自動で起きるようにする|BIOS の電源の設定と、Wake-on-LAN で NAS を起こす

電気が戻った朝、小さなサーバーが先に起きて、電波のような合図で隣の NAS を起こしているイラスト 自宅サーバー構築
➔ 自宅サーバー構築メモの目次はこちら

【2026年11月8日時点の情報です】

前の記事「UPS を入れて、停電のとき NAS・自宅サーバー・メインPC を止める」で、停電したら3台が順にきちんと止まる形にしました。

ところが、コンセントを戻して電気が来ても、自宅サーバーも NAS も起きませんでした。止まったままでは、出かけているあいだの停電でブログが止まり続けます。

この記事では、電気が戻ったら自宅サーバーが自分で起き、自宅サーバーが NAS を Wake-on-LAN で起こす形にしたところまでを書きます。メインPC は、いつも動かしておくものがないので、自動では起こさないことにしました。

登場するホスト名、ユーザー名、IP アドレスなどは、セキュリティのため実際とは異なる架空のものに置き換えています。

No.機械この記事での名前IP アドレス
1NAS(Synology DS224+)NAS192.168.0.30
2自宅サーバー(KVM のホスト、富士通 ESPRIMO Q558、AlmaLinux 9)kvmhost192.168.0.20
3ブログを動かしている仮想マシンmyserver―
4メインPC(Windows 11)メインPC192.168.0.40

場面1:電気が戻っても、3台とも起きなかった

1回目の試しでは、UPS のコンセントを壁から抜いて5分ほどで、3台とも止まりました。NAS は、止まったあとに UPS の電気も止める設定にしてあります(「システムがスタンバイ モードに入ったときに UPS をシャットダウンする」)。

ところが、コンセントを戻しても、自宅サーバー・NAS・メインPC のどれも起きず、電源のボタンを押して起こしました。

UPS に電気を止めさせたのは、短い停電のときのためです。停電が短くて電池が切れる前に電気が戻ると、UPS は電気を出し続けたままなので、機械からは「電気が戻った」ように見えません。いったん UPS の電気を止めておけば、電気が戻ったときに、もう一度「電気が来た」と分かります。

No.機械起き方1回目の結果
1自宅サーバーBIOS の「電気が来たら電源を入れる」設定で起きる起きなかった(場面2)
2NASDSM の「電源の問題が修正されたときに自動的に再起動する」で起きるはず起きなかった(場面3)
3メインPC自動では起こさない―

場面2:自宅サーバーの BIOS で「電気が来たら電源を入れる」にする

自宅サーバー(富士通 ESPRIMO Q558)は、起動のときに F2 を押すと BIOS の設定の画面に入れます。BIOS の画面のあいだは、ブログも止まります。

「電源管理」のタブを見ると、前に変えたつもりの設定が入っていませんでした。変えたあとの「保存して終了」がうまくいっていなかったようです。

Q558 の BIOS の電源管理で、AC通電再開時の動作が使用しない、電源オフ時の電源供給が電源OFFになっている画面
No.項目前直したあと意味
1AC通電再開時の動作[使用しない][電源ON]電気が来たら、電源を入れる。ここが「使用しない」だったのが、起きなかったいちばんの理由
2電源オフ時の電源供給[電源OFF][電源ON]止まっているあいだも、基板に電気を残す。「電源OFF」は省電力の設定で、LAN の合図で起こせないことがある(見込み)
3LAN(ウェイクアップ設定)[使用する]そのままLAN の合図で起きる

直したら、いちばん右の「終了」のタブ →「変更を保存して終了」。直した画面を確かめてから保存し、ケーブルを抜いて挿す試しで、自分で起きるのを確かめました。

Q558 の BIOS の電源管理で、AC通電再開時の動作と電源オフ時の電源供給を電源ONにした画面

そのあと、自宅サーバーを止めて電源のケーブルを抜き、挿し直すと、自分で起き始めました。

場面3:NAS は、自分では起きなかった

2回目の試しでは、3台が止まったあと、コンセントを戻すと UPS が「9 → 0」と数え、数え終わるとスイッチングハブのランプが点きました。UPS が電気を出し直しています。

No.機械2回目の結果
1自宅サーバー自分で起き始めた(BIOS の設定が効いた)。ただし、富士通のロゴの画面で止まった(場面7)
2NAS起きなかった
3メインPC起きなかった(自動では起こさない設定のまま)

NAS は、DSM の「コントロールパネル」→「ハードウェアと電源」→「全般」で、「電源の問題が修正されたときに自動的に再起動する」に印が付いています。それでも、UPS の知らせできちんと止まったあと(DSM の記録では「Server going to Safe Shutdown」)は、電気が戻っても自分では起きませんでした。

DSM のハードウェアと電源の全般で、停電後の自動再起動と LAN 1 の WOL に印を付けた画面

そこで、先に起きる自宅サーバーから、NAS に「起きて」の合図(Wake-on-LAN)を送ることにしました。同じ画面の「WOL を LAN 1 で有効化」にも印を付けます。

場面4:自宅サーバーから NAS を Wake-on-LAN で起こす

Wake-on-LAN は、LAN に決まった形の合図(マジックパケット)を流すと、止まっている機械の LAN の部品がそれに気づいて、電源を入れるしくみです。合図には相手の MAC アドレスを入れるので、先に NAS の MAC アドレスを調べます。

Bash
ip neigh show 192.168.0.30
  • ip neigh show 192.168.0.30:
    kvmhost が覚えている、LAN の相手の IP アドレスと MAC アドレスの対応から、NAS の行だけを出す。lladdr のあとが MAC アドレス

合図を送るスクリプトと、起動のたびに動かす設定

合図を送る小さなスクリプトを Python で書き、kvmhost が起きてネットワークがつながったら、1回だけ動くようにしました。MAC アドレスは伏せています。

Bash
sudo tee /usr/local/sbin/wake-lan > /dev/null <<'EOF'
#!/usr/bin/python3
# 家の中の機械に Wake-on-LAN の合図(マジックパケット)を送る。起動のたびに wake-lan.service から動く
# 手で動かすとき:sudo /usr/local/sbin/wake-lan(全部)、sudo /usr/local/sbin/wake-lan nas(NAS だけ)
import socket, sys, time, syslog

TARGETS = {
    "nas": "xx:xx:xx:xx:xx:xx",   # DS224+(LAN 1)
}
BROADCAST = ("192.168.0.255", 9)

def magic(mac):
    b = bytes.fromhex(mac.replace(":", ""))
    return b"\xff" * 6 + b * 16

names = sys.argv[1:] or list(TARGETS)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
for i in range(3):
    for n in names:
        s.sendto(magic(TARGETS[n]), BROADCAST)
    time.sleep(2)
msg = "sent magic packet x3 to " + ", ".join(f"{n} ({TARGETS[n]})" for n in names)
syslog.openlog("wake-lan")
syslog.syslog(msg)
print(msg)
EOF
sudo chmod 755 /usr/local/sbin/wake-lan
sudo tee /etc/systemd/system/wake-lan.service > /dev/null <<'EOF'
[Unit]
Description=Wake NAS on LAN after boot (/usr/local/sbin/wake-lan)
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/local/sbin/wake-lan

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable wake-lan
systemctl is-enabled wake-lan
sudo /usr/local/sbin/wake-lan
  • TARGETS = {“nas”: “xx:xx:xx:xx:xx:xx”}:
    合図を送る相手の名前と MAC アドレス。相手を足すときは、ここに1行足す
  • magic(mac):
    Wake-on-LAN の決まりの合図(ff を6バイト、そのあと相手の MAC アドレスを16回くり返す、102バイト)を作る
  • BROADCAST = (“192.168.0.255”, 9):
    家の LAN の全員に向けて、9番の口に送る。NAS の LAN の部品が、自分の MAC アドレスの入った合図を見つけると起きる
  • for i in range(3): … time.sleep(2):
    取りこぼしがないように、2秒おきに3回送る
  • syslog.syslog(msg):
    送ったことを記録に1行残す(journalctl -t wake-lan で見られる)
  • After=network-online.target:
    ネットワークがつながってから動かす
  • Type=oneshot:
    1回動いて終わる
  • sudo systemctl enable wake-lan:
    起動のたびに動くようにする
  • 最後の sudo /usr/local/sbin/wake-lan:
    手で1回動かして、エラーなく送れるかを見る(NAS は動いているので、何も起きない)
Plaintext
Created symlink /etc/systemd/system/multi-user.target.wants/wake-lan.service → /etc/systemd/system/wake-lan.service.
enabled
sent magic packet x3 to nas (xx:xx:xx:xx:xx:xx)

本当に起きるかを試す

DSM の右上の人のマーク →「シャットダウン」で NAS を止め、ランプが全部消えてから、kvmhost で NAS だけに合図を送りました。

Bash
sudo /usr/local/sbin/wake-lan nas
  • sudo /usr/local/sbin/wake-lan nas:
    NAS だけに、起きての合図を3回送る

合図で NAS が起きました。これで、自宅サーバーから NAS を起こせることが分かりました。

場面5:念のため、NAS の電源スケジュールも入れる

自宅サーバーが起きられなかったとき(場面7のように、ロゴの画面で止まったときなど)は、NAS に合図が届きません。そこで念のため、NAS が止まっていたら決まった時刻に自分で起きる設定も入れました。

DSM の「コントロールパネル」→「ハードウェアと電源」→「電源スケジュール」のタブで「作成」を押し、「スタートアップ」の予定を、毎日 4:30・8:00・12:00・18:00・22:00 の5回足しました。止める予定は入れていません。

DSM の電源スケジュールに、毎日5回のスタートアップを登録した画面)

1つつまずきました。予定を作ったあと、あとで画面を開き直すと一覧が空になっていました。予定を作ったあと、画面の下の「保存」を押していなかったためと見られます。作り直して「保存」を押すと、残りました。

電気が一度切れたあとも、この予定が効くかは、まだ確かめていません。次の停電の試しで見ます。

場面6:3回目の試しで、戻り方を通しで見る

電池が満タンに戻ってから、もう一度コンセントを抜きました。抜く前に、kvmhost で準備ができているかを見ておきます。

Bash
date +%T
upsc ups@192.168.0.30 2>&1 | grep -E "^(ups.status|battery.charge|battery.runtime)"
systemctl is-active nut-monitor libvirt-guests
systemctl is-enabled wake-lan
  • date +%T:
    今の時刻(あとで記録を見るときの目印)
  • upsc ups@192.168.0.30 2>&1 | grep -E “…”:
    UPS が OL(壁から電気が来ている)で、電池が満タンか
  • systemctl is-active nut-monitor libvirt-guests:
    UPS の見張り役と、仮想マシンを先に止める役が動いているか
  • systemctl is-enabled wake-lan:
    起動のときに NAS を起こす役が、有効になっているか
Plaintext
15:04:49
battery.charge: 100
battery.charge.low: 10
battery.charge.warning: 20
battery.runtime: 4625
battery.runtime.low: 300
ups.status: OL
active
active
enabled

15:06 にコンセントを抜くと、5分ほどで NAS と kvmhost がきちんと止まりました。コンセントを戻すと、kvmhost は自分で起き始めましたが、富士通のロゴの画面で止まってしまいました。手で入れ直すと、今度はふつうに起きました。

起きてから、記録を見ました。

Bash
sudo journalctl -b -1 --no-pager | grep -E "myserver のシャットダウンが完了|Shutting down\." | tail -2
sudo journalctl -b --no-pager | head -2 | tail -1 | cut -c1-40
sudo journalctl -b -t wake-lan --no-pager | tail -1
sudo virsh list --all
  • journalctl -b -1 … grep -E “myserver のシャットダウンが完了|Shutting down.”:
    1つ前の起動の終わりに、仮想マシンを止めてから電源を切ったか
  • journalctl -b –no-pager | head -2 | tail -1 | cut -c1-40:
    今の起動のいちばん最初の記録の時刻(起きた時刻の目安)
  • journalctl -b -t wake-lan –no-pager | tail -1:
    今の起動で、NAS に合図を送った記録
  • sudo virsh list –all:
    仮想マシンが自動で起きたか
Plaintext
11月 04 15:11:39 kvmhost libvirt-guests.sh[3243]: ゲスト myserver のシャットダウンが完了しました。
11月 04 15:11:39 kvmhost systemd[1]: Shutting down.
11月 04 15:17:41 kvmhost kernel: The list of
11月 04 15:17:59 kvmhost wake-lan[1456]: sent magic packet x3 to nas (xx:xx:xx:xx:xx:xx)
 Id   名前             状態
-------------------------------------
 1    myserver         実行中
 -    win11-recovery   シャットオフ
No.時刻起きたこと
115:11:39kvmhost が仮想マシンを止めてから、電源を切り始めた
215:17:41入れ直した kvmhost が起き始めた
315:17:59起きて18秒で、wake-lan が NAS に合図を送った
4そのあとNAS が起きた。仮想マシンも自動で起きていた

ロゴの画面で止まったのは別の問題ですが、そこを越えれば、kvmhost が起き、NAS を起こし、仮想マシンが起きるところまで、ねらいどおりに動きました。

場面7:分かったこと

電気が戻ったときの起き方は、次の順になりました。

No.順番中身
1電気が戻るUPS が数を数えてから、電気を出し直す
2自宅サーバーが起きるBIOS の「AC通電再開時の動作」[電源ON]
3自宅サーバーが NAS を起こすwake-lan.service が、ネットワークがつながったら合図を送る
4仮想マシンが起きる仮想マシンの自動起動
5念のためNAS は電源スケジュール(毎日5回)でも起きる

ほかに分かったことです。

  • BIOS の設定は、保存されたかを確かめる:
    変えたつもりでも入っていなかった。保存して起きたあと、もう一度入って見るのが確か
  • UPS に電気を止めさせる:
    止めないと、短い停電のときに、電気が戻ったことに機械が気づけない
  • Synology の NAS は、きちんと止まったあとは自分では起きない:
    「電源の問題が修正されたときに自動的に再起動する」に印があっても起きなかった。先に起きる機械から Wake-on-LAN で起こす
  • DSM の画面は「保存」を押す:
    電源スケジュールは、作っただけでは残らなかった

残っていることもあります。自宅サーバーが、起動のときに富士通のロゴの画面で止まることがあり、BIOS を新しい版にしても直りませんでした(BIOS の更新は「BIOS を Linux から更新できなかった」)。止まると、そこから先は手で入れ直すしかありません。本体の傷みの見込みなので、2026年11月に本体を富士通 ESPRIMO D7011/G に買い替えました(「Q558 から D7011 へ、SSD をそのまま差し替えた」)。

まとめ

停電のあと、電気が戻ったら自宅サーバーが自分で起き、自宅サーバーが NAS を Wake-on-LAN で起こす形にしました。

No.機械電気が戻ったとき
1自宅サーバーBIOS の [電源ON] で起きる
2NAS自宅サーバーの wake-lan.service の合図で起きる。念のため、電源スケジュールでも起きる
3ブログの仮想マシン自宅サーバーが起きると、自動で起きる
4メインPC自動では起こさない

止める設定(前の記事)と起こす設定(この記事)は、どちらも、本当にコンセントを抜いて試すまで、うまくいっていないところに気づけませんでした。

停電のときに止める設定は「UPS を入れて、停電のとき NAS・自宅サーバー・メインPC を止める」に、仮想マシンの自動起動は「virt-install の記事」に、ブログを外から見張る設定は「UptimeRobot で自宅サーバーのブログを外から見張る」に書いています。自宅サーバーの記事の一覧は「自宅サーバー構築メモ」にまとめています。

コメント