家里的 NAS、公司用的电脑、实验室的服务器,这些设备有一个共同的问题。
关机状态下,远程根本叫不醒它们。曾经有不少朋友折腾过折腾过 Wake-on-LAN 协议。
原理也很简单,就是往局域网里发一段包含目标设备 MAC 地址的特殊数据包,网卡收到就触发开机。
但真正用起来,门槛一直不低。要么靠路由器后台手动发包,要么写脚本,要么装一堆工具配半天。
直到最近,我在 GitHub 上发现了UpSnap这个开源工具。
基于 SvelteKit + Go + PocketBase 构建,把 Wake-on-LAN 这件事做成了一个干净的网页 Dashboard。
部署完之后,只需要打开浏览器,点一下按钮,就能远程把家里或者公司已经关机的机器唤醒。
功能不止这些,但有三个是真正让它与众不同的地方。
第一个是一键唤醒面板。所有设备以卡片形式列在 Dashboard 上,在线状态一目了然,点击即可发送唤醒指令。
不需要记 MAC 地址,不需要开终端。权限这块也做得比较细,管理员可以给不同用户分配设备级别的操作权限,谁能看、谁能开关、谁能编辑,各自独立控制。
此外,界面还提供 35 套主题,支持中文在内的 19 种语言,日常用着不别扭。
第二个是Cron 定时任务。比如每天早上 8:55 自动唤醒工作机,到办公室坐下来系统已经开好了。
或者凌晨低谷期自动唤醒 NAS 跑备份,跑完再定时关机。这种把重复操作交出去的感觉,用过就回不去。
第三个是网络扫描自动发现。依赖 nmap,扫一遍局域网,自动把设备列出来,选中加进去就能管理。不用手动填 IP 和 MAC,省了不少事。
安装非常简单,提供 Docker 一键部署方式,只需要执行如下一条命令即可:
dockerrun -d\--network host\--name upsnap\-v ./data:/app/pb_data\ghcr.io/seriousm4x/upsnap:4
执行完成后,访问http://localhost:8090,创建管理员账号,加设备,就能用了。
不想用 Docker 的,去 Releases 页面下对应平台的二进制文件,直接双击运行,支持 Windows、macOS 和 Linux 系统。
不过有两个坑,也需要提前跟大家说清楚。
第一个是前置条件。Wake-on-LAN 要生效,设备必须走有线网络连接,同时要在主板 BIOS 里把 WoL 选项打开。
不熟悉 BIOS 的话,搜一下自己的主板型号加 “Wake on LAN 开启”,基本都有教程。部署完发现唤不醒,十有八九卡在这里。
第二个是网络安全。关机命令底层是 shell 执行,一旦有人绕过鉴权拿到这个接口,等于拿到了局域网内一个 root shell,风险不小。
所以作者明确建议,不要把 UpSnap 直接暴露到公网。如果确实需要外网访问,正确姿势是先 VPN 进内网再操作,Wireguard 或 OpenVPN 都行。
这不是 Bug,是边界。清楚这个边界,用起来才放心。
Wake-on-LAN 本来是个冷门的网络功能,很多人知道有这东西,但从没真正跑通过。
UpSnap 做的事情,就是把这件事的门槛拉到最低。部署一次,之后全靠网页操作。设备的开关权,重新握回自己手里。
GitHub 项目地址:https://github.com/seriousm4x/UpSnap
今天的分享到此结束,感谢大家抽空阅读,我们下期再见,Respect!