An open API service indexing awesome lists of open source software.

https://github.com/sky22333/netboot


https://github.com/sky22333/netboot

Last synced: 2 months ago
JSON representation

Awesome Lists containing this project

README

          

## PXE
> 基于 Go + Vue 3 构建的**跨平台** PXE 网络启动管理服务,轻松实现多系统环境下的开箱即用。

## ✨ 功能特点

* 🖥️ **全平台支持**:采用 Go 语言开发,原生跨平台(Windows / Linux / macOS),无需繁琐的环境配置。
* 📱 **Web 可视化管理**:纯中文响应式界面,适配手机与电脑,支持登录认证、实时日志查看和文件工作台。
* ⚙️ **服务一键管控**:在 Web 端即可启动、停止或重启 DHCP (含 ProxyDHCP)、TFTP、HTTP Boot、SMB 和 Torrent 服务。
* 📡 **智能网络引导**:
* **完整 DHCP**:支持标准 DHCP 地址分配及 ProxyDHCP 模式(不影响现有路由)。
* **自动适配**:智能识别终端架构(BIOS / UEFI / iPXE)并下发引导文件。
* **内置 netboot.xyz**:支持官方源拉取,同时兼容自定义启动文件。
* ⚡ **高效协议传输**:提供稳定且带重试机制的 TFTP,以及支持缓存和虚拟路径的 HTTP Boot 服务。
* 🗂️ **在线文件管理**:内置文件工作台,支持 HTTP Boot、TFTP、netboot.xyz 目录浏览、上传、新建、重命名、删除、种子制作和小型文本脚本在线编辑。
* 🧰 **客户端维护**:支持客户端静态绑定、待认领、Wake-on-LAN 多目标唤醒,以及按服务器平台生成的 Ping/HTTP 检查操作模板。
* 💾 **轻量级存储**:底层使用纯 Go SQLite(默认 `data/pxe.db`),零外部数据库依赖。
* 🧩 **iPXE 固件构建**:提供独立 GitHub Actions,可用仓库根目录 `embed.ipxe` 构建 Legacy BIOS、UEFI x86_64 和 UEFI ARM64 固件。

## 运行

[Releases](https://github.com/sky22333/netboot/releases)页面下载构建好的二进制文件

win系统直接双击打开,linux系统需要使用命令行启动。

```
./pxe
```

不带参数启动时,程序会切换到可执行文件所在目录,并在当前目录自动创建`data`目录。常用参数(可选项):

```text
--config 指定 pxe.toml
--data-dir 指定数据目录
--host 覆盖管理端监听主机
--port 覆盖管理端端口
--no-browser 禁止自动打开浏览器
```

启动成功后,会自动打开默认浏览器访问管理面板,终端环境没有浏览器的场景则不会打开。

## 运行时目录

```text
data/
├─ pxe.toml
├─ pxe.db
├─ secret.key
├─ logs/pxe.log
├─ boot/
│ ├─ netboot/ # netboot.xyz 下载文件
│ ├─ tftp/ # 自定义 TFTP 文件,可为空
│ └─ http/ # 自定义 HTTP Boot 文件,可为空
├─ smb/
└─ exports/
```

## iPXE 固件

仓库根目录的 `embed.ipxe` 是用于固件编译的内置 iPXE 脚本,默认提供 Debian 12、Alpine Linux 公网安装入口、iPXE Shell 和退出项。`.github/workflows/build-boot.yml` 可手动触发,基于 iPXE v2.0.0 开启 HTTPS,并使用 iPXE 默认公共 CA/crosscert 机制生成:

```text
undionly.kpxe
ipxe-x86_64.efi
ipxe-arm64.efi
```

这些固件产物是辅助启动文件,不会由应用本体自动生成。应用运行时仍通过 DHCP/ProxyDHCP、TFTP、HTTP Boot、`/dynamic.ipxe` 和 `local-vars.ipxe` 完成客户端引导,并按 BIOS、UEFI IA32、UEFI x64、UEFI ARM32、UEFI ARM64 分别选择启动文件。

更多内容见 [docs](./docs)。

## 页面预览

![1](docs/images/demo1.png)

---

![2](docs/images/demo2.png)

---

![3](docs/images/demo3.png)

---

![4](docs/images/demo4.png)

---

![5](docs/images/demo5.png)

---

## 💬 支持与反馈

如果您在使用过程中遇到问题或有任何建议,欢迎:
- 📧 提交 Issue
- 💡 提出功能建议
- 🔀 提交 Pull Request