GoPower
使用Golang实现HTTP WOL唤醒和关机,支持Linux和Windows 64位操作系统。
介绍
GoPower使用Golang + Vue3实现HTTP WOL唤醒和关机,支持Linux和Windows 64位操作系统,在使用之前请确保您的机器已设置网络唤醒。
架构
WEBUI
安装
GoPower安装
Windows安装
下载
前往https://github.com/helloxz/GoPower/releases下载您对应操作系统的最新版本并解压到任意目录。
安装
进入GoPower解压后的目录,鼠标右键“在终端打开”
执行命令./GoPower.exe init
进行初始化:
此时会弹出“你要允许来自未知发布的此应用对你的设备进行更改吗?”,点是即可完成初始化,初始化完毕后终端会提示:
Init success.
上述操作执行了下面的步骤:
- 拷贝了初始化配置文件
- 注册为Windows服务
修改配置文件
配置文件在当前目录下的config.ini
内容如下:
[servers]
port = :886
RunMode = debug
webui = off
[infos]
key = xxxxxxxx
-
port = :886
运行端口,默认为886端口,可自行修改 -
RunMode = debug
是调试模式,正式环境建议改成release
-
webui = off
是否开启WEBUI,一般情况下多台内网计算机安装了GoPower的情况下只需要一台机器开启WEBUI即可 -
key = xxxxxxxx
密钥参数,这个请务必设置一个复杂的字符串,后续调用接口需要
防火墙放行端口
打开Windows Defender 防火墙 - 高级设置 - 入站规则 - 新建规则。
规则类型选择端口 - 然后下一步。
特地本地端口填写GoPower运行端口886
如果你修改过此端口,改成你设置的端口即可。
连续点3个下一步(保持默认),来到名称和描述,随便填写并保存即可。
启动
打开Win + R,输入services.msc
,找到GoPower
这个服务,点启动即可。
访问
如果您配置中开启了WEBUI,访问http://localhost:886/会看到WEB界面
Linux安装
下载
前往https://github.com/helloxz/GoPower/releases下载您对应操作系统的最新版本并解压到任意目录。
安装
进入GoPower所在目录下,执行下面的命令(需要root
权限):
#添加执行权限
chmod +x GoPower
#初始化GoPower
./GoPower init
修改配置文件
配置文件在当前目录下的config.ini
内容如下:
[servers]
port = :886
RunMode = debug
webui = off
[infos]
key = xxxxxxxx
-
port = :886
运行端口,默认为886端口,可自行修改 -
RunMode = debug
是调试模式,正式环境建议改成release
-
webui = off
是否开启WEBUI,一般情况下多台内网计算机安装了GoPower的情况下只需要一台机器开启WEBUI即可 -
key = xxxxxxxx
密钥参数,这个请务必设置一个复杂的字符串,后续调用接口需要
放行端口
请根据自身使用的防火墙放行GoPower所使用的监听端口(默认886
)
#如果使用的firewalld
firewall-cmd --zone=public --add-port=886/tcp --permanent
firewall-cmd --reload
#如果使用的ufw
ufw allow 886
启动GoPower
#启动
systemctl start gopower
#停止
systemctl stop gopower
#重启
systemctl restart gopower
#查看状态
systemctl status gopower
#设置开机启动
systemctl enable gopower
访问
如果您配置中开启了WEBUI,访问http://localhost:886/会看到WEB界面
使用
假如我们在内网的多台机器中安装了GoPower,我们需要至少在其中一台机器中启用WEBUI,以便通过浏览器直接控制和操作。
访问WEBUI
在浏览器中输入http://IP:886/ 打开GoPower的WEB界面,界面如下图:
添加配置
为了方便我们下次快捷唤醒和关机,可以点添加配置,填写对应信息。
- MAC:对应需要唤醒的目标机器MAC地址
- IP:对应需要唤醒的目标机器IP
- 唤醒API地址:内网中任意一个运行中的节点,格式为
http://IP:886
,末尾不需要/
- 唤醒API KEY:内网中任意一个运行中的节点
config.ini
中配置的key - 关机API地址:需要关机的目标机器所在的API,格式为
http://IP:886
,末尾不需要/
- 关机API地址:需要关机的目标机器所在的KEY(
config.ini
中配置的key) - 备注:随便填写
使用
下一次我们打开WEB界面,可以快速的对添加的机器进行唤醒和关机操作。
也或者可以点页面上的“手动唤醒/手动关机”手动输入信息进行唤醒或关机操作。
其它说明
- GoPower WEB界面数据存储在浏览器,不会保存到服务器,因此如果您更换了浏览器需要重新添加配置
二次开发
二次开发
GoPower是前后端分离项目,后端使用Golang,前端使用Vue 3,如果您需要二次开发,可以克隆此项目后再自行编译。
后端编译:
#安装依赖包
go mod tidy
#编译
go build -ldflags -w main.go
前端编译:
前端源文件位于项目的front
文件夹下,您需要先安装Node.js环境,然后进入此目录下执行:
#安装依赖
npm install
#运行
npm run dev
#构建(编译)
npm run build
编译后的文件位于:front/dist
目录
API
任意一台机器安装了GoPower均可提供API服务,但是注意:
- 所有请求方法统一
POST
- 编码类型
multipart/form-data
- key参数的值为
config.ini
中设置的值
WOL唤醒API
- 请求路径:
/api/startup
参数名称 | 示例值 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
key | xxx | string | 是 | 请参考token生成 |
关机API
- 请求路径:
/api/shutdown
参数名称 | 示例值 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
key | xxx | string | 是 | 请参考token生成 |
获取健康状态
- 请求路径:
/api/health
参数名称 | 示例值 | 类型 | 是否必须 | 说明 |
---|---|---|---|---|
key | xxx | string | 是 | 请参考token生成 |
返回数据:
{
"code": 200,
"data": "0.69",
"msg": "ok"
}
-
code
:状态码,成功200
,其余均为失败 -
data
:GoPower运行时间,单位H(小时) -
msg
:消息
注意:如果请求超时可能是您防火墙没有放行GoPower端口或客户端未运行