通过 HTTP 请求从外网使用 WOL 唤醒内网机器的项目。此项目使用 .NET 6 进行构建,并支持 Docker 容器化运行,兼容多个平台。
- 使用 .NET 6 开发。
- 支持跨平台。
- 内置 Dockerfile,支持 Docker 构建。
- 基于配置的 MAC 地址列表进行唤醒。
- 通过Docker的方式支持软路由环境下的部署。
一键启动脚本:
bash <(curl -Ls https://raw.githubusercontent.com/cr-zhichen/RemoteWakeUp/main/remote_wakeup.bash)
从 DockerHub 拉取和运行
- 从 DockerHub 拉取最新的镜像:
docker pull ghcr.io/cr-zhichen/remotewakeup:latest
- 运行容器:
docker run -d --restart=always \
-e "IsUseSwagger"=true \
-e "WakeUp__MacList__0__Name=台式机" \
-e "WakeUp__MacList__0__IP=192.168.2.3" \
-e "WakeUp__MacList__0__MAC=74:56:3C:7A:6F:70" \
-e "WakeUp__SubnetBroadcastAddress=192.168.2.255" \
--network host \
ghcr.io/cr-zhichen/remotewakeup:latest
使用 Docker 构建和运行
- 构建 Docker 镜像:
docker build -t remotewakeup .
- 运行容器:
docker run -d --restart=always \
-e "IsUseSwagger"=true \
-e "WakeUp__MacList__0__Name=台式机" \
-e "WakeUp__MacList__0__IP=192.168.2.3" \
-e "WakeUp__MacList__0__MAC=74:56:3C:7A:6F:70" \
-e "WakeUp__SubnetBroadcastAddress=192.168.2.255" \
--network host \
ghcr.io/cr-zhichen/remotewakeup:latest
手动运行
确保已安装.NET 6 SDK。
- 在项目根目录中还原 NuGet 包:
dotnet restore
- 构建和运行应用:
dotnet run --project RemoteWakeUp/RemoteWakeUp.csproj
应用现在应该在 http://localhost:9000 运行。
您可以在 appsettings.json
中修改配置。例如,您可以添加或删除 MAC 地址,以控制哪些设备可以被唤醒。
若WakeUp__Password
为空,则不需要登录即可使用唤醒功能。
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://*:9000"
}
}
},
"TokenOptions": {
"SecretKey": "[输入你的鉴权Key 随便填]",
"Issuer": "[输入发行者,随便填]",
"Audience": "[输入Audience,随便填]",
"ExpireMinutes": 30
},
"IsUseSwagger": true,
"WakeUp": {
"Password": "",
"SubnetBroadcastAddress": "192.168.2.255",
"MacList": [
{
"Name": "台式机",
"IP": "192.168.2.3",
"MAC": "74:56:3C:7A:6F:70"
}
]
}
}
如果您使用Docker运行,则可以使用Docker环境变量的方式覆盖配置。例如,您可以使用以下命令运行容器:
docker run -d --restart=always \
-e "IsUseSwagger=true" \
-e "WakeUp__Password=123456" \
-e "WakeUp__MacList__0__Name=台式机" \
-e "WakeUp__MacList__0__IP=192.168.2.3" \
-e "WakeUp__MacList__0__MAC=74:56:3C:7A:6F:70" \
-e "WakeUp__SubnetBroadcastAddress=192.168.2.255" \
--network host \
ghcr.io/cr-zhichen/remotewakeup:latest
其中 WakeUp__MacList__0__Name
是第一个设备名称,
WakeUp__MacList__0__IP
是第一个设备的 IP 地址,
WakeUp__MacList__0__MAC
是第一个设备的 MAC 地址。
如果要添加更多设备,可以按照以下格式:
docker run -d --restart=always \
-e "IsUseSwagger=true" \
-e "WakeUp__Password=123456" \
-e "WakeUp__MacList__0__Name=台式机" \
-e "WakeUp__MacList__0__IP=192.168.2.3" \
-e "WakeUp__MacList__0__MAC=74:56:3C:7A:6F:70" \
-e "WakeUp__MacList__1__Name=笔记本" \
-e "WakeUp__MacList__1__IP=192.168.2.33" \
-e "WakeUp__MacList__1__MAC=74:56:3C:7A:6F:71" \
-e "WakeUp__SubnetBroadcastAddress=192.168.2.255" \
--network host \
ghcr.io/cr-zhichen/remotewakeup:latest
请注意,使用Docker运行时,因为Docker网络限制,您需要将 WakeUp__SubnetBroadcastAddress
设置为您的子网广播地址,而不是255.255.255.255。
- .NET 6
- Docker (如果使用容器化部署)
查看 Swagger 文档以获取 API 详细信息。默认地址为 http://localhost:9000/swagger。
欢迎提供问题反馈、功能建议或直接提交 Pull Request。
本项目采用 MIT 许可证。