自宅のPCを遠隔起動したいと一度は考えたことがあると思います。
5年ほど前に購入したSynologyNASからWoLを送れるようで、
こちらの記事を参考にWoLを送ることができました。
ただこの方法ではDSMを開く必要があり、スマホからだと少々手間がかかりました。
そこで、ブラウザからWoLを送れるようにしました。
使用環境
- SynologyNAS DS420j
- DSM 7.2.2
- Cloudflare Tunnel
- ドメイン取得済み
おおまかな流れ
HTMLとPHPでWoLを送るWebページを作成
↓
SynologyNASでWebStationを構築、ホスト
↓
Cloudflare Tunnelを利用し外部から接続できるようにする
↓
スマホのブラウザからWebページを開く
↓
PC起動
WoLを送るWebページをHTMLとPHPを使って作成
Webページは参考記事(こたのお考え)様を参考にさせていただき使用しました。
yashikota/wake-on-dsm.gitをダウンロードし、index.html
にMACアドレスを追記して使用しました。
index.html
の下記ハイライト部分を編集・追記しました。
|
|
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を設置します。
そして先ほどのhttp://[NASのIPアドレス]
を再度開くと、MACアドレスを選ぶページに飛べます。
これでWoLを送ることはできるようになりました。
次項で外部からこのページに接続できるようにしていきます。
Cloudflare TunnelでSynologyNASに接続する
Cloudflareの会員登録は済んでるものとして進めます。
プランはfreeで大丈夫です。
Cloudflare Tunnelの準備
まずCloudflareのホーム画面からZero Trust
へ移動します。
最初は支払いの設定をしないといけませんが、基本的に支払いが発生することは無いです。
次にTunnelを作成してきます。
メニューの中からネットワーク
Tunnels
とクリックします。
トンネルを作成する
をクリックし、Cloudflaredを選びます。
わかりやすい名前を設定します。
次にコネクタのコマンドをコピーします。
環境はDocker
を選択し、コネクタのコマンドをメモしておきます。
コマンドですが、一部分は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
をクリックし、ダウンロード
します。
タグはlatest
にします。
ダウンロードが完了すると、イメージ
にcloudflare/cloudflared
が追加されています。
こちらをクリックし、起動
します。
コンテナを作成します。
自動再起動を有効にする
のチェックだけ入れておきます。
次にコンテナの詳細設定をします。
コマンド
に先ほどメモしておいたコマンドを貼り付け、ほかは初期設定でOKです。
このコンテナを起動することでCloudflareとNASが繋がります。
コンテナ
から接続されている確認ができます。
また、Cloudflare側でも接続を確認できます。
トンネルからWebページを開く設定をする
CloudflareとNASが繋がりましたので、次に先ほど構築したWebサイトを開きに行く設定をします。
まずはTunnelの編集画面を開きます。
利用するTunnelの右端の・・・
編集
とクリック。
設定画面のパブリックホスト名
をクリックし、パブリックホストを追加する
をクリック。
好きなサブドメインと自分のドメインを入力し、
タイプはHTTP
、URLにはNASのIPを入力します。
この設定したパブリックホスト名をURLに入力すると、先ほど作成したWebページが開かれるようになります。
今回の例では、URLはttp://tunnel_nas_wake_on_lan.iniwach.com
となります。
このURLを好きな端末から開き、wake
ボタンを押せばwolが送られPCを起動できます。
セキュリティの設定
このままでは誰でもWebページにアクセスできる状態なので、メール認証を通過しないとページを開けないようにします。
ここで紹介するのは一例なので、お好みで設定してください。
Access
アプリケーション
とクリックし、アプリケーションを追加する
をクリックします。
種類はセルフホスト
を選択します。
基本情報のアプリケーション名
は分かりやすい名前を入れておきます。
セッション時間
はお好みで。
パブリックホスト名を追加
をクリックします。
パブリックホスト名が追加されるので、入力します。
入力方法
はデフォルト、サブドメイン
は先ほど設定したものを、ドメイン
は取得しているドメインを、パス
は空欄で大丈夫です。
次にAccessポリシーを設定します。
新しいポリシーを作成する
をクリックすると、別タブでページが開きます。
ポリシー名
は分かりやすいものを設定し、アクション
はAllow
、セッション期間はアプリケーションセッションタイムアウトと同じ
としてください。
認証方法の設定をしていきます。
ログイン方法を追加します。
セレクター
はEmails
を選び、値
に自分のメールアドレスを入力します。
以上でAccessポリシーが作成できました。
続いて、Accessのアプリケーション設定に戻ります。
既存のポリシーを選択
をクリックし、先ほど作成したポリシーを選択します。
最後に、ログイン方法から利用可能な全てのIDプロパイダーを受け入れる
のチェックを外しておきます。
これでURLへアクセスしようとすると、メールアドレス認証の画面が出てくるようになったはずです。
Accessポリシーで設定したメールアドレスを入力すると、そのメールアドレス宛にワンタイムパスワードが発行されます。
この認証を通過すればwebページにアクセスできます。
セッション期間が切れるまでは再認証は不要です。
※ブラウザのプライベートウィンドウでアクセスして認証が発生することと、設定していないメールアドレスではワンタイムパスワードが発行されないことを確認してください。
小ネタ
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にトンネルで接続する方法