首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Docker一键部署UpSnap:打造专属的局域网设备唤醒控制台

Docker一键部署UpSnap:打造专属的局域网设备唤醒控制台

原创
作者头像
江湖有缘
发布2026-08-23 21:08:49
发布2026-08-23 21:08:49
1220
举报
文章被收录于专栏:Docker项目实战Docker项目实战

一、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正常运行。

代码语言:bash
复制
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版本

代码语言:bash
复制
root@jeven:~# docker -v
Docker version 28.5.0, build 887030f

3.3 检查docker compose 版本

检查Docker compose版本,确保2.0以上版本。

代码语言:bash
复制
root@jeven:~# docker compose version
Docker Compose version v2.39.4

四、拉取UpSnap文件传输工具镜像

下载UpSnap镜像,执行以下命令:

代码语言:bash
复制
docker pull ghcr.io/seriousm4x/upsnap:5
在这里插入图片描述
在这里插入图片描述

五、部署UpSnap服务

5.1 创建部署目录

  • 创建部署目录
代码语言:bash
复制
mkdir -p /data/upsnap/  && cd /data/upsnap/

5.2 docker compose方式部署

新建及编辑docker-compose.yaml文件,由于使用host模式,注意防止宿主机8090端口冲突。

代码语言:bash
复制
vim docker-compose.yaml
代码语言: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容器。

代码语言:bash
复制
docker compose up -d
在这里插入图片描述
在这里插入图片描述

5.4 查看UpSnap容器状态

检查UpSnap容器运行状态,确保UpSnap容器正常启动。

代码语言:bash
复制
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服务正常运行。

代码语言:bash
复制
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 自动化运维的理想选择。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、UpSnap介绍
    • 1.1 UpSnap简介
    • 1.2 UpSnap主要特点
  • 二、本次实践规划
    • 2.1 本地环境规划
    • 2.2 本次实践介绍
  • 三、本地环境检查
    • 3.1 检查Docker服务状态
    • 3.2 检查Docker版本
    • 3.3 检查docker compose 版本
  • 四、拉取UpSnap文件传输工具镜像
  • 五、部署UpSnap服务
    • 5.1 创建部署目录
    • 5.2 docker compose方式部署
    • 5.3 创建UpSnap容器
    • 5.4 查看UpSnap容器状态
    • 5.5 检查UpSnap容器日志
  • 六、访问UpSnap服务
    • 6.1 访问UpSnap首页
    • 6.2 创建账户
    • 6.3 添加设备
  • 七、总结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档