【Docker项目实战】使用Docker部署UpSnap开源局域网唤醒工具

举报
江湖有缘 发表于 2025/12/25 14:06:44 2025/12/25
【摘要】 【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 自动化运维的理想选择。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。