
UpSnap是一款基于 SvelteKit、Go 和 PocketBase 构建的免费开源网络唤醒(Wake-on-LAN)Web 应用,旨在让用户通过直观的界面轻松远程唤醒局域网内的设备。它完全免费、可自托管,并始终以开放源代码的形式提供。
本次实践为个人测试环境,操作系统版本为 Ubuntu 24.04.2 LTS。
hostname | IP地址 | 操作系统版本 | Docker版本 | 部署项目 | 备注 |
|---|---|---|---|---|---|
jeven | 192.168.3.88 | Ubuntu 24.04.2 LTS | 28.5.0 | UpSnap | —— |
1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下部署UpSnap开源局域网唤醒工具。
检查Docker服务是否正常运行,确保Docker正常运行。
root@jeven:~# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
Active: active (running) since Tue 2025-12-02 00:51:31 CST; 1min 11s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 75393 (dockerd)
Tasks: 32
Memory: 34.1M (peak: 34.8M)
CPU: 1.248s
CGroup: /system.slice/docker.service
检查Docker版本
root@jeven:~# docker -v
Docker version 28.5.0, build 887030f检查Docker compose版本,确保2.0以上版本。
root@jeven:~# docker compose version
Docker Compose version v2.39.4下载UpSnap镜像,执行以下命令:
docker pull ghcr.io/seriousm4x/upsnap:5
mkdir -p /data/upsnap/ && cd /data/upsnap/新建及编辑docker-compose.yaml文件,由于使用host模式,注意防止宿主机8090端口冲突。
vim docker-compose.yamlservices:
upsnap:
container_name: upsnap
image: ghcr.io/seriousm4x/upsnap:5 # images are also available on docker hub: seriousm4x/upsnap:5
network_mode: host
restart: unless-stopped
volumes:
- ./data:/app/pb_data
# # To use a non-root user, create the mountpoint first (mkdir data) so that it has the right permission.
# user: 1000:1000
# environment:
# - TZ=Europe/Berlin # Set container timezone for cron schedules
# - UPSNAP_INTERVAL=*/10 * * * * * # Sets the interval in which the devices are pinged
# - UPSNAP_SCAN_RANGE=192.168.1.0/24 # Scan range is used for device discovery on local network
# - UPSNAP_SCAN_TIMEOUT=500ms # Scan timeout is nmap's --host-timeout value to wait for devices (https://nmap.org/book/man-performance.html)
# - UPSNAP_PING_PRIVILEGED=true # Set to false if you don't have root user permissions
# - UPSNAP_WEBSITE_TITLE=Custom name # Custom website title
# # dns is used for name resolution during network scan
# dns:
# - 192.18.0.1
# - 192.18.0.2
# # you can change the listen ip:port inside the container like this:
# entrypoint: /bin/sh -c "./upsnap serve --http 0.0.0.0:5000"
# healthcheck:
# test: curl -fs "http://localhost:5000/api/health" || exit 1
# interval: 10s
# # or install custom packages for shutdown
# entrypoint: /bin/sh -c "apk update && apk add --no-cache <YOUR_PACKAGE> && rm -rf /var/cache/apk/* && ./upsnap serve --http 0.0.0.0:8090"执行以下命令,创建UpSnap容器。
docker compose up -d
检查UpSnap容器运行状态,确保UpSnap容器正常启动。
root@jeven:/data/upsnap# docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
upsnap ghcr.io/seriousm4x/upsnap:5 "./upsnap serve --ht…" upsnap 22 seconds ago Up 22 seconds (healthy)检查容器运行日志,确保UpSnap服务正常运行。
root@jeven:/data/upsnap# docker compose logs
upsnap | [INFO] 2025/12/22 11:11:49 pb.go:272: Ping interval set to */3 * * * * *
upsnap | 2025/12/22 11:11:49 Server started at http://0.0.0.0:8090
upsnap | ├─ REST API: http://0.0.0.0:8090/api/
upsnap | └─ Dashboard: http://0.0.0.0:8090/_/
浏览器地址:
http://<个人的服务器IP>:8090,访问UpSnap初始页。如果无法访问,请确保宿主机的防火墙已关闭或已放行相关端口,对于云服务器还需配置相应的安全组规则。

我们点击“Next”下一步,进入账号设置页面。

自行设置账号密码,确认创建。

点击“Lets go!”,进入UpSnap首页。


添加设备的IP地址和MAC地址等信息,保存即可。


本次实践成功通过 Docker Compose 在本地环境中部署了 UpSnap 开源局域网唤醒工具,验证了其一键部署与跨平台兼容性。整个流程操作简洁,依赖明确,尤其适合家庭或小型办公网络环境使用。UpSnap 提供的 Web 界面友好、功能丰富,结合定时任务与设备发现能力,极大提升了远程管理设备的便利性。作为完全免费且可自托管的开源项目,UpSnap 是实现 Wake-on-LAN 自动化运维的理想选择。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。