【Docker项目实战】使用Docker部署UpSnap开源局域网唤醒工具
一、UpSnap介绍
1.1 UpSnap简介
UpSnap是一款基于 SvelteKit、Go 和 PocketBase 构建的免费开源网络唤醒(Wake-on-LAN)Web 应用,旨在让用户通过直观的界面轻松远程唤醒局域网内的设备。它完全免费、可自托管,并始终以开放源代码的形式提供。
1.2 UpSnap主要特点
- 一键唤醒设备:通过简洁的仪表盘实现单击唤醒指定设备。
- 定时唤醒任务:支持通过 Cron 表达式设置自动化唤醒计划。
- 自定义端口 Ping 检测:可对任意端口执行连通性检测,判断设备状态。
- 网络设备发现:集成 nmap 实现局域网内设备自动扫描与识别。
- 安全用户管理:基于 PocketBase 提供多用户认证与权限控制。
- 多语言支持(i18n):内置多种语言界面,提升全球用户使用体验。
- 35 种主题样式:提供丰富的视觉主题,满足个性化外观需求。
- 全平台 Docker 支持:官方提供 amd64、arm64、arm/v7、arm/v6 架构的 Docker 镜像。
- 完全自托管:用户可自由部署在私有服务器上,保障数据隐私与控制权。
二、本次实践规划
2.1 本地环境规划
本次实践为个人测试环境,操作系统版本为 Ubuntu 24.04.2 LTS。
| hostname | IP地址 | 操作系统版本 | Docker版本 | 部署项目 | 备注 |
|---|---|---|---|---|---|
| jeven | 192.168.3.88 | Ubuntu 24.04.2 LTS | 28.5.0 | UpSnap | —— |
2.2 本次实践介绍
1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下部署UpSnap开源局域网唤醒工具。
三、本地环境检查
3.1 检查Docker服务状态
检查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

3.2 检查Docker版本
检查Docker版本
root@jeven:~# docker -v
Docker version 28.5.0, build 887030f
3.3 检查docker compose 版本
检查Docker compose版本,确保2.0以上版本。
root@jeven:~# docker compose version
Docker Compose version v2.39.4
四、拉取UpSnap文件传输工具镜像
下载UpSnap镜像,执行以下命令:
docker pull ghcr.io/seriousm4x/upsnap:5

五、部署UpSnap服务
5.1 创建部署目录
- 创建部署目录
mkdir -p /data/upsnap/ && cd /data/upsnap/
5.2 docker compose方式部署
新建及编辑docker-compose.yaml文件,由于使用host模式,注意防止宿主机8090端口冲突。
vim docker-compose.yaml
services:
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"
5.3 创建UpSnap容器
执行以下命令,创建UpSnap容器。
docker compose up -d

5.4 查看UpSnap容器状态
检查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)
5.5 检查UpSnap容器日志
检查容器运行日志,确保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/_/

六、访问UpSnap服务
6.1 访问UpSnap首页
浏览器地址:
http://<个人的服务器IP>:8090,访问UpSnap初始页。如果无法访问,请确保宿主机的防火墙已关闭或已放行相关端口,对于云服务器还需配置相应的安全组规则。

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

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

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


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


七、总结
本次实践成功通过 Docker Compose 在本地环境中部署了 UpSnap 开源局域网唤醒工具,验证了其一键部署与跨平台兼容性。整个流程操作简洁,依赖明确,尤其适合家庭或小型办公网络环境使用。UpSnap 提供的 Web 界面友好、功能丰富,结合定时任务与设备发现能力,极大提升了远程管理设备的便利性。作为完全免费且可自托管的开源项目,UpSnap 是实现 Wake-on-LAN 自动化运维的理想选择。
- 点赞
- 收藏
- 关注作者
评论(0)