【外出先から自宅PC起動】Raspberry Pi 4 + Tailscale + Wake on LAN + Android Termux で安全にPCを起動する
はじめに
きっかけは、PCを使いたいのに起動していなかったときに、毎回家にいる家族へLINEで連絡して電源を入れてもらっていたことです。
そこで、外出先から自宅のデスクトップPCを起動できるようにしたので、構成と設定手順をまとめます。
最終的には、Android の Termux で次のコマンドを実行するだけです。
wakepc
これで以下の流れでPCが起動します。
本記事は筆者の環境で確認した一例です。BIOS、Windows、SSH、Tailscale などの設定変更は、環境によって動作やセキュリティに影響する可能性があります。実施は自己責任でお願いします。
この記事でできること
- 外出先から自宅PCを Wake on LAN で起動する
- ルータのポート開放なしで Raspberry Pi に接続する
- Android + Termux から
wakepcだけでPCを起動する - SSH公開鍵認証でパスワード入力を省略する
- Raspberry Pi を WoL 送信用の中継サーバとして使う
全体構成
外出先 Android
│
│ Tailscale VPN
▼
Raspberry Pi 4
│
│ wakeonlan
▼
自宅デスクトップPC
Wake on LAN の Magic Packet は基本的に自宅LAN内から送る必要があります。
そこで、常時起動している Raspberry Pi 4 に Tailscale 経由で接続し、Raspberry Pi から自宅LAN内へ WoL を送信する構成にしました。
Tailscale を使うことで、ルータのポート開放なしで安全に Raspberry Pi へ接続できます。
この構成のメリット
- ポート開放不要
- グローバルIP不要
- CGNAT環境でも使いやすい
- Android だけで操作できる
- Raspberry Pi がLAN内から WoL を送るため安定しやすい
- SSH公開鍵認証にすればパスワード入力を省略できる
- 将来的に Home Assistant やWeb UI化にも拡張しやすい
検証環境
| 項目 | 内容 |
|---|---|
| WoL送信用サーバ | Raspberry Pi 4 Model B |
| Raspberry Pi OS | Raspberry Pi OS Lite 64-bit |
| 起動対象PC | Windows デスクトップPC HP OMEN 40L |
| 起動対象PCの接続 | 有線LAN |
| Raspberry Piの接続 | 有線LAN推奨 |
| スマホ | Android |
| Android側ターミナル | Termux |
| VPN | Tailscale |
| WoL送信用コマンド | wakeonlan |
作業の流れ
- Windows PC 側で Wake on LAN を有効化する
- Raspberry Pi OS を準備する
- Raspberry Pi から WoL を送信できるか確認する
- Tailscale で外出先から Raspberry Pi に接続できるようにする
- Android + Termux から
wakepcで起動できるようにする - SSH公開鍵認証と最低限のセキュリティ設定を行う
1. Windows PC 側で Wake on LAN を有効化する
まず、起動したいデスクトップPC側で Wake on LAN を有効化します。
1-1. BIOSで Wake on LAN を有効化する
BIOSで以下のような項目を有効化します。名称はメーカーやマザーボードによって異なります。
- S4/S5ウェイク オンLAN
- Wake on LAN
- Power On By PCI-E
- Resume By LAN
- PME Event Wake Up
- S4/S5 Wake on LAN
今回のPCでは、S4/S5 Wake on LAN を有効化しました。
1-2. WindowsでLANアダプタ設定を変更する
Windowsで以下を開きます。
デバイスマネージャ
↓
ネットワークアダプタ
↓
有線LANアダプタ
↓
プロパティ
電源の管理
以下を有効化します。
- このデバイスで、コンピューターのスタンバイ状態を解除できるようにする
- Magic Packet でのみ、コンピューターのスタンバイ状態を解除できるようにする
環境によっては、以下を無効化した方が安定しました。
- 電力節約のために、このデバイスの電源をオフにできるようにする
詳細設定
今回特に重要だった設定です。
| 項目 | 推奨設定 |
|---|---|
| Advanced EEE | 無効 |
| LAN上のウェークアップのシャットダウン | 有効 |
| Power Saving Mode | 無効 |
| WOLとシャットダウンリンク速度 | 速度低下ではない |
| ウェイク・オン・マジック・パケット | 有効 |
| Green Ethernet / グリーンイーサネット | 無効 |
| 省電力型イーサネット(EEE) | 無効 |
Realtek系NICでは、EEE や Green Ethernet が有効だと、シャットダウン後にLANポートが消灯して WoL できないことがありました。
1-3. 高速スタートアップを無効化する
Wake on LAN が安定しない場合、Windowsの高速スタートアップを無効化します。
管理者PowerShellで実行します。
powercfg /h off
確認する場合は以下を実行します。
powercfg /a
1-4. LANポートLEDを確認する
PCをシャットダウンしたあと、LANポートのLEDを確認します。
LANポートが点灯または点滅している
この状態なら、NICに待機電力が供給されており、WoLできる可能性が高いです。
完全に消灯している場合は、BIOSまたはWindows側の省電力設定を見直します。
1-5. MACアドレスを確認する
WindowsのPowerShellで確認します。
getmac /v
有線LANアダプタの物理アドレスを確認します。
xx-xx-xx-xx-xx-xx
Linuxで使う形式に変換しておきます。
xx:xx:xx:xx:xx:xx
このMACアドレスは後で wakeonlan コマンドに指定します。
2. Raspberry Pi OS を準備する
Raspberry Pi Imager を使って OS を書き込みます。
2-1. OSを選択する
今回は以下を選択しました。
Raspberry Pi OS Lite (64-bit)
今回の用途ではGUIは不要なので Lite 版で十分です。
2-2. Imager のカスタマイズ設定を行う
Imager のカスタマイズ項目で以下を設定します。
| 項目 | 設定例 |
|---|---|
| Hostname | raspi-wol |
| User | your_user |
| Wi-Fi | 必要なら設定 |
| Remote access | SSHを有効化 |
| Raspberry Pi Connect | 今回は不要 |
Hostname は以下のようにしました。
raspi-wol
最初はパスワード認証でSSHを有効化しておけばOKです。
Wi-Fiでも構成できますが、WoLサーバ用途では有線LANをおすすめします。筆者の環境では、Wi-Fi運用時に再起動後の接続復旧が不安定でした。
3. Raspberry Pi にSSH接続する
同じLAN内のPCから Raspberry Pi にSSH接続します。
ssh your_user@raspi-wol.local
初回接続時に以下のように聞かれます。
Are you sure you want to continue connecting (yes/no/[fingerprint])?
yes と入力します。
3-1. パッケージを更新する
sudo apt update && sudo apt upgrade -y
4. Raspberry Pi から Wake on LAN を送る
4-1. wakeonlan をインストールする
sudo apt install wakeonlan -y
4-2. WoL送信テストを行う
wakeonlan xx:xx:xx:xx:xx:xx
xx:xx:xx:xx:xx:xx には、起動したいPCのMACアドレスを入れます。
PCが起動すれば成功です。
5. wakepc.sh を作る
毎回MACアドレスを入力するのは面倒なので、スクリプト化します。
nano ~/wakepc.sh
内容は以下です。
#!/bin/bash
wakeonlan xx:xx:xx:xx:xx:xx
実行権限を付与します。
chmod +x ~/wakepc.sh
実行します。
~/wakepc.sh
PCが起動すればOKです。
6. Tailscale を導入する
外出先から Raspberry Pi へ接続できるように Tailscale を入れます。
6-1. Tailscale をインストールする
curl -fsSL https://tailscale.com/install.sh | sh
6-2. Tailscale にログインする
sudo tailscale up
URLが表示されるので、ブラウザで開いて認証します。
表示された認証URLや管理画面をスクリーンショットで残す場合は、URL、IPアドレス、端末名などを隠してください。
6-3. 自動起動を確認する
systemctl is-enabled tailscaled
enabled でなければ有効化します。
sudo systemctl enable tailscaled
状態確認は以下です。
systemctl status tailscaled
6-4. Tailscale IPを確認する
tailscale ip
例:
100.xxx.xxx.xxx
このIPは、Android側からSSHするときに使います。
7. Android側を設定する
7-1. Tailscaleを入れる
Androidに Tailscale をインストールします。
Raspberry Piで使ったアカウントと同じアカウントでログインし、VPN接続をONにします。
7-2. Termuxを入れる
Termuxを使います。
7-3. Termuxを初期更新する
pkg update && pkg upgrade -y
SSH関連のコマンドを使うため、openssh も入れておきます。
pkg install openssh -y
7-4. SSHで Raspberry Pi へ接続する
Tailscale IPを使う場合は以下です。
ssh your_user@100.xxx.xxx.xxx
Tailscale の MagicDNS で名前解決できる場合は以下でも接続できます。
ssh your_user@raspi-wol
8. SSH公開鍵認証を設定する
毎回パスワードを入力しなくて済むように、SSH鍵認証にします。
8-1. Termuxで鍵を作成する
ssh-keygen -t ed25519
保存先はそのままEnterでOKです。パスフレーズは必要に応じて設定します。
8-2. 公開鍵を Raspberry Pi へコピーする
ssh-copy-id your_user@100.xxx.xxx.xxx
MagicDNSを使う場合は以下です。
ssh-copy-id your_user@raspi-wol
8-3. 接続確認する
ssh your_user@100.xxx.xxx.xxx
パスワードなしで接続できれば成功です。
9. Termuxでコマンドを短縮する
9-1. SSH config を作る
Termuxで以下を編集します。
nano ~/.ssh/config
内容は以下です。
Host raspi
HostName 100.xxx.xxx.xxx
User your_user
これで次のように接続できます。
ssh raspi
9-2. alias を作る
Termuxで .bashrc を編集します。
nano ~/.bashrc
末尾に追加します。
alias wakepc="ssh raspi '~/wakepc.sh'"
反映します。
source ~/.bashrc
9-3. 実行する
wakepc
これだけでPCが起動します。
Android Termux
↓
ssh raspi '~/wakepc.sh'
↓
Raspberry Pi から Magic Packet 送信
↓
Windows PC 起動
10. Raspberry Pi は有線LANがおすすめ
最初はWi-Fiで運用しようとしましたが、再起動後に接続できなくなることがありました。
確認すると以下のような状態でした。
wlan0: NO-CARRIER
これはWi-Fiに接続できていない状態です。そのため、最終的に Raspberry Pi 4 は有線LAN接続にしました。
Raspberry Pi 4 → LANケーブル → ルータ
WoLサーバ用途では、有線LANの方が安定します。
11. 再起動後の自動復旧を確認する
Raspberry Piを再起動します。
sudo reboot
1〜2分待ってから、AndroidのTermuxで確認します。
ssh raspi
接続できたら、さらに以下を実行します。
wakepc
PCが起動すれば、再起動後も自動復旧できています。
確認ポイントは以下です。
- 有線LANでIPを取得している
-
tailscaledが自動起動している - SSHが待ち受けている
-
wakepc.shが実行できる
12. セキュリティを強化する
12-1. SSHパスワード認証を無効化する
SSH鍵認証が成功してから行ってください。
sudo nano /etc/ssh/sshd_config
以下を設定します。
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin no
反映します。
sudo systemctl restart ssh
SSH鍵認証が成功する前にパスワード認証を無効化すると、ログインできなくなる可能性があります。必ず鍵認証でログインできることを確認してから変更してください。
12-2. Tailscale側のアクセス範囲を確認する
Tailscale にログインしている端末からは Raspberry Pi に到達できます。同じ tailnet に複数人や共有端末を参加させている場合は、Tailscale 管理画面の Access controls でアクセス範囲を絞ると安心です。
個人利用であっても、不要になった端末は Tailscale 管理画面から削除しておきます。
12-3. fail2banを入れる
SSHをインターネットに直接公開しない構成なので必須ではありませんが、保険として入れておきます。
sudo apt install fail2ban -y
状態確認は以下です。
sudo systemctl status fail2ban
ハマったところ
PCシャットダウン後にLANポートが光らない
この状態では WoL できませんでした。
対策は以下です。
- BIOSの
S4/S5 Wake on LANを有効化する - Windowsの
Wake on Magic Packetを有効化する -
EEE/Green Ethernetを無効化する - 高速スタートアップを無効化する
Raspberry Pi のWi-Fiが再起動後に復旧しない
wlan0: NO-CARRIER になりました。
最終的には、Raspberry Pi を有線LAN化して解決しました。
wakepc が見つからない
.bashrc の alias が反映されていませんでした。
source ~/.bashrc
で反映できます。
SSHで毎回パスワードを聞かれる
SSH公開鍵認証が設定できていませんでした。
Termuxで鍵を作成し、ssh-copy-id で Raspberry Pi へ登録して解決しました。
最終的な使い方
外出先では以下だけです。
- AndroidでTailscaleをONにする
- Termuxを開く
- 次のコマンドを実行する
wakepc
これで自宅PCが起動します。
まとめ
Raspberry Pi 4 + Tailscale + Wake on LAN により、外出先から安全に自宅PCを起動できるようになりました。
最終構成は以下です。
Android
↓
Tailscale
↓
Raspberry Pi 4
↓
wakeonlan
↓
自宅PC
特に良かった点は以下です。
- ポート開放不要
- Androidだけで操作可能
- SSH鍵認証でパスワード不要
- Raspberry Piを有線LANにすると安定しやすい
- WoLパケットをLAN内から送れるので成功率が高い
自宅PCをリモート利用する人には、かなり便利な構成だと思います。






