面向家庭与小型网络环境的一体化内网穿透 · 异地组网 · 反向代理管理面板
An all-in-one panel for NAT traversal, site-to-site networking & reverse proxy — built for home labs, NAS and small networks.
如果你有一台 NAS、软路由或家里的小服务器,想从外网访问它,或者需要把几台不同地方的设备组成一个局域网——NetPanel 可以帮你把这些事情都管起来:
端口转发、内网穿透(FRP / NPS / STUN / Cloudflare Tunnel)、异地组网(EasyTier / WireGuard)、动态域名、SSL 证书、反向代理、WAF 防护……全部在一个界面里配置,不用再东拼西凑多个工具。
NetPanel is a unified web panel that brings port forwarding, NAT traversal (FRP / NPS / STUN / Cloudflare Tunnel), site-to-site VPN (EasyTier / WireGuard), DDNS, SSL certificates, reverse proxy and WAF into one single UI — no more juggling half a dozen tools.
⚠️ 项目仍在开发阶段,部分功能尚未完全实现;欢迎提 Issue 或 Pull Request 一起完善。
⚠️ This project is still under active development — issues and pull requests are very welcome.
📚 详细使用与配置文档见 docsite/(VitePress 文档站)。
| 功能 | 说明 |
|---|---|
| MCP 服务端 MCP Server | 遵循 Model Context Protocol 的标准服务端,LLM / AI Agent 可通过标准协议查询探测配置、隧道健康状态并执行异常诊断 |
| 智能线路选择 Line Auto-Selection | 基于 selector + linereg 的自动选线引擎:探测多条线路,自动择优,支持锁线 / 失败阈值 / 工具过滤 |
| 并发测速弹窗 Speed Test | 对穿透服务线路即时并发测速,一键比较各条线路的延迟与可用性 |
| 探测监控与告警 Monitor & Alerts | 服务/线路探测失败自动告警,支持多种告警规则与通知 |
| AI 辅助 AI Assistant | 内置 AI 接入层,支持面向运维场景的智能问答与操作建议 |
| 功能 | 说明 |
|---|---|
| 端口转发 Port Forwarding | 基于 Go 原生实现的 TCP/UDP 端口转发,支持监听指定 IP 和协议,内置 HTTP/SOCKS5 代理 |
| 内网穿透(STUN) NAT Traversal | 利用 STUN 协议打洞,支持 UPnP、NATMAP,IP 变化时可触发回调 |
| 内网穿透(FRP) | 集成 FRP 客户端,支持 TCP/UDP/HTTP/HTTPS/STCP/XTCP 等代理类型 |
| FRP 服务端 frps | 同时支持运行 frps,方便自建穿透服务 |
| 内网穿透(NPS) | 集成 NPS 客户端与服务端,提供更多穿透方案选择 |
| 内网穿透(CF) Cloudflare Tunnel | 集成 cloudflared,支持 Quick / Named / Token 三种模式,免公网 IP、边缘直接接入 |
| 异地组网(EasyTier) | 管理 EasyTier 客户端进程,支持多节点组网,配置虚拟 IP 和网络密码 |
| EasyTier 服务端 | 支持运行 EasyTier standalone 服务端 |
| WireGuard | 内置 WireGuard 组网支持,配置简单,性能优异 |
| Mesh 节点 | 支持 Mesh 网络节点管理,实现多点互联 |
| 功能 | 说明 |
|---|---|
| 动态域名(DDNS) | 支持阿里云、腾讯云、Cloudflare、DNSPod 等主流服务商,自动更新解析记录 |
| 域名账号 | 统一管理各服务商的 API 密钥,供 DDNS、证书、回调等功能复用 |
| 域名解析 | 直接在面板里增删改查 DNS 解析记录,无需登录各服务商控制台 |
| 域名证书 | 通过 ACME 协议自动申请和续期 Let's Encrypt / ZeroSSL 证书,支持 DNS 验证 |
| 功能 | 说明 |
|---|---|
| 网站服务(Caddy) | 基于 Caddy 提供反向代理、静态文件服务、重定向、URL 跳转,支持自动 HTTPS |
| 网络防护(WAF) | 集成 Coraza WAF 引擎,攻击事件实时分析、态势统计、IP 封禁联动 |
| 防火墙管理 | 系统防火墙规则管理,支持入站/出站规则配置 |
| 访问控制 | 支持 IP 黑白名单,可以只允许特定 IP 访问,或者屏蔽某些 IP |
| 功能 | 说明 |
|---|---|
| 网络唤醒(WOL) | 发送 Magic Packet 远程唤醒局域网内的设备 |
| 解析服务(DNSMasq) | 内置 DNS 服务,支持自定义解析规则和上游 DNS |
| 计划任务 | 基于 Cron 表达式的定时任务,支持执行 Shell 命令或 HTTP 请求 |
| 网络存储 | 对外提供 WebDAV、SFTP 访问,方便远程管理文件 |
| IP 地址库 | 批量管理和查询 IP 归属地信息 |
| 系统日志 | 统一的系统日志查看与管理 |
当 STUN 穿透的外网 IP 或端口发生变化时,可以自动触发回调,支持:
- 🔄 更新 Cloudflare 回源端口
- 🔄 更新 阿里云 ESA 规则
- 🔄 更新 腾讯云 EO 规则
- 🔄 发送自定义 WebHook 请求
| 层 | 技术 |
|---|---|
| 后端 Backend | Go 1.25 · Gin · GORM + SQLite · JWT 认证 |
| 前端 Frontend | React 18 · TypeScript · Ant Design 5 · Vite 7 · react-i18next |
| 桌面端 Desktop | Electron(跨平台桌面应用封装) |
| 集成库 Integrations | FRP · NPS · Caddy · Coraza · DDNS-Go · lego (ACME) · pion/stun · miekg/dns · WireGuard |
| EasyTier | Rust 编写,通过命令行方式管理进程,构建时自动下载对应平台二进制 |
最新发布版见 Releases(当前 v0.3.0)。默认监听
8080端口,浏览器访问http://localhost:8080即可。
从 Releases 页面下载对应平台的压缩包,解压后直接运行:
# Linux / macOS
tar -xzf netpanel-linux-amd64.tar.gz
cd netpanel-linux-amd64
./netpanel# Windows,解压后在目录内运行
.\netpanel.exe常用参数:
./netpanel -port 8080 -data ./data| 参数 | 默认值 | 说明 |
|---|---|---|
-port |
8080 |
HTTP 监听端口 |
-data |
./data |
数据目录(存放数据库和配置文件) |
提供两种配置,按需选择:
# 🟢 最小化部署(仅 Web 面板,无需额外权限)
# 适用:端口转发、DDNS、反向代理等基础功能
docker compose -f docker-compose.minimal.yml up -d
# 🔵 完整部署(含 TUN/组网能力)
# 适用:需要 EasyTier/WireGuard/Mesh 等网络功能
docker compose -f docker-compose.full.yml up -d手动运行 docker run
# 最小化
docker run -d \
--name netpanel \
-p 8080:8080 \
-v ./data:/app/data \
--restart unless-stopped \
ghcr.io/pikachuim/netpanel:latest
# 完整(含 TUN)
docker run -d \
--name netpanel \
-p 8080:8080 \
-v ./data:/app/data \
--cap-add NET_ADMIN --cap-add SYS_MODULE \
--device /dev/net/tun:/dev/net/tun \
--sysctl net.ipv4.ip_forward=1 \
--sysctl net.ipv6.conf.all.forwarding=1 \
--restart unless-stopped \
ghcr.io/pikachuim/netpanel:latest# Linux(使用安装脚本)
curl -fsSL https://github.com/ghraw/PIKACHUIM/NetPanel/main/scripts/install.sh | bash
# Windows(使用 PowerShell 脚本)
.\scripts\install.ps1需要 Go 1.25+ 和 Node.js 20.19+(CI 环境:Go 1.25 / Node 24)。
# 克隆仓库
git clone https://github.com/PIKACHUIM/NetPanel.git
cd NetPanel
# 构建前端
cd webpage
npm install
npm run build
cd ..
# 构建后端(前端静态文件会嵌入到后端二进制中)
cd backend
go build -o ../netpanel .
cd ..
# 运行
./netpanelNetPanel/
├── backend/ # Go 后端
│ ├── main.go # 程序入口(嵌入前端 dist)
│ ├── api/ # 路由与 Handler(handlers / middleware / router.go)
│ ├── model/ # 数据库模型(GORM + SQLite)
│ ├── service/ # 功能服务:portforward / stun / frp / nps / cftunnel /
│ │ # easytier / wireguard / meshnode / caddy / cert /
│ │ # firewall / access / waf / mcp / linereg / selector /
│ │ # tunservice / monitor / ddns / dnsmasq / cron /
│ │ # storage / wol / syslog / ai / oauth / callback ...
│ ├── pkg/ # 公共库(config / logger / secret / sysutil / utils ...)
│ └── embed/ # 前端静态文件嵌入(embed.go + dist/)
├── webpage/ # React 前端
│ └── src/
│ ├── pages/ # 各功能页面
│ ├── components/ # 公共组件
│ ├── api/ # 接口请求封装
│ └── i18n/ # 国际化(中文/英文)
├── desktop/ # Electron 桌面端
├── docsite/ # VitePress 文档站(含自动化部署到 GitHub Pages)
├── scripts/ # 安装与服务管理脚本(install.sh / install.ps1 / setup.iss ...)
├── Makefile # 跨平台构建入口(make linux-amd64 / windows-amd64 ...)
├── Dockerfile
├── docker-compose.yml
└── .github/workflows/ # CI/CD:PR 门禁(编译+测试+前端类型检查)、发布、文档部署
| 平台 | 架构 | 说明 |
|---|---|---|
| Linux | x86_64 (amd64) | 主要测试平台 |
| Linux | ARM64 | 树莓派、NAS 等 |
| Linux | ARMv7 | 低功耗嵌入式设备 |
| Windows | x86_64 (amd64) | 支持安装包和便携版 |
| Windows | ARM64 | Surface 等 ARM 设备 |
| macOS | Intel (amd64) | |
| macOS | Apple Silicon (arm64) | M 系列芯片 |
发布包内已包含对应平台的 EasyTier 二进制文件,无需单独下载。
- Go 1.25+(参考
backend/go.mod,CI 使用 Go 1.25) - Node.js 20.19+(CI 使用 Node 24)
- Git
# 启动后端(开发模式)
cd backend
go run . -port 8080
# 启动前端开发服务器(另开一个终端)
cd webpage
npm install
npm run dev前端开发服务器默认运行在 http://localhost:5173,已配置代理将 /api 请求转发到后端。
# 使用 Makefile 构建所有平台
make all
# 构建特定平台
make linux-amd64
make windows-amd64- 后端遵循 Go 惯用法,PR 门禁会执行
go vet、go build与单元测试(Go 1.25) - 前端使用 TypeScript 严格模式,PR 门禁会执行类型检查与生产构建
- 提交前请确保本地能通过
go vet ./... && go test ./...与前端构建 - UI 文案国际化:新增界面文案请同时补充
webpage/src/i18n中的中文与英文条目
┌──────────────── 统一入口安全网关 ────────────────┐
公网 ──▶ [防火墙 IPv4+IPv6] ──▶ [WAF(Coraza)] ──▶ [Caddy TLS] ──▶ 反代/选线 ──▶ 内网服务
│
IPv6 直连 ──▶ [DDNS AAAA] ──▶ [防火墙 IPv6 放行] ──▶ [Caddy 双栈] ──▶ 内网服务
IPv6 客户端 ──▶ [DNS64 + NAT64 网关] ──▶ IPv4 服务
NetPanel 将防火墙、WAF、SSL 证书、Caddy 反代集中为统一安全入口,内网服务无需逐个暴露端口。
很多家庭:IPv4 为 CGNAT(无公网 IPv4),但有公网 IPv6;内网服务仍只监听 IPv4;外部访客是纯 IPv4 设备。
关键约束:纯 IPv4 客户端无法路由到 IPv6 地址,公网 IPv6 不能直接作为该场景入口。必须通过「IPv4 可达中转 + 反向穿透(家里主动出站)」。
| 方案 | 路径 | 说明 |
|---|---|---|
| Cloudflare Tunnel(cftunnel) | 外部 IPv4 → CF 边缘(IPv4) → 家里出站隧道 → 内网 IPv4 | 免费,无需 VPS |
| VPS + frp/nps | 外部 IPv4 → VPS IPv4:port → 家里出站隧道 → 内网 IPv4 | 自控带宽,需 VPS |
家里公网 IPv6 的价值:① 出站链路走 IPv6(绕开 CGNAT 出站的不稳定);② 未来有 IPv6 的外部访客可直接 IPv6 直达(零中转,最快)。
| 中转方式 | 限制 | 说明 |
|---|---|---|
| Cloudflare Tunnel(免费) | 单请求体约 100MB 上限(大文件受限,以官方文档为准) | 适合 Web/API/中小文件,不适合大文件/视频直传 |
| Cloudflare Tunnel(免费) | 带宽受 CF Fair Use 约束,吞吐看边缘节点 | 国内访问多走 HK/SG 边缘 |
| VPS + frp/nps | 无协议层文件大小限制 | 瓶颈在 VPS 带宽与流量费(frp 可配 bandwidth_limit) |
| 任意中转 | 单点故障,流量经第三方/自建节点 | 时延 = 客户端→中转 + 中转→家 |
- 出站走 IPv6:家里客户端到中转的连接优先 IPv6,绕开 CGNAT NAT 转发开销与波动。
- 中转就近:CF 走 Anycast 就近边缘;自建 VPS 选离家里和访客都近的机房。
- 保持双栈:中转节点开启 IPv4+IPv6,未来 IPv6 访客可直达家中(零中转)。
- 大文件避开 CF:>100MB 的文件/备份走自建 VPS+frp 或 IPv6 直连。
欢迎提交 Issue 和 Pull Request!无论是新功能、Bug 修复、文档改进还是使用反馈,我们都非常欢迎。
Issues and pull requests are always welcome — new features, bug fixes, docs improvements and usage feedback.
建议流程:
- Fork 本仓库
- 创建你的功能分支:
git checkout -b feat/your-feature - 提交你的更改(见下方规范)
- 推送到你的分支:
git push origin feat/your-feature - 在 GitHub 上开启一个 Pull Request,目标分支
main
一些约定:
- 提交信息:使用 Conventional Commits(
feat/fix/docs/refactor…),中文描述为主,可附简短英文 - 小而聚焦的 PR:一个 PR 只做一件事,便于 review 与合并
- PR 门禁:CI 会自动执行后端
go vet/ 测试与前端类型检查 / 构建,请确保通过 - 新增文案:记得同步
webpage/src/i18n下的中文与英文条目 - 实现大功能前,欢迎先开 Issue 讨论设计,避免返工
本项目基于 AGPL-3.0 许可证开源。
⭐ 如果 NetPanel 对你有帮助,欢迎 Star / Fork / 贡献代码!