自宅のPCを遠隔起動したいと一度は考えたことがあると思います。

5年ほど前に購入したSynologyNASからWoLを送れるようで、
こちらの記事 を参考にWoLを送ることができました。

ただこの方法ではDSMを開く必要があり、スマホからだと少々手間がかかりました。
そこで、ブラウザからWoLを送れるようにしました。

この記事の画面と構築記録は2025年当時のものです。現在はWoLのホストをRaspberry Piへ移しており、ここで紹介するSynology NASの構成は使用していません。2026年9月の追記では公開前の確認事項を補いましたが、現行のDSM・Cloudflare管理画面で全手順を再実行したものではありません。

使用環境

  • SynologyNAS DS420j
    • DSM 7.2.2
  • Cloudflare Tunnel
  • ドメイン取得済み

おおまかな流れ

  1. HTMLとPHPでWoLを送るWebページを作成
  2. SynologyNASでWebStationを構築、ホスト
  3. 公開するホスト名にCloudflare Accessの認証を設定する
  4. Cloudflare Tunnelを利用し、認証で保護したホスト名から接続できるようにする
  5. スマホのブラウザから認証してWebページを開く
  6. PC起動

WoLを送るWebページをHTMLとPHPを使って作成

Webページは参考記事(こたのお考え) 様を参考にさせていただき使用しました。
yashikota/wake-on-dsm.git をダウンロードし、index.htmlにMACアドレスを追記して使用しました。

index.htmlの下記ハイライト部分を編集・追記しました。

113
114
115
116
117
118
119
120
121
<body>
    <form action="wake.php" method="post">
        <label for="macSelect">Select MAC Address</label>
        <select name="macSelect" id="macSelect" onchange="toggleMacInput()" required>
            <option value="">Choose a MAC Address</option>
            <option value="AB:CD:EF:GH:IJ:KL">GamePC (AB:CD:EF:GH:IJ:KL)</option>
            <option value="12:34:56:78:90:12">StreamPC (12:34:56:78:90:12)</option>
            <option value="other">Other</option>
        </select>

Synology NASでWebStationを構築

※本記事ではWoLを送るための最低限しか解説しません。ご了承ください。

Synology NASのDSMからパッケージセンターを開き、Web Stationをダウンロードします。
インストール・起動を済ませた後、NASとローカルネットで繋がっている状態でhttp://[NASのIPアドレス]と叩けば、Your website is not set up yetと書かれたページが開かれるはずです(ファイルを削除したため参考画像撮れませんでした)。
このページが表示されればWebサーバとしての準備はできています。

次に、File Stationを開き、NAS/webというディレクトリを確認します。
既存のサイトがある場合はファイルを退避し、用途を確認したうえで、前項で作成したHTMLとPHPを設置します。既存サービスのファイルをまとめて削除しないようにしてください。

File station

そして先ほどのhttp://[NASのIPアドレス]を再度開くと、MACアドレスを選ぶページに飛べます。
これでWoLを送ることはできるようになりました。

Local WoL

次項で外部からこのページに接続できるようにしていきます。

Cloudflare TunnelでSynologyNASに接続する

Cloudflareの会員登録は済んでるものとして進めます。
プランはfreeで大丈夫です。

Cloudflare Tunnelの準備

まずCloudflareのホーム画面からZero Trustへ移動します。

Zero Trust

最初は支払いの設定をしないといけませんが、基本的に支払いが発生することは無いです。

次にTunnelを作成してきます。
メニューの中からネットワーク Tunnelsとクリックします。

Network_Tunnel

トンネルを作成するをクリックし、Cloudflaredを選びます。

make Tunnel

わかりやすい名前を設定します。

name Tunnel

次にコネクタのコマンドをコピーします。
環境はDockerを選択し、コネクタのコマンドをメモしておきます。

Connector

コマンドですが、一部分はSynology NASが自動で実行するものと被っているものがあるので添削します。
docker run cloudflare/cloudflared:latestの部分を削除します。

tunnel --no-autoupdate run --token 以下長いコードとなっていればOKです。
このコマンドはメモしておき、他人に漏らさないようにしてください。

Synology NASをTunnelにつなぐ

まずSynology NASにContainer Managerをインストールし、起動します。
※DSM7.1以下ではDockerを利用するみたいです。ただ、僕のDS420jでは利用できませんでした。
7.2.2にアップデートするとContainer Managerは利用できました。

左側のメニューからレジストリをクリックし、検索欄にCloudflare/Cloudflaredと入力します。
表示されたcloudflare/cloudflaredをクリックし、ダウンロードします。

container registry

タグはlatestにします。

ダウンロードが完了すると、イメージcloudflare/cloudflaredが追加されています。
こちらをクリックし、起動します。

container image

コンテナを作成します。
自動再起動を有効にするのチェックだけ入れておきます。

make container

次にコンテナの詳細設定をします。
コマンドに先ほどメモしておいたコマンドを貼り付け、ほかは初期設定でOKです。

container settings

このコンテナを起動することでCloudflareとNASが繋がります。
コンテナから接続されている確認ができます。

container container

また、Cloudflare側でも接続を確認できます。

Cloudflare healthy

トンネルからWebページを開く設定をする

先にセキュリティの設定 を行い、これから使用するホスト名全体をAccessで保護してください。 Tunnelだけでは利用者認証になりません。保護を設定してから公開ホスト名を接続し、未認証では index.htmlwake.php のどちらにも直接アクセスできないことを確認します。詳しくはCloudflareの自己ホストアプリの設定 を参照してください。
CloudflareとNASが繋がりましたので、次に先ほど構築したWebサイトを開きに行く設定をします。

まずはTunnelの編集画面を開きます。
利用するTunnelの右端の・・・ 編集とクリック。

Cloudflare tunnel config

設定画面のパブリックホスト名をクリックし、パブリックホストを追加するをクリック。

Cloudflare publicHost

好きなサブドメインと自分のドメインを入力し、
タイプはHTTP、URLにはNASのIPを入力します。

Cloudflare host

この設定したパブリックホスト名をURLに入力すると、先ほど作成したWebページが開かれるようになります。
今回の例では、URLはttp://tunnel_nas_wake_on_lan.iniwach.comとなります。

このURLを好きな端末から開き、wakeボタンを押せばwolが送られPCを起動できます。

セキュリティの設定

メール認証を通過しないとページを開けないようにします。この設定は、公開ホスト名を接続する前に済ませてください。
ここで紹介する認証方法は一例ですが、WoL操作ページを外部から使う前にアクセス制限を設定する必要があります。

Access アプリケーションとクリックし、アプリケーションを追加するをクリックします。

access app

種類はセルフホストを選択します。

selfhost

基本情報のアプリケーション名は分かりやすい名前を入れておきます。
セッション時間はお好みで。

パブリックホスト名を追加をクリックします。

add publichost

パブリックホスト名が追加されるので、入力します。
入力方法はデフォルト、サブドメインは公開に使用するものを、ドメインは取得しているドメインを、パスは空欄で大丈夫です。

security app

次にAccessポリシーを設定します。
新しいポリシーを作成するをクリックすると、別タブでページが開きます。

policy settings

ポリシー名は分かりやすいものを設定し、アクションAllow、セッション期間はアプリケーションセッションタイムアウトと同じとしてください。
認証方法の設定をしていきます。

policy action

ログイン方法を追加します。
セレクターEmailsを選び、に自分のメールアドレスを入力します。

policy authentication

以上でAccessポリシーが作成できました。

続いて、Accessのアプリケーション設定に戻ります。
既存のポリシーを選択をクリックし、先ほど作成したポリシーを選択します。

Access policy

最後に、ログイン方法から利用可能な全てのIDプロパイダーを受け入れるのチェックを外しておきます。

login setting

これでURLへアクセスしようとすると、メールアドレス認証の画面が出てくるようになったはずです。
Accessポリシーで設定したメールアドレスを入力すると、そのメールアドレス宛にワンタイムパスワードが発行されます。

この認証を通過すればwebページにアクセスできます。
セッション期間が切れるまでは再認証は不要です。

※プライベートウィンドウで認証が要求されること、許可していないメールアドレスではアプリに入れないことを確認してください。認証コードのメールが届くかどうかだけでは、アクセス制限の確認になりません。許可したアカウントではログイン後にWoLが動作することも確認します。

小ネタ

NASのポート設定が初期設定であれば、
Tunnelで設定したパブリックホスト名を[NASのIP]:5000とすればDSMを開けます。
この:5000はポート番号です。

SynologyであればQuick connectがあるので不要かもしれませんが。

おわりに

これでどこにいてもネットさえあればWoLでPCを起動できるようになりました。
長年使っているNASが新たな形で活躍してくれて嬉しい限りです。

NASとCloudflare Tunnelは他にも遊べそうなので思いついたら実践して記事にします。

参考にした記事

SimpleLife : Synology DiskStationからWake on LAN
こたのお考え : SynologyのNASからWake On LANを送れるようにしてPCを起動できるようにする
ホームNW研究所 : SynologyのWebサーバをCloudflresのDNSにトンネルで接続する方法