开启WOL实现家用台式机远程开关机

发布于 2026年06月27日

基础环境配置

1、开始准备

1、主板型号:华硕大师Prime Z890-p wifi

2、系统win11

3、安装主板对应的网卡驱动:https://www.asus.com.cn/motherboards-components/motherboards/prime/prime-z890-p-wifi/helpdesk_download/?model2Name=PRIME-Z890-P-WIFI

4、已刷入Openwrt的路由器或者有NAS也行

5、有公网服务器-能实现在外地开关机。没有公网服务器的话,只能局域网内使用手机来开关机。

其中1、2、3不用必须和我的一样,只是我这里的环境是这样。4的话在内网有长期不用关机的linux系统也可以。

2、主板BIOS设置

电脑开机出现华硕Logo时快速按下F2键,界面上选择简体中文,然后再按F7进入高级设置,找到高级电源管理,设置如下,设置完成以后按下F10保存,自动重启电脑。

3、有线网卡设置

进入系统后,首先安装好对应的网卡驱动。点击此电脑-管理-打开设备管理器,在网络适配器中找到有线网卡。打开网卡属性-高级里面将

关机 网络唤醒、魔术封包唤醒、样式比对唤醒的值设置成开启。将节能环保、节能乙太网络的值设置成关闭。同样在网卡属性中的电源管理里面设置如下:

4、关闭系统快速启动

快速启动会导致关机不完全,影响 WOL。

· 进入 “控制面板” → “硬件和声音” → “电源选项” → “选择电源按钮的功能”。

· 点击页面上方的 “更改当前不可用的设置”。

· 在关机设置下方,取消勾选“启用快速启动(推荐)”,保存修改。

远程控制开关机

方法一:在openwrt路由器上插件

主要安装luci-app-wol(用来实现开机)和luci-app-commands(发送自定义命令实现关机)这2个插件。

配合公网服务器,可以在公网服务器上部署VPN服务器端或FRP服务,在路由器上和手机上安装VPN客户端。实现远程开机。登录路由器控制台,选择对应要唤醒的主机,点击唤醒主机即可实现开机。

关机的话是通过自定义命令来实现关机。因为我电脑上安装了RustDesk客户端,只要电脑开机了,我就可以通过RustDesk来远程关机。我这里暂时就没有使用自定义命令来关机。

方法二:在NAS或linux上部署Upsnap来实现开关机

upsnap比较好一点就是可以定时开关机,当然在openwrt中配合计划任务也能实现定时开关机。可以使用二进制部署或者docker部署。项目地址是:https://github.com/seriousm4x/UpSnap

路由器是arm64或者支持docker的话,也可以直接在路由器上部署Upsnap。

二进制部署

https://github.com/seriousm4x/UpSnap/releases/download/5.4.1/UpSnap_5.4.1_linux_arm64.zip

下载二进制包,解压放入/opt/upsnap目录,创建服务文件,内容如下。

#在oect刷入的armbian系统上部署二进制upsnap服务
root@armbian:~# cat /etc/systemd/system/upsnap.service 
[Unit]
Description=UpSnap - Wake-on-LAN web server
After=network.target

[Service]
Type=simple
ExecStart=/opt/upsnap/upsnap serve --http=0.0.0.0:9000
WorkingDirectory=/opt/upsnap
Restart=on-failure
RestartSec=5
User=root

[Install]
WantedBy=multi-user.target
root@armbian:~# 
#开机自启动
systemctl enable --now upsnap.service 
#首次启动后需要去日志中找到upsnap给出的一个链接,浏览器中打开链接进行注册一下。
journalctl -u upsnap.service  -f
#后续访问 局域网设备ip:9000 即可。同样的也可以配合VPN或FRP服务来实现远程使用upsnap服务

在支持arm64架构的openwrt路由器上通过二进制部署,下载二进制包,解压放入/opt/upsnap目录

#创建/etc/init.d/upsnap 文件
#root@ImmortalWrt:~# cat /etc/init.d/upsnap 
#!/bin/sh /etc/rc.common
START=99
USE_PROCD=1
PROG=/opt/upsnap/upsnap

start_service() {
    procd_open_instance
    procd_set_param command "$PROG" serve --http=0.0.0.0:9000
    procd_set_param respawn
    procd_set_param stdout 1
    procd_set_param stderr 1
    procd_close_instance
}
root@ImmortalWrt:~# chmod +x /etc/init.d/upsnap 
#启动服务
 /etc/init.d/upsnap enable
 /etc/init.d/upsnap start
#查看日志 
##首次启动后需要去日志中找到upsnap给出的一个链接,浏览器中打开链接进行注册一下。
logread|grep upsnap 
#后续访问 局域网设备ip:9000 即可。同样的也可以配合VPN或FRP服务来实现远程使用upsnap服务

docker部署

#默认端口是8090
docker run --network=host seriousm4x/upsnap:latest

项目中给出的反向代理配置示例

Caddy example

upsnap.example.com {
    reverse_proxy localhost:8090
}
Run in sub path

You can run UpSnap on a different path than /, e.g. /upsnap-sub-path/. To do this in caddy, set the following:

http://localhost:8091 {
    handle /upsnap-sub-path/* {
        uri strip_prefix /upsnap-sub-path
        reverse_proxy localhost:8090
    }
}

Or nginx:

http {
    server {
        listen 8091;
        server_name localhost;
        location /upsnap-sub-path/ {
            proxy_pass http://localhost:8090/;
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

upsnap添加设备

访问 http://192.168.8.1:9000/device/new/

主要填写名称、IP、MAC地址、子网掩码即可。滑到页面最后点保存即可。

如果需要定时开机填写一下 cron表达式。以下代表每天早上8点定时开机

定时关机。通常在 Windows 上使用 net rpc, Linux上使用 sshpass upsnap界面上有命令示例可以参考。

附:OECT刷入armbian后通过wol唤醒

apt install ethtool 
#检查是否支持wol,
#eth0 是有线网卡的名称,Supports Wake-on说明支持WOL
root@armbian:~# ethtool eth0|grep Wake
	Supports Wake-on: ug
	Wake-on: d
root@armbian:~# 
#开启wol
echo "ethtool -s eth0 wol g" >>/etc/rc.local 
#记录下设备的ip 和mac地址
ip a  s dev eth0
#后续的步骤同上

每天晚上23点定时关机



评论