编程 UpSnap:关机设备用 Web 页面唤醒,Go + SvelteKit + PocketBase 的 WOL 实现

2026-09-12 09:56:10

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 是什么

项目信息
GitHubgithub.com/seriousm4x/UpSnap
Star6.2K+
语言Go(后端)+ SvelteKit(前端)+ PocketBase(数据库)
协议MIT
定位WOL Web 应用
特色一键唤醒、定时任务、网络扫描、多平台 Docker

UpSnap 不只是一个 WOL 工具。它是一个完整的 Web 应用,让你通过网络管理所有需要远程唤醒的设备。

你可以:

  • 一键唤醒设备
  • 定时唤醒(cron 任务)
  • 扫描局域网,自动发现设备
  • 远程关机(需要设备支持)
  • 检查设备是否在线(ping)
  • 多用户权限管理

工作原理

Wake-on-LAN(WOL)

WOL 的原理很简单:

  1. 目标设备的网卡在关机状态下仍然待机,监听网络
  2. 你的设备发送一个 Magic Packet(魔术包)到目标设备的 MAC 地址
  3. 目标设备的网卡收到这个包,触发开机

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

首次配置

  1. 访问 http://localhost:8090
  2. 创建管理员账号
  3. 扫描局域网设备或手动添加

手动添加设备

如果扫描不到,可以手动添加:

  • 名称:我的 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 会:

  1. ping 每个 IP,找出在线设备
  2. 通过 ARP 表获取 MAC 地址
  3. 尝试解析设备名称

扫描结果可以一键添加到设备列表。

定时唤醒

有些设备需要每天定时开机。比如:

  • 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 上可以看谁在用

跟其他方案对比

维度UpSnapWakeMeOnLanWOL CLI手机 App
类型Web 应用Windows 工具命令行移动 App
平台任何浏览器Windows全平台iOS/Android
多设备管理
定时任务
远程关机✅(SSH)
网络扫描
多用户
Docker 部署
开源部分部分
Star6.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 命令部署。

参考链接

复制全文 生成海报 Go Wake-on-LAN Docker PocketBase SvelteKit 运维

推荐文章

程序员茄子在线接单