什么是 UpSnap ?
UpSnap
是使用SvelteKit
、Go
、PocketBase
和nmap
编写的简单局域网唤醒应用程序。
v3
更新日志:
-
⚙️ 后端:
- 用
Go
重写。之前的版本是Python
写的; - 不再支持不同的数据库。后端现在使用基于
SQLite
的PocketBase
; - 添加了使用密码唤醒事件的选项。如果您的网卡支持,您可以在
BIOS
中找到它,称为SecureOn
或smiliar
; PocketBase
提供了一个API
。可以登录localhost:8090/_/
,点击右上角的API reviewP·
- 用
-
🎨 前端:
- 从
Svelte
转换为SvelteKit
,并且几乎重写了所有内容; - 摆脱了模式。页面应该更加用户友好;
- 设备卡上更好的徽章以显示
cron
事件和密码保护;
- 从
-
通用:
- 大大减少资源需求;
- 单个二进制文件即可运行所有内容
- 反向代理不再需要自定义路由;
安装
在群晖上以 Docker 方式安装。
镜像下载
官方的镜像发布在 ghcr.io
,
地址:https://github.com/seriousm4x/UpSnap/pkgs/container/upsnap
用 SSH
客户端登录到群晖后,依次执行下面的命令
# 新建文件夹 upsnap 和子目录
mkdir -p /volume2/docker/upsnap/data
# 进入 upsnap 目录
cd /volume2/docker/upsnap
# 拉取镜像
## 需要注意:官方没有 latest ,所以需要自己去查最新的版本
docker pull ghcr.io/seriousm4x/upsnap:3.0.3
如果没有科学上网,很可能会拉不动,可以试试 docker
代理网站:https://dockerproxy.com/,但是会多几个步骤
# 如果拉不动的话加个代理
docker pull ghcr.dockerproxy.com/seriousm4x/upsnap:3.0.3
# 重命名镜像(如果是通过代理下载的)
docker tag ghcr.dockerproxy.com/seriousm4x/upsnap:3.0.3 ghcr.io/seriousm4x/upsnap:3.0.3
# 删除代理镜像(如果是通过代理下载的)
docker rmi ghcr.dockerproxy.com/seriousm4x/upsnap:3.0.3
下载完成后,可以在 映像
中找到
命令行安装
如果你熟悉命令行,可能用 docker cli
更快捷
# 新建文件夹 upsnap 和 子目录
mkdir -p /volume2/docker/upsnap/data
# 进入 upsnap 目录
cd /volume2/docker/upsnap
# 运行容器
docker run -d \
--restart unless-stopped \
--network host \
--name upsnap \
-v $(pwd)/data:/app/pb_data \
ghcr.io/seriousm4x/upsnap:3.0.3
也可以用 docker-compose
安装,将下面的内容保存为 docker-compose.yml
文件
这是完整的官方版本
version: "3"
services:
upsnap:
image: ghcr.io/seriousm4x/upsnap:3.0.3
container_name: upsnap
network_mode: host
restart: unless-stopped
volumes:
- ./data:/app/pb_data
healthcheck:
test: wget --no-verbose --tries=1 --spider http://localhost:8090/api/health || exit 1
interval: 1m
timeout: 10s
retries: 3
# environment:
# - TZ=Europe/Berlin # Set container timezone for cron schedules
# - UPSNAP_INTERVAL=@every 10s # 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_WEBSITE_TITLE=Custom name # Custom website title
# command: ["./upsnap", "serve", "--http", "0.0.0.0:8090"] # Uncomment this if you want to change the port for example
然后执行下面的命令
# 新建文件夹 upsnap 和 子目录
mkdir -p /volume2/docker/upsnap/data
# 进入 upsnap 目录
cd /volume2/docker/upsnap
# 将 docker-compose.yml 放入当前目录
# 一键启动
docker-compose up -d
运行
在浏览器中输入 http://群晖IP:8090
就能看到主界面
添加设备
进设置里添加设备
添加完成之后,回到首页会出现设备卡片
点①可以直接网络唤醒
唤醒之后,开关按钮会变绿
点②则显示该设备的详细信息
尝试再添加个端口,比如 SSH
使用的22
设备卡片上会增加
网络扫描
如果觉得一台一台添加麻烦,也可以直接用网络扫描
速度还是比较快的,但存在缺漏
点设备后面的 Add +
,返回首页
API
PocketBase
提供了 API
,浏览器中打开 http://群晖IP:8090/_/
注册账号之后,进入主界面
右上角 API Preview
日志
最后来一张官网的图
参考文档
seriousm4x/UpSnap: A simple wake on lan app written with SvelteKit, Go, PocketBase and nmap
地址:https://github.com/seriousm4x/UpSnap
UpSnap v3 is out and rewritten in Go : selfhosted
地址:https://www.reddit.com/r/selfhosted/comments/10rz7jc/upsnap_v3_is_out_and_rewritten_in_go/