今天想和大家分享一个非常实用的开源工具——UpSnap。它本质上是一个自托管的 Web 应用,核心功能就是帮你通过网页,轻松唤醒(Wake-on-LAN)局域网里任何支持网络唤醒的电脑或设备。作为一款总容量仅约 10MB 的轻量级应用,它却拥有相当丰富的管理功能,对于家庭或小型团队的设备管理场景来说,是一个绝佳的选择。

项目简介
UpSnap 是一个用 SvelteKit、Go 和 PocketBase 构建的简单 Web 应用程序。它的诞生源于一个非常实际的场景:开发者所在公司需要一个能够通过网页界面远程唤醒内部设备的工具。于是,他便动手开发了这个项目,并将其完全开源。
项目的初衷很明确:为日常的设备管理提供一个免费、易用且功能完备的解决方案。截至目前,这个 开源项目 在 GitHub 上已经收获了超过 5.2k 的 Star,社区活跃度相当不错。
核心功能亮点
UpSnap 远不止是发送一个“魔术包”那么简单。它提供了一套完整的设备管理体系:
- 直观的一键唤醒仪表盘:将你所有设备的 MAC 地址和 IP 配置好后,它们会以清晰的卡片形式展示在网页上。需要唤醒哪台设备,点击对应的按钮即可,操作极其简单。
- 强大的定时任务(Cron):这是自动化管理的核心。你可以通过 Cron 表达式 设置定时任务。例如,让公司的开发服务器每天早晨 8 点自动开机,或者让 NAS 在每周五晚上定时启动进行数据备份。设置好后,完全无需人工干预。
- 便捷的网络设备扫描:如果你不想手动输入大量设备的 IP 和 MAC 地址,这个功能能帮你大忙。在服务器上安装好 nmap 后,UpSnap 可以直接扫描指定的网段(如
192.168.1.0/24),自动发现并列出局域网内的设备,极大简化了初始化配置。
- 实时的设备状态监控:UpSnap 不仅负责唤醒,还会持续(或按你设置的间隔)去 Ping 你的设备。在管理界面上,设备会明确显示“在线”或“离线”状态,让你对设备情况一目了然。
- 完善的多用户与权限管理:它并非单用户玩具。系统内置了用户管理系统,管理员可以创建多个用户,并精细地为每个用户分配设备的管理权限。这意味着你可以安全地把它部署在家庭或团队中,让家人管理客厅的电视,而服务器则由运维同事专门负责。
- 高度可定制的外观:应用支持多国语言(i18n),并内置了多达 35 种主题样式,这让它摆脱了许多技术工具粗糙的界面印象,变得美观且个性化。
使用 Docker 快速部署
使用 Docker 部署 UpSnap 是最简单快捷的方式。它支持多种架构(amd64, arm64 等),非常适合部署在树莓派或 NAS 上。
1. 创建项目目录
首先,创建一个目录用于存放配置和数据。
mkdir -p ~/upsnap && cd ~/upsnap
2. 创建 Docker Compose 配置文件
创建 docker-compose.yml 文件,将以下配置复制进去。
version: '3.8'
services:
upsnap:
image: ghcr.io/seriousm4x/upsnap:latest
container_name: upsnap
restart: unless-stopped
ports:
- "8090:8090" # 左侧8090可改为你喜欢的端口
volumes:
- ./data:/app/data # 配置文件存储位置
- /var/run/docker.sock:/var/run/docker.sock:ro # 可选:用于Docker容器管理
environment:
- TZ=Asia/Shanghai # 设置时区
- POCKETBASE_DATA_DIR=/app/data
# 如果需要扫描网络发现设备,添加以下配置:
# cap_add:
# - NET_ADMIN
# - NET_RAW
network_mode: "host" # 使用host网络模式以便访问局域网
注意:network_mode: "host" 模式让容器共享宿主机的网络命名空间,这对于发送局域网广播包(Wake-on-LAN)和进行网络扫描至关重要。
3. 启动 UpSnap 服务
运行以下命令来启动容器。
# 给数据目录权限
sudo mkdir -p ./data && sudo chmod 777 ./data
# 启动服务
docker-compose up -d
# 检查运行状态
docker-compose ps
# 查看日志(可选)
docker-compose logs -f
4. 防火墙设置
如果您的服务器启用了防火墙,需要开放 UpSnap 的 Web 访问端口(默认为 8090)。
# 如果使用UFW
sudo ufw allow 8090/tcp
sudo ufw reload
# 如果使用firewalld
sudo firewall-cmd --permanent --add-port=8090/tcp
sudo firewall-cmd --reload
部署完成后,在浏览器中访问 http://你的服务器IP:8090 即可进入 UpSnap 的管理界面。初始登录账户为 admin@example.com,密码是 admin,请务必在首次登录后立即修改。
界面与功能预览
登录后,你将看到一个清晰的管理面板。所有已添加的设备会以卡片形式展现,并实时显示其在线状态。

在设置界面,你可以灵活地配置诸如 Ping 间隔、网站标题等全局选项。

添加新设备时,除了手动填写 IP地址、MAC地址 等基本信息,还可以直接使用网络扫描功能,自动发现局域网内的设备。

每个设备都可以进行详细配置,包括自定义 Ping 命令、设置定时唤醒/关机 Cron 任务、分配权限组等。

管理员可以在用户管理页面创建新用户,并精确控制每个用户对每台设备的读、写、删除以及唤醒/关机权限。

总结
UpSnap 完美地解决了远程唤醒设备的需求痛点,并将简单的唤醒操作扩展成了一个轻量级的自托管设备管理平台。其 Docker 部署方式极其友好,功能覆盖了从自动发现、状态监控到定时任务和精细权限控制的完整闭环。
对于需要管理多台局域网设备(如家庭服务器、办公电脑、智能设备)的用户或小型团队而言,UpSnap 提供了一个近乎完美的、私有的、可控的解决方案。如果你也厌倦了每次需要远程开机都要折腾一番,不妨试试这个工具。
项目开源地址:https://github.com/seriousm4x/UpSnap
在 云栈社区 的 开源实战 板块,你还可以发现更多类似 UpSnap 这样能提升效率的优质开源项目。欢迎持续关注,共同探索好用的开发者工具。