UpSnap:关机设备用 Web 页面唤醒,Go + SvelteKit + PocketBase 的 WOL 实现
项目地址:github.com/seriousm4x/UpSnap
UpSnap 是一个 Wake-on-LAN(WOL)Web 应用。后端 Go,前端 SvelteKit,数据存 PocketBase,MIT 协议,GitHub 6.2K+ Star。核心场景:设备关机后,用浏览器打开页面,点一下唤醒局域网里的机器。
为什么需要 UpSnap
你有一台 NAS,放在家里。白天为了省电,关机了。
下午在外面,想访问 NAS 上的文件。发现机器关着。
怎么办?打电话让家里人帮你按电源键?太蠢了。
Wake-on-LAN(WOL)就是来解决这个问题的。它通过发送一个特殊的网络包(Magic Packet),让关机状态的设备开机。前提是设备连着网线(或 WiFi 支持 WOL),并且 BIOS 里开启了 WOL 功能。
问题是,WOL 工具要么是命令行,要么是手机 App。命令行记不住参数,手机 App 不在局域网内用不了。
你就想要一个 Web 页面:在任何设备上打开浏览器,点一下,设备就开机了。
UpSnap 就是干这个的。
UpSnap 是什么
| 项目 | 信息 |
|---|---|
| GitHub | github.com/seriousm4x/UpSnap |
| Star | 6.2K+ |
| 语言 | Go(后端)+ SvelteKit(前端)+ PocketBase(数据库) |
| 协议 | MIT |
| 定位 | WOL Web 应用 |
| 特色 | 一键唤醒、定时任务、网络扫描、多平台 Docker |
UpSnap 不只是一个 WOL 工具。它是一个完整的 Web 应用,让你通过网络管理所有需要远程唤醒的设备。
你可以:
- 一键唤醒设备
- 定时唤醒(cron 任务)
- 扫描局域网,自动发现设备
- 远程关机(需要设备支持)
- 检查设备是否在线(ping)
- 多用户权限管理
工作原理
Wake-on-LAN(WOL)
WOL 的原理很简单:
- 目标设备的网卡在关机状态下仍然待机,监听网络
- 你的设备发送一个 Magic Packet(魔术包)到目标设备的 MAC 地址
- 目标设备的网卡收到这个包,触发开机
Magic Packet 的格式:
6 个 FF(0xFF)+ 16 次目标设备的 MAC 地址
比如目标设备 MAC 是 AA:BB:CC:DD:EE:FF,Magic Packet 就是:
FF FF FF FF FF FF AA BB CC DD EE FF AA BB CC DD EE FF AA BB CC DD EE FF AA BB CC DD EE FF ...(重复 16 次)
这个包通过 UDP 广播发送到端口 7 或 9。
UpSnap 的架构
浏览器(你)
↓ HTTP
UpSnap Web 界面(SvelteKit)
↓ API
Go 后端
↓
├── PocketBase(SQLite 数据库,存设备信息)
└── WOL 模块(发送 Magic Packet)
UpSnap 是单二进制部署。一个可执行文件包含前后端,数据存在 SQLite 里。
快速开始
Docker 部署(推荐)
docker run -d \
--name upsnap \
--network host \
--restart unless-stopped \
-v upsnap_data:/app/pb_data \
ghcr.io/seriousm4x/upsnap:latest
--network host 很重要。WOL 需要发送广播包,必须在宿主机网络中才能到达局域网。
打开浏览器访问 http://你的IP:8090。
首次配置
- 访问
http://localhost:8090 - 创建管理员账号
- 扫描局域网设备或手动添加
手动添加设备
如果扫描不到,可以手动添加:
- 名称:我的 NAS
- MAC 地址:
AA:BB:CC:DD:EE:FF - IP 地址:
192.168.1.100(用于 ping 检测在线状态) - 端口:
9(WOL 端口)
一键唤醒
在 Dashboard 页面,点设备旁边的 "Wake" 按钮。
设备会在几秒到几十秒内开机(取决于设备启动速度)。
核心功能拆解
网络扫描
UpSnap 可以扫描你的局域网,自动发现设备。
Settings → Network → Scan
输入你的网段(如 192.168.1.0/24),UpSnap 会:
- ping 每个 IP,找出在线设备
- 通过 ARP 表获取 MAC 地址
- 尝试解析设备名称
扫描结果可以一键添加到设备列表。
定时唤醒
有些设备需要每天定时开机。比如:
- NAS 每天 8 点开机,晚上 11 点关机
- 办公电脑每天 8:30 开机,准备远程工作
UpSnap 支持 cron 表达式:
# 每天 8:00 唤醒
0 8 * * *
# 工作日 8:30 唤醒
30 8 * * 1-5
# 每 2 小时唤醒一次
0 */2 * * *
远程关机
WOL 只能开机,不能关机。但 UpSnap 支持通过 SSH 命令远程关机。
在设备设置里配置 SSH 命令:
ssh user@192.168.1.100 "sudo shutdown now"
UpSnap 会在需要关机时执行这个命令。需要配置 SSH 密钥免密登录。
在线状态检测
UpSnap 定期 ping 设备 IP,检测设备是否在线。
Dashboard 上会显示设备状态:
- 🟢 在线
- 🔴 离线
- 🟡 未知(ping 不通,可能是防火墙)
多用户权限
UpSnap 支持多用户,可以分配权限:
- 管理员:完全权限
- 普通用户:只能唤醒设备,不能修改设置
- 只读用户:只能查看设备状态
适合团队使用。
主题和国际化
UpSnap 内置 35 个主题(明暗模式),支持多语言(i18n)。
Settings → General → Theme
支持的语言包括英语、德语、中文、法语、日语等。
实际使用场景
场景 1:远程 NAS 访问
你有一台 NAS 在家里,白天关机省电。
下午 3 点,在外面想访问 NAS 文件
→ 手机打开 UpSnap Web 页面
→ 点 "Wake" 唤醒 NAS
→ 等待 30 秒 NAS 启动
→ 通过 WebDAV/文件管理器访问 NAS
场景 2:办公室电脑远程办公
你有一台高配电脑在公司,家里用轻薄本。
早上 8:30,UpSnap 自动唤醒公司电脑
→ 你在家打开轻薄本
→ 通过远程桌面连接公司电脑
→ 开始工作
场景 3:家庭媒体服务器
你有一台 HTPC(家庭影院电脑),平时关机,看电影时开机。
晚上想看电影
→ 手机打开 UpSnap
→ 唤醒 HTPC
→ 等它启动
→ 打开 Kodi/Plex 看电影
→ 看完后远程关机
场景 4:团队共享设备
小团队有几台测试机,大家共用。
测试机平时关机
→ 任何人需要时打开 UpSnap
→ 一键唤醒
→ 用完关机
→ Dashboard 上可以看谁在用
跟其他方案对比
| 维度 | UpSnap | WakeMeOnLan | WOL CLI | 手机 App |
|---|---|---|---|---|
| 类型 | Web 应用 | Windows 工具 | 命令行 | 移动 App |
| 平台 | 任何浏览器 | Windows | 全平台 | iOS/Android |
| 多设备管理 | ✅ | ✅ | ❌ | ✅ |
| 定时任务 | ✅ | ❌ | ❌ | ❌ |
| 远程关机 | ✅(SSH) | ❌ | ❌ | ❌ |
| 网络扫描 | ✅ | ✅ | ❌ | ❌ |
| 多用户 | ✅ | ❌ | ❌ | ❌ |
| Docker 部署 | ✅ | ❌ | ❌ | ❌ |
| 开源 | ✅ | ❌ | 部分 | 部分 |
| Star | 6.2K | - | - | - |
WakeMeOnLan 是 NirSoft 的 Windows 工具,功能强但是 Windows only。WOL CLI 工具轻量但功能少。手机 App 只能局域网用,出了 WiFi 就废了。
UpSnap 的优势在 Web 化和自动化。任何设备有浏览器就能用,定时任务解放双手。
不足
说几个用起来不太顺的地方:
依赖局域网。WOL 只能在局域网内发送 Magic Packet。如果你不在家里的局域网里,UpSnap 没法直接唤醒设备。需要家里有另一台常开的设备(如树莓派)运行 UpSnap,通过内网穿透访问。
WiFi 设备支持有限。WOL 主要通过有线网卡工作。WiFi 设备的 WOL 支持取决于网卡驱动和路由器,很多设备关机后 WiFi 就断了,无法唤醒。
远程关机需要配置 SSH。不是开箱即用的功能。需要配置 SSH 密钥、sudo 权限。对非技术用户有门槛。
没有移动端 App。只能用浏览器访问。虽然没有 App 也能用,但体验不如原生 App。
PocketBase 限制。UpSnap 用 PocketBase 做后端。PocketBase 是轻量级的,但不适合大规模部署。设备多了(几百台)可能会有性能问题。
适用场景
UpSnap 适合什么情况?
NAS 用户。NAS 平时关机省电,需要时远程唤醒。UpSnap 是最简单的方案。
远程办公。办公室电脑关机了,早上定时自动开机,到公司就能用。
家庭自动化。结合智能家居系统,UpSnap 可以响应语音命令("嘿 Siri,打开 NAS")。
小团队。多台共享设备,统一管理。谁在用、什么时候开的,Dashboard 一目了然。
网络管理员。管理公司里几十台设备,远程唤醒、状态监控、批量操作。
结语
WOL 技术早就有了,但工具形态一直有限:命令行参数多,手机 App 依赖局域网。
UpSnap 把 WOL 做成 Web 应用:浏览器访问,定时任务,多用户权限,网络扫描。Go + SvelteKit + PocketBase,MIT 协议,Docker 一行命令部署。
如果有 NAS、办公电脑或测试服务器需要远程开机,可以按上面的 Docker 命令部署。