WoL&Parsecで家のWindowsPCを外から操作する
はじめに
普段外出時にはMacBookAirを使用していますが外出先からWindowsPCでゲーム作業がしたくなったためやってみたメモです.
必要なもの
- WindowsPC(動かす対象)
- ノートPC(外部から操作する用)
- 動かす対象と同一LAN内にあるサーバ(ラズパイとかでOK)
- Cloudflareのアカウント
- ドメイン
構成
- LAN外にあるノートPCからCloudflareトンネル経由でLAN内のサーバへアクセス
- LAN内のサーバがマジックパケットを送信(遠隔でPC起動)
- 起動したPCをParsec使って操作
といった流れで外部からの操作を実現しています
構築
サーバの構築
マジックパケットをデスクトップに送信する機能を実装する必要がありますが
ありがたいことにDockerコンテナ内で動作するものが存在しています
↓これ
サーバにクローンしてきたら少しだけ変更する必要があるので変更します
version: "3"
services:
wolweb:
container_name: wolweb
image: "ghcr.io/sameerdhoot/wolweb"
restart: always
# Make sure that the file exists in local directory from where you are running the compose file;
# or initialize empty json file by running command "echo '{}' > devices.json".
volumes:
- ./devices.json:/wolweb/devices.json
# Have to use host mode as bridge network has issues with UDP broadcast
# https://github.com/docker/for-linux/issues/637
# ports:
# - 12345:8089
network_mode: host
# Use environment variable below to change port or virtual directory.
environment:
WOLWEBHOST: "0.0.0.0"
WOLWEBPORT: "8089"
#WOLWEBVDIR: "/wolweb"
WOLWEBBCASTIP: "192.168.1.255:9"
#WOLWEBVDIR: "/wolweb"
をWOLWEBVDIR: "/"
にします
後はdocker compose up -d
をして立ち上げましょう
http://マイコンのローカルIP:8089にアクセスすると次のような画面になります
ここまでできたら一旦LAN外からでもこのWebアプリにアクセスできるようCloudflareを使用して設定を行います.
Cloudflareの設定
トンネルを通す
サーバに使用したハードウェアで設定が人により異なるのでここでの解説は割愛します.
以下の公式ドキュメントを参考にしてください
アプリケーションの設定をする
Cloudflare Zero TrustでWebアプリのパブリックホスト名を設定します.
Access
タブのアプリケーション
を選択します.
青い+アプリケーションを追加する
のボタンを押すとアプリケーションを追加する
に遷移するので
以下のように設定します.
- アプリケーション名
なんでもOK - サブドメイン
アプリケーション名と同じでOK - ドメイン
自分のドメインが選択できるから選択
設定したパブリックホスト名でhttp://サーバのローカルIP:8089
が開けたらOKです.
認証を追加する
このままだとURLを知っている人が誰でもWolにアクセスしてPCを起動できてしまうので先ほど設定したアプリケーションに認証を追加します.
今回はGitHub認証を行っています.
ログイン方法を追加する
デフォルトだとOne-time PINしか使えないのでGitHubログインを追加します.
Cloudflare Zero Trustで
設定->認証->ログイン方法の右にある新規追加(青いボタン)を押します.
なんか色々ありますがGitHub
を押します.
右にセットアップ方法があるのでGitHub側で設定を行なって
アプリ ID
とクライアントシークレット
を発行し入力してください.
これでログイン方法にGitHub認証が追加されます.
ルールグループの作成
ログイン方法を設定するルールグループを設定していきます.
設定しなくても大丈夫ですがあると使いまわせるので便利です.
Cloudflare Zero Trustで
Access
タブのルール グループ
を選択します.
青い+グループを追加する
のボタンを押すとルール グループを追加する
に遷移するので
以下のように設定します.
- ルールグループ名
なんでもOK - セレクター
LoginMethods
を選択 - 値
さっき作成したGitHub認証が選べるので選択
ポリシーの作成
Access
タブのポリシー
を選択します.
青い+ポリシーを追加する
のボタンを押すとポリシーを追加する
に遷移するので
以下のように設定します.
- ポリシー名
なんでもOK - セッション時間
セッションが切れるまでの時間 - セレクター
Rule group
を選択 - 値
さっき作成したルールグループが選べるので選択
アプリケーションの再設定(ポリシーの適用)
Accessタブのアプリケーションを選択します.
作成したアプリケーション名をクリックして設定を押します.
ポリシー
タブを選択します.
Access ポリシー
の中に既存のポリシーを選択
の青いボタンがあるので選択します.
既存のポリシーを選べるので作成したポリシーを選択します.
ここまで設定できたら設定したホストにアクセスすると以下のように認証が追加されています
(筆者はメール認証も増やした為ちょっと項目が多い)
これで認証を追加できました.
デスクトップ側の設定
マジックパケットが来た時に起動してくれるように設定を変更していきます
遠隔起動の有効化
1.コントロールパネルからデバイスマネージャー
を開く
2.ネットワークアダプターから有効化するネットワークデバイスを探す
3.対象のネットワークデバイスを左クリックしてプロパティを開く
4.電源の管理
のタブをクリックする
5.このデバイスで、コンピューターのスタンバイ状態を解除できるようにする
にチェックを入れる
6.「詳細設定」を開く
7.Wake on Magic Packet
などのWoL関連の項目が有効になっていることを確認する
8.OK
をクリックして設定を適用する
ハイブリッドシャットダウンの無効化
Windows10では高速起動(ハイブリッドシャットダウン)がデフォルトとなっているがこの設定だとWoLが使えないので無効化する必要があります.
1.コントロールパネルを開く
2.電源オプション
を選択する
3.電源ボタンの動作を選択する
をクリックする
4.現在利用可能ではない設定を変更します
のリンクに飛ぶ
5.高速スタートアップを有効にする(推奨)
のチェックを外す
6.変更の保存
をクリックして設定を適用する
BIOS側の設定
メーカーとかによって操作が異なるのでご利用のPCで調べてみてください<(..)>
Parsecの設定
ホスト側
ログイン後
Settings->Host->Hosting EnabledをEnabledにします
クライアント側
同様にParsecを入れます
ホスト側と同じアカウントでログインすると
ホストが表示されるのでConnectしたら遠隔操作できます.
おわりに
今回は家のデスクトップを遠隔起動から操作までできる環境を構築しました.
意外と便利なので試してみてください!
Discussion