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.

上述操作执行了下面的步骤:

  1. 拷贝了初始化配置文件
  2. 注册为Windows服务

修改配置文件

配置文件在当前目录下的config.ini内容如下:

[servers]
port = :886
RunMode = debug
webui = off

[infos]
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

放行端口

请根据自身使用的防火墙放行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界面,界面如下图:

添加配置

为了方便我们下次快捷唤醒和关机,可以点添加配置,填写对应信息。

使用

下一次我们打开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服务,但是注意:

WOL唤醒API

参数名称 示例值 类型 是否必须 说明
key xxx string 请参考token生成

关机API

参数名称 示例值 类型 是否必须 说明
key xxx string 请参考token生成

获取健康状态

参数名称 示例值 类型 是否必须 说明
key xxx string 请参考token生成

返回数据:

{
  "code": 200,
  "data": "0.69",
  "msg": "ok"
}

注意:如果请求超时可能是您防火墙没有放行GoPower端口或客户端未运行