wake-on lan GUI (Docker Compose)

投稿者: | 1月 6, 2025

昭和の時代は、会社には、ラボがあって、ある程度機材が会社にあったが、今はラボを持っている会社はあまりないのではと思う。そう、クラウドがあるからいらない。

昭和時代を知っている人は、「会社にラボがないのはおかしい」というが、会社にラボをおくって、

  • 専用の部屋でセキュリティで入室管理
  • 冷却は、エアコンではなく、そこそこの冷却設備(エアコンでもいいが。)
  • 電源は壁コンセントではなく、専用電源(電源管理をしないと火事になる。壁コンセントでサーバ機材を動かすなんてもってのほか。)
  • 火災報知器の設置
  • ネットワーク機器の設定(ラボのDHCPが漏れて、全社員ラボのIPアドレスとかしゃれにならない。)

まぁ、すべてではないが、これらがあって初めてラボ機材が置ける。一体、いくらかかるんだろうか。。。では、自分の席におくと考えるが、会社の席にサーバ機材置いて、夜中にリモートで入って、マシンをぶん回したら、テーブルタップから煙が出た。という話もある。なので、会社のITの人間は、電源入れっぱなしの機材が自席に置いてあると電源を抜いてしまうとか。(実話)

一方、ホームラボって、上記のようなことは必須ではないが、自分でやらなければならない。一番、痛い思いをするのが電気代。電気代がバカにならない。夏はエアコンもかけっぱなしになる。いくらお金(電気)があっても足りない。そこで、Wake On LANの出番になる。昔のBuffaloの一部のルータには、Wake on LANの機能が付いていたが、今は見当たらない。

自分の場合、EdgeRouterにsshでログインをして、

sudo etherwake -i ethX MAC_address

少し待って

ping IP_address

めんどくさい。

 

閑話休題

 

Radditで以下を発見

https://www.reddit.com/r/selfhosted/comments/121pxol/wake_on_lan_gui_on_docker_container/?rdt=57500

https://github.com/Misterbabou/gptwol

これを使うとWeb GUIで電源ONができる。QnapのDockerで動かしてみた。QNAPは、電源入れっぱなしなのでちょうどいい。

動作条件としては、

  • Docker環境と同じネットワークセグメントに電源オンにするサーバが存在(別ネットワークはだめ)
  • BIOS設定でWake On Lanパケットで電源がオンになるようになっている。
  • 電源がオンになると固定IPアドレスが付与される。(DHCPの場合は、静的なアドレスを振る必要がある)
  • Pingあるいは、ポートが開いている

のが条件になる。

 

以下のDocker Composeで起動。

ネットワークは、NATではダメで、Bridgeじゃないと動作しない。設置パス、ポートなどは自分の構成で書き換えること。

mkdir -p /PATH/TO/gptwol
cd /PATH/TO/gptwol
cat << EOF > docker-compose.yml
services:
gptwol:
  container_name: gptwol
  image: misterbabou/gptwol:latest
  network_mode: host
  restart: always
  environment:
    - PORT=18081 #Free Port on Your host; default is 5000
    - TZ=Asia/Tokyo #Set your timezone for Cron; default is UTC
    #- SCRIPT_NAME=/my-app #Uncomment this line to run the app under a prefix
    #- DISABLE_ADD_DEL=1 #Uncomment this line to disable Add or delete Computers; default is to allow
    #- DISABLE_REFRESH=1 #Uncomment this line to prevent your browser to refresh Computer status; default is to allow
    #- REFRESH_INTERVAL=15 # Uncomment this line to change status check for icmp ou tcp, can be 15 or 60 (seconds); default value is 30 seconds
    #- PING_TIMEOUT=200 #Uncomment this line to change the time to wait for a ping answer in (in ms); default value is 300 milliseconds
    #- TCP_TIMEOUT=5 #Uncomment this line to change the time to wait for a tcp check (in s); default value 1 second
  volumes:
    - ./computers.txt:/app/computers.txt
    - ./appdata/cron:/etc/cron.d
EOF
touch computers.txt
docker compose up -d
http://Docker_host:portにアクセスするとWeb GUIが開くので
Nama:適当な名前
IP address: 電源がオンになった場合に、割り振られるはずのアドレス
Status Check: icmp (Ping)あるいはPort番号
 
 
登録されると、電源の状態の表示、電源オンができる。
 
 
ちなみに、設定自体は、computers.txtに個々の設定がカンマ区切りで1行1行永続保存される。
 
これは、便利だわ。おまけにDockerなので、NASで動作できてしまう。もう、EdgeRouterにログインする必要もなくなった。この名前の通り、Chat GPTに作ってもらったみたいだけど、確かに、必要は発明の母、母はAIに聞いていたというのが一般的になりそう。必要を思いつくのが、これからは重要なスキルになるのではないかと。まぁ、誰がいったんですか?どこに書いてあったんですか?サポーティブですかの世界の人とは無縁な話なのは変わりはない。
 
Intel NUC / Dell Optiplex(WOLをオンにし、Deep Sleepを無効にする) / ASROCKのマシンの電源をオンにできた。
 
しかし、Wake On LANも便利だが、リモートでNMIもキックできると最高なんだけどなぁ。

コメントを残す