/WakeOnLanBot

リモートでPCを起動する事を想定した、DiscordのBotです。

Primary LanguageTypeScript

WakeOnLanBot

リモート上からPCを起動する事を想定した、DiscordのBotです。外出先等から自宅のゲーミングPCを起動して、Steam Link等を使用して、お手元のスマートフォン、タブレット、ノートPC等で、外出先からゲームプレイが出来ます。

特徴

  • スラッシュコマンドを通じてDiscord上からPCを起動、シャットダウン、再起動出来ます。
  • PCの起動状態をBotのステータスからPCの状態を確認出来ます。

準備物

  • Botを起動しておくPC
    • Unix系OSにして下さい。
    • Raspberry Piでも構いません。
  • LAN
    • リモート上から起動させるPCとBotを起動しておくPCを同じLANに繋いで下さい。
  • Discordアカウント
    • 持っていればそれで大丈夫です。持ってない場合は作成して下さい。

使用する条件等

リモート上から起動させるPC

  • WindowsPC
  • Wake On LANに対応している。
  • OpenSSHを使用出来るようにセットアップして下さい。
    • 公開鍵認証でログイン出来るようにして下さい。

Botを起動しておくPC

  • Unix系OS(MacOS、Raspberry Pi OS等)
  • Node.js v18.3が実行可能である。
  • リモート上から起動させるPCと同じLANに接続されている。

セットアップ(簡易版)

Botの作成

  1. DiscordのBotを作成します。作成方法はこちらをご覧下さい。なお、Botの権限で、「applications.commands」の権限を付与して下さい。

    Botにコマンドの権限を付与する

  2. 作成したBotを任意のサーバーに招待して下さい。

Wake On LANの準備

  1. Windowsボタンを右クリック -> 「デバイスマネージャー」 -> 「ネットワークアダプター」 -> ネットワークアダプター名を右クリック -> 「プロパティ」 -> 「電源の管理」より、「このデバイスで、コンピューターのスタンバイ状態を解除できるようにする」と、任意で「Magic Packetでのみ、コンピューターのスタンバイ状態を解除できるようにする」にチェックを入れます。

    ネットワークアダプターからの電源オンを有効化

  2. 必要に応じて、電源プランやBIOSのファームウェアの設定を変更して下さい。

Pingの準備

Windowsではファイアウォールで、デフォルトでPingに応答しない設定になっている可能性があります。

  1. 「コントロールパネル」 -> 「Windows Defender ファイアウォール」 -> 「詳細設定」 -> 「受信の規則」に移動します。
  2. 規則一覧の中から「ファイルとプリンターの共有(エコー要求 - ICMPv4 受信)」と「ファイルとプリンターの共有(エコー要求 - ICMPv6 受信)」を有効化します。接続されているネットワークの種類(プライベート、パブリック)に合わせて有効化する規則を変えて下さい。 ファイアウォールの規則を有効にする

Botを起動しておくPCの準備

  1. このレポジトリのファイルをダウンロードして下さい。
  2. カレントディレクトリをこのフォルダに移動します。
  3. npm installと入力して必要なモジュール群をインストールします。
  4. sudo apt-get install etherwakeと入力してetherwakeをインストールします。
  5. ts-node WakeOnLanBot.tsと入力してBotのプログラムを起動します。
    • ts-nodeが存在しないと表示された場合は、node_modules/.bin/ts-node WakeOnLanBot.tsと入力しても動作します。
  6. 設定ファイルが生成されるのでテキストエディタで設定項目を記述します。
     {
     	"token": "<Botのトークン>",
     	"targetIPAddress": "<リモート上から起動させるPCのIPアドレス>",
     	"targetMacAddress": "<リモート上から起動させるPCのMACアドレス>",
     	"deviceName": "<リモート上から起動させるPCの名前>",
     	"userName": "<SSHのユーザー名>",
     	"port": 22,
     	"privateKeyFile": "<SSHの秘密鍵ファイルのパス>"
     }
  7. 再び5.を実行してBotを起動します。設定が正常であればBotがオンラインになります。
  8. 必要に応じでプログラムの自動実行を設定して下さい。

使用方法

  • Botがいるサーバーで/wolと入力するとBotが反応して対象のPCが起動します。
  • /shutdownと入力すると、確認の後、PCをシャットダウンします。
    • シャットダウンボタンは10秒以内に押して下さい。
  • /rebootと入力すると、確認の後、PCを再起動します。
    • 再起動ボタンは10秒以内に押して下さい。
  • /sleepと入力するとPCがスリープ状態になります。
    • 通常のスリープよりも深いスリープです(電源ランプが消える)。
    • 環境によっては正常にスリープに移行しない場合があります。

コマンドの反映に最大1時間程かかる場合があります。

注意事項

  • ちゃっちゃと作成したプログラムです。手厚いサポートは期待しないで下さい。