🎛️

WoL&Parsecで家のWindowsPCを外から操作する

に公開

はじめに

普段外出時にはMacBookAirを使用していますが外出先からWindowsPCでゲーム作業がしたくなったためやってみたメモです.

必要なもの

  • WindowsPC(動かす対象)
  • ノートPC(外部から操作する用)
  • 動かす対象と同一LAN内にあるサーバ(ラズパイとかでOK)
  • Cloudflareのアカウント
  • ドメイン

構成

  1. LAN外にあるノートPCからCloudflareトンネル経由でLAN内のサーバへアクセス
  2. LAN内のサーバがマジックパケットを送信(遠隔でPC起動)
  3. 起動したPCをParsec使って操作

といった流れで外部からの操作を実現しています

構築

サーバの構築

マジックパケットをデスクトップに送信する機能を実装する必要がありますが
ありがたいことにDockerコンテナ内で動作するものが存在しています
↓これ
https://github.com/sameerdhoot/wolweb

サーバにクローンしてきたら少しだけ変更する必要があるので変更します

docker-compose.yml
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の設定

トンネルを通す

サーバに使用したハードウェアで設定が人により異なるのでここでの解説は割愛します.
以下の公式ドキュメントを参考にしてください
https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/

アプリケーションの設定をする

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の設定

ホスト側

https://support.parsec.app/hc/en-us/articles/32381368159124-Install-Parsec-App-on-Windows
↑の記事を参考にWindowsにParsecを入れます
ログイン後
Settings->Host->Hosting EnabledをEnabledにします

クライアント側

同様にParsecを入れます
ホスト側と同じアカウントでログインすると

ホストが表示されるのでConnectしたら遠隔操作できます.

おわりに

今回は家のデスクトップを遠隔起動から操作までできる環境を構築しました.
意外と便利なので試してみてください!

Discussion