# 实现远程唤醒局域网设备的方式升级了

**URL:** <https://meta.appinn.net/t/topic/74993>\
**Category:** 发现频道\
**Tags:** docker, appinned\
**Created:** [2025 年9 月 16 日 10:26 UTC](https://meta.appinn.net/t/topic/74993 "2025-09-16T10:26:02Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

作者： ![Kaiyuan](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/kaiyuan/32/18103_2.png) [@Kaiyuan](https://meta.appinn.net/u/Kaiyuan)\
发布日期： [2025 年9 月 16 日 10:26 UTC](https://meta.appinn.net/t/topic/74993/1 "2025-09-16T10:26:02Z")

</div>

![go4wol_txet](https://h2cdn.appinn.me/original/3X/5/d/5dd08959bea84693764335fe960f3dd606ef7fcc.svg)

Github [https://github.com/Kaiyuan/go4wol⁠](https://github.com/Kaiyuan/go4wol)

好几年前我用 Nodejs 弄的，配置起来很麻烦，现在我喊 Claude 用 Go 写一个，并且直接 Docker 部署就可以用了。

2.0

增加一个网页，可以直接在网页上实现唤醒设备，网页有设备记录功能，支持 PWA。

 ![go4wol_screenshot](https://h2cdn.appinn.me/original/3X/6/9/69377db2363a24e0fb1e26232646f108c084c494.jpeg)

Docker Compose 部署

```auto
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 # 挂载数据目录到宿主机，确保读写权限
    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

```

* * *

1.0

#### **运行**

```yaml
version: '3.8'

services:
  go4wol:
    build: .
    container_name: go4wol
    restart: unless-stopped
    ports:
      - "52133:52133"
    environment:
      - PORT=52133
      - TZ=Asia/Shanghai
    network_mode: host
    # 给容器特权以发送网络广播包（仅在必要时使用）
    # privileged: true
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.wol.rule=Host(`wol.local`)"
      - "traefik.http.services.wol.loadbalancer.server.port=52133"
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

    image: kaiyuan/go4wol:1.0

```

#### **API 接口**

##### **发送WOL包**

**端点：** `POST /wol`

**请求体：**

```json
{
    "mac": "AA:BB:CC:DD:EE:FF", // 必需：目标设备的MAC地址
    "broadcast": "192.168.1.255", // 可选：广播地址，默认255.255.255.255
    "port": 9 // 可选：端口号，默认9
}

```

**响应：**

```json
{
    "success": true,
    "message": "WOL packet sent successfully",
    "mac": "AA:BB:CC:DD:EE:FF"
}

```

##### **健康检查**

**端点：** `GET /health`

**响应：**

```json
{
    "status": "healthy",
    "timestamp": "2024-01-15T10:30:00Z",
    "service": "WOL Service"
}

```

#### **使用示例**

##### **cURL 命令**

```bash
# 发送WOL包
curl -X POST http://localhost:52133/wol \
  -H 'Content-Type: application/json' \
  -d '{"mac":"AA:BB:CC:DD:EE:FF"}'

# 指定广播地址和端口
curl -X POST http://localhost:52133/wol \
  -H 'Content-Type: application/json' \
  -d '{"mac":"AA:BB:CC:DD:EE:FF","broadcast":"192.168.1.255","port":9}'

```

##### **JavaScript 示例**

```javascript
async function wakeDevice(mac, broadcast = null, port = null) {
    const payload = { mac };
    if (broadcast) payload.broadcast = broadcast;
    if (port) payload.port = port;
    
    const response = await fetch('/wol', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(payload)
    });
    
    const result = await response.json();
    return result;
}

// 使用示例
wakeDevice('AA:BB:CC:DD:EE:FF')
    .then(result => console.log('WOL发送结果:', result))
    .catch(error => console.error('错误:', error));

```

##### **网络配置注意事项**

- **推荐使用host网络模式** ：这样可以确保WOL广播包能够正确发送

- 如果必须使用bridge模式，确保Docker网络配置允许广播

- 确保目标设备的网卡支持Wake-on-LAN功能

#### **故障排除**

##### **常见问题**

1. **WOL包发送失败**

2. **服务无法访问**

3. **权限问题**

##### **调试方法**

```bash
# 检查容器状态
docker ps -a | grep go4wol

# 查看详细日志
docker logs go4wol

# 进入容器调试
docker exec -it go4wol sh

# 测试网络连接
curl http://localhost:52133/health

```

---

<div class="post-metadata">

作者： ![Aquamarine](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/a/22d042/32.png) [@Aquamarine](https://meta.appinn.net/u/Aquamarine)\
发布日期： [2025 年9 月 16 日 10:46 UTC](https://meta.appinn.net/t/topic/74993/2 "2025-09-16T10:46:30Z")

</div>

非Windows平台这么麻烦的？Windows网卡属性设置一下就好了。

---

<div class="post-metadata">

作者： ![Kaiyuan](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/kaiyuan/32/18103_2.png) [@Kaiyuan](https://meta.appinn.net/u/Kaiyuan)\
发布日期： [2025 年9 月 16 日 10:55 UTC](https://meta.appinn.net/t/topic/74993/3 "2025-09-16T10:55:59Z")

</div>

这个是让你在外面唤醒家里设备用的。

---

<div class="post-metadata">

作者： ![kasusa](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/kasusa/32/72838_2.png) [@kasusa](https://meta.appinn.net/u/kasusa)\
发布日期： [2025 年9 月 16 日 11:51 UTC](https://meta.appinn.net/t/topic/74993/4 "2025-09-16T11:51:01Z")

</div>

[![](https://h1.appinn.me/file/1758023453461_image.png) ](https://h1.appinn.me/file/1758023453461_image.png)

---

<div class="post-metadata">

作者： ![Kaiyuan](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/kaiyuan/32/18103_2.png) [@Kaiyuan](https://meta.appinn.net/u/Kaiyuan)\
发布日期： [2025 年9 月 16 日 12:30 UTC](https://meta.appinn.net/t/topic/74993/5 "2025-09-16T12:30:47Z")

</div>

没留意权限，现在设为公开了。

---

<div class="post-metadata">

作者： ![Frank9](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/frank9/32/23723_2.png) [@Frank9](https://meta.appinn.net/u/Frank9)\
发布日期： [2025 年9 月 18 日 02:35 UTC](https://meta.appinn.net/t/topic/74993/6 "2025-09-18T02:35:20Z")

</div>

这个好啊，还支持api，配合httpshortcut，手机一键唤醒了属于是。

---

<div class="post-metadata">

作者： ![Kaiyuan](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/kaiyuan/32/18103_2.png) [@Kaiyuan](https://meta.appinn.net/u/Kaiyuan)\
发布日期： [2025 年9 月 21 日 13:40 UTC](https://meta.appinn.net/t/topic/74993/7 "2025-09-21T13:40:34Z")

</div>

2.0 增加了 Web ，直接网页就能一键唤醒。

---

<div class="post-metadata">

作者： ![Qingwa](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/qingwa/32/58632_2.png) [@Qingwa](https://meta.appinn.net/u/Qingwa)\
发布日期： [2025 年9 月 21 日 16:52 UTC](https://meta.appinn.net/t/topic/74993/8 "2025-09-21T16:52:31Z")

</div>

Web 长啥样？加一个 tg 机器人开机啊

---

<div class="post-metadata">

作者： ![Kaiyuan](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/kaiyuan/32/18103_2.png) [@Kaiyuan](https://meta.appinn.net/u/Kaiyuan)\
发布日期： [2025 年9 月 22 日 04:40 UTC](https://meta.appinn.net/t/topic/74993/9 "2025-09-22T04:40:49Z")

</div>

加上截图了，TG机器人，这个我自己没需求就没有考虑，我一直都是 iOS 捷径 post MAC的，后来想起安卓没什么好用的工具就弄个 PWA。

---

<div class="post-metadata">

作者： ![dray](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/d/f0a364/32.png) [@dray](https://meta.appinn.net/u/dray)\
发布日期： [2025 年9 月 22 日 06:40 UTC](https://meta.appinn.net/t/topic/74993/10 "2025-09-22T06:40:55Z")

</div>

啊

还要唤醒

我都是一直开着机

---

<div class="post-metadata">

作者： ![lq2007](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/l/a88e4f/32.png) [@lq2007](https://meta.appinn.net/u/lq2007)\
发布日期： [2025 年9 月 23 日 07:05 UTC](https://meta.appinn.net/t/topic/74993/11 "2025-09-23T07:05:51Z")

</div>

我都是先开zerotier，再进路由器后台，然后wol :joy: 用zerotier中转这样（路由器IP是192.168.1.x，zt的IP是 10.147.20.x）能用吗

---

<div class="post-metadata">

作者： ![kasusa](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/kasusa/32/72838_2.png) [@kasusa](https://meta.appinn.net/u/kasusa)\
发布日期： [2025 年9 月 23 日 07:13 UTC](https://meta.appinn.net/t/topic/74993/12 "2025-09-23T07:13:08Z")

</div>

我买了小爱同学兼容的开机卡， 15 块钱。  
连到 power sw 上面 ，真物理开机。  
感觉是我用过最好用了。 之前 wol 总是不好使不知道为啥。

---

<div class="post-metadata">

作者： ![Kaiyuan](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/kaiyuan/32/18103_2.png) [@Kaiyuan](https://meta.appinn.net/u/Kaiyuan)\
发布日期： [2025 年9 月 23 日 08:13 UTC](https://meta.appinn.net/t/topic/74993/13 "2025-09-23T08:13:26Z")

</div>

我这个是在家有机器是一直开着做服务器中转，然后让你可以Post 设备到服务器，然后服务器再发送 wol 数据包到设备。

两个条件，  
1.家里有能运行 Docket 并一直开机  
2.在外面能访问这台一直开着的机器

能满足两个条件就能打开网页点一下就能发 wol了。

---

<div class="post-metadata">

作者： ![Qingwa](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/qingwa/32/58632_2.png) [@Qingwa](https://meta.appinn.net/u/Qingwa)\
发布日期： [2025 年9 月 23 日 08:15 UTC](https://meta.appinn.net/t/topic/74993/14 "2025-09-23T08:15:14Z")

</div>

把你这个拿出来看看，很酷的样子

---

<div class="post-metadata">

作者： ![kimi360](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/kimi360/32/50153_2.png) [@kimi360](https://meta.appinn.net/u/kimi360)\
发布日期： [2025 年9 月 23 日 09:08 UTC](https://meta.appinn.net/t/topic/74993/15 "2025-09-23T09:08:57Z")

</div>

为了远程唤醒起个docker太奢侈了，直接丢个程序到bin文件夹下，要开机的时候开vpn回家，然后快捷指令ssh到nas执行wol命令就好了

> **[GitHub - sabhiram/go-wol: Simple wake on LAN magic packet generator for...](https://github.com/sabhiram/go-wol)**
>
> Simple wake on LAN magic packet generator for golang

---

<div class="post-metadata">

作者： ![dubc](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dubc/32/54932_2.png) [@dubc](https://meta.appinn.net/u/dubc)\
发布日期： [2025 年9 月 23 日 09:28 UTC](https://meta.appinn.net/t/topic/74993/16 "2025-09-23T09:28:19Z")

</div>

我也写了一个类似工具。比楼主多一个关机功能。看来大家都喜欢写开关机的轮子。:rofl:

---

<div class="post-metadata">

作者： ![Qingwa](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/qingwa/32/58632_2.png) [@Qingwa](https://meta.appinn.net/u/Qingwa)\
发布日期： [2025 年9 月 23 日 09:28 UTC](https://meta.appinn.net/t/topic/74993/17 "2025-09-23T09:28:52Z")

</div>

远程关机如何实现的？我现在还需要登录才行

---

<div class="post-metadata">

作者： ![dubc](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dubc/32/54932_2.png) [@dubc](https://meta.appinn.net/u/dubc)\
发布日期： [2025 年9 月 23 日 09:34 UTC](https://meta.appinn.net/t/topic/74993/18 "2025-09-23T09:34:17Z")

</div>

我局域网主要是linux服务器。我的项目接收到关机指令和正确token后，会执行：  
````ssh agent@ip 'poweroff'````  
因为有安全隐患，所有除非必要，我个人不推荐启用这个功能。

---

<div class="post-metadata">

作者： ![Qingwa](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/qingwa/32/58632_2.png) [@Qingwa](https://meta.appinn.net/u/Qingwa)\
发布日期： [2025 年9 月 23 日 09:34 UTC](https://meta.appinn.net/t/topic/74993/19 "2025-09-23T09:34:42Z")

</div>

哦Linux啊，我以为远程给Windows关机

---

<div class="post-metadata">

作者： ![Sugar](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/sugar/32/53566_2.png) [@Sugar](https://meta.appinn.net/u/Sugar)\
发布日期： [2025 年9 月 24 日 06:17 UTC](https://meta.appinn.net/t/topic/74993/20 "2025-09-24T06:17:44Z")

</div>

我用这个openwrt插件：[GitHub - animegasan/luci-app-wolplus: LuCI support for WolPlus](https://github.com/animegasan/luci-app-wolplus)

[下一页](https://meta.appinn.net/t/topic/74993.md?page=2)
