Github https://github.com/Kaiyuan/go4wol
Wake-on-LAN
一个功能强大的Wake-on-LAN服务,带有现代化的PWA前端界面,专为群晖NAS的Docker环境设计。
version: '3.8'
services:
go4wol:
build: .
container_name: go4wol
restart: unless-stopped
network_mode: host # 使用host网络模式,确保能够发送广播包
# 注意:使用host网络模式时,ports映射会被忽略
ports:
- "52133:52133" # 在host网络模式下这行会被忽略,但保留以备切换到bridge模式
environment:
- PORT=52133
- ADMIN_PASSWORD=your_secure_password # 请修改为安全的密码
- TZ=Asia/Shanghai
volumes:
- ./data:/data:rw # 挂载数据目录到宿主机,注意确保 Docker 用户读写权限
user: "1000:1000" # 使用与容器内相同的用户ID
labels:
- "traefik.enable=true"
- "traefik.http.routers.go4wol.rule=Host(`go4wol.local`)"
- "traefik.http.services.go4wol.loadbalancer.server.port=52133"
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
image: kaiyuan/go4wol:latest
# 如果不能使用host网络模式,请使用以下配置
# services:
# go4wol:
# build: .
# container_name: go4wol
# restart: unless-stopped
# ports:
# - "52133:52133"
# environment:
# - PORT=52133
# - ADMIN_PASSWORD=your_secure_password
# - TZ=Asia/Shanghai
# volumes:
# - ./data:/data
# networks:
# - go4wol-network
# privileged: true # 可能需要特权模式来发送广播包
#
# networks:
# go4wol-network:
# driver: bridge
mkdir go4wol && cd go4wol
# 保存 main.go, Dockerfile, docker-compose.yml, deploy.sh
# 设置环境变量(推荐)
export ADMIN_PASSWORD="your_secure_password"
# 或者修改 docker-compose.yml 中的密码
# 给部署脚本添加执行权限
chmod +x deploy.sh
# 构建并部署服务
./deploy.sh deploy
POST /woljson
{
"mac": "AA:BB:CC:DD:EE:FF",
"broadcast": "192.168.1.255",
"port": 9
}
新增管理API
用户登录: POST /api/login
{
"password": "your_password"
}
获取设备列表: GET /api/devices
curl -H "Authorization: Bearer your_token" http://localhost:52133/api/devices
添加设备: POST /api/devices
{
"name": "办公电脑",
"mac": "AA:BB:CC:DD:EE:FF",
"broadcast": "192.168.1.255",
"port": 9,
"description": "我的办公电脑"
}
删除设备: DELETE /api/devices?id=1
方式1:Docker Compose(推荐)
# 修改 docker-compose.yml 中的密码
ADMIN_PASSWORD=your_secure_password
# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f go4wol
方式2:部署脚本
# 设置密码并部署
ADMIN_PASSWORD=your_secure_password ./deploy.sh deploy
# 其他管理命令
./deploy.sh stop # 停止服务
./deploy.sh restart # 重启服务
./deploy.sh logs # 查看日志
方式3:手动Docker命令
# 创建数据目录
mkdir -p ./data
# 运行容器
docker run -d \
--name go4wol \
--restart unless-stopped \
--network host \
-e PORT=52133 \
-e ADMIN_PASSWORD=your_secure_password \
-e TZ=Asia/Shanghai \
-v "$(pwd)/data:/data" \
-p 52133:52133 \
kaiyuan/go4wol:latest
通过Docker套件
构建镜像:
# SSH到群晖,上传文件到项目目录
cd /volume1/docker/go4wol
docker build -t go4wol:latest .
创建容器:
镜像:选择刚构建的 go4wol:latest
容器名称:go4wol
网络:使用与Docker Host相同的网络
端口设置:本地端口52133 -> 容器端口52133
环境变量:
PORT=52133
ADMIN_PASSWORD=your_secure_password
TZ=Asia/Shanghai
存储空间:挂载文件夹 /data 到宿主机路径
通过SSH部署
# SSH连接到群晖
ssh admin@your-synology-ip
# 创建项目目录
mkdir -p /volume1/docker/go4wol
cd /volume1/docker/go4wol
# 上传文件并部署
chmod +x deploy.sh
ADMIN_PASSWORD=your_secure_password ./deploy.sh deploy
容器内路径:/data/devices.db
宿主机路径:./data/devices.db
# 备份数据库
cp ./data/devices.db ./data/devices_backup_$(date +%Y%m%d).db
# 恢复数据(停止容器后)
docker stop go4wol
cp ./data/devices_backup_20240101.db ./data/devices.db
docker start go4wol
数据库结构
sql
CREATE TABLE devices (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
mac TEXT NOT NULL UNIQUE,
broadcast TEXT DEFAULT '255.255.255.255',
port INTEGER DEFAULT 9,
description TEXT DEFAULT '',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
| 变量 | 默认值 | 说明 |
|---|---|---|
| PORT | 52133 | 服务监听端口 |
| ADMIN_PASSWORD | admin123 | 管理员密码 |
| TZ | Asia/Shanghai | 时区设置 |
WOL包发送失败
# 检查网络模式
docker inspect go4wol | grep NetworkMode
# 确认目标设备支持WOL
# 检查BIOS/UEFI设置
# 确认网卡驱动支持WOL
无法访问前端页面
# 检查服务状态
docker logs go4wol
# 检查端口占用
netstat -tlnp | grep 52133
# 检查防火墙设置
数据库错误
# 检查数据目录权限
ls -la ./data/
# 重新创建数据库
rm ./data/devices.db
docker restart go4wol
登录问题
# 检查密码设置
docker exec go4wol printenv ADMIN_PASSWORD
# 清除浏览器存储
# 开发者工具 > Application > Local Storage > 清除
# 查看容器状态
docker ps -a | grep go4wol
# 查看详细日志
docker logs -f go4wol
# 进入容器调试
docker exec -it go4wol sh
curl http://localhost:52133/health
curl -X POST http://localhost:52133/wol \
-H 'Content-Type: application/json' \
-d '{"mac":"AA:BB:CC:DD:EE:FF"}'
本项目采用MIT许可证。
欢迎提交Issue和Pull Request来改进这个项目!
Go4WOL - 让设备唤醒变得简单高效! 🚀
Content type
Image
Digest
sha256:ce7b8f3b9…
Size
20.6 MB
Last updated
3 months ago
docker pull kaiyuan/go4wol:v3.0.1