如果你有一台 NAS、软路由或家里的小服务器,想从外网访问它,或者需要把几台不同地方的设备组成一个局域网,NetPanel 可以帮你把这些事情都管起来——端口转发、内网穿透、异地组网、动态域名、反向代理……全部在一个界面里配置,不用到处找工具。
| 功能 | 说明 |
|---|---|
| 端口转发 | 基于 Go 原生实现的 TCP/UDP 端口转发,支持监听指定 IP 和协议,内置 HTTP/SOCKS5 代理 |
| 内网穿透(STUN) | 利用 STUN 协议打洞,支持 UPnP、NATMAP,IP 变化时可触发回调 |
| 内网穿透(FRP) | 集成 FRP 客户端,支持 TCP/UDP/HTTP/HTTPS/STCP/XTCP 等代理类型 |
| FRP 服务端 | 同时支持运行 frps,方便自建穿透服务 |
| 内网穿透(NPS) | 集成 NPS 客户端与服务端,提供更多穿透方案选择 |
| 异地组网(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 |
| 网络防护(Coraza WAF) | 集成 Coraza WAF,可对 HTTP 流量进行规则过滤和拦截 |
| 防火墙管理 | 系统防火墙规则管理,支持入站/出站规则配置 |
| 访问控制 | 支持 IP 黑白名单,可以只允许特定 IP 访问,或者屏蔽某些 IP |
| 功能 | 说明 |
|---|---|
| 网络唤醒(WOL) | 发送 Magic Packet 远程唤醒局域网内的设备 |
| 解析服务(DNSMasq) | 内置 DNS 服务,支持自定义解析规则和上游 DNS |
| 计划任务 | 基于 Cron 表达式的定时任务,支持执行 Shell 命令或 HTTP 请求 |
| 网络存储 | 对外提供 WebDAV、SFTP 访问,方便远程管理文件 |
| IP 地址库 | 批量管理和查询 IP 归属地信息 |
| 系统日志 | 统一的系统日志查看与管理 |
当 STUN 穿透的外网 IP 或端口发生变化时,可以自动触发回调,支持:
- 🔄 更新 Cloudflare 回源端口
- 🔄 更新 阿里云 ESA 规则
- 🔄 更新 腾讯云 EO 规则
- 🔄 发送自定义 WebHook 请求
| 后端 | Go 1.21 · Gin · GORM + SQLite · JWT 认证 |
| 前端 | React 18 · TypeScript · Ant Design 5 · Vite · react-i18next |
| 桌面端 | Electron(跨平台桌面应用封装) |
| 集成库 | FRP · NPS · Caddy · Coraza · DDNS-Go · lego (ACME) · pion/stun · miekg/dns · WireGuard |
| EasyTier | Rust 编写,通过命令行方式管理进程,构建时自动下载对应平台二进制 |
从 Releases 页面下载对应平台的压缩包,解压后直接运行:
# Linux / macOS
tar -xzf netpanel-linux-amd64.tar.gz
cd netpanel-linux-amd64
./netpanel# Windows,解压后在目录内运行
.\netpanel.exe默认监听 8080 端口,打开浏览器访问 http://localhost:8080 即可。
常用参数:
./netpanel -port 8080 -data ./data| 参数 | 默认值 | 说明 |
|---|---|---|
-port |
8080 |
HTTP 监听端口 |
-data |
./data |
数据目录(存放数据库和配置文件) |
# 使用 docker-compose
docker-compose up -d
# 或直接运行
docker run -d \
--name netpanel \
-p 8080:8080 \
-v ./data:/app/data \
--restart unless-stopped \
netpanel:latest# Linux(使用安装脚本)
curl -fsSL https://raw.githubusercontent.com/your-username/netpanel/main/scripts/install.sh | bash
# Windows(使用 PowerShell 脚本)
.\scripts\install.ps1需要 Go 1.21+ 和 Node.js 20+。
# 克隆仓库
git clone https://github.com/your-username/netpanel.git
cd netpanel
# 构建前端
cd webpage
npm install
npm run build
cd ..
# 构建后端(包含前端静态文件)
cd backend
go build -o ../netpanel .
cd ..
# 运行
./netpanelnetpanel/
├── backend/ # Go 后端
│ ├── main.go # 程序入口
│ ├── api/ # 路由和 Handler
│ │ ├── handlers/ # 各功能 API 处理器
│ │ ├── middleware/ # 中间件(认证等)
│ │ └── router.go # 路由注册
│ ├── model/ # 数据库模型
│ ├── service/ # 各功能服务管理器
│ │ ├── portforward/ # 端口转发
│ │ ├── stun/ # STUN 穿透
│ │ ├── frp/ # FRP 客户端/服务端
│ │ ├── nps/ # NPS 客户端/服务端
│ │ ├── easytier/ # EasyTier 组网
│ │ ├── wireguard/ # WireGuard VPN
│ │ ├── meshnode/ # Mesh 节点管理
│ │ ├── ddns/ # 动态域名
│ │ ├── caddy/ # 反向代理
│ │ ├── cert/ # SSL 证书
│ │ ├── firewall/ # 防火墙管理
│ │ ├── access/ # 访问控制
│ │ ├── callback/ # 回调系统
│ │ ├── cron/ # 计划任务
│ │ ├── storage/ # 网络存储
│ │ ├── dnsmasq/ # DNS 服务
│ │ ├── wol/ # 网络唤醒
│ │ └── syslog/ # 系统日志
│ ├── pkg/ # 公共工具(日志、配置等)
│ └── embed/ # 嵌入的前端静态文件
├── webpage/ # React 前端
│ └── src/
│ ├── pages/ # 各功能页面
│ ├── components/ # 公共组件
│ ├── api/ # 接口请求封装
│ └── i18n/ # 国际化(中文/英文)
├── desktop/ # Electron 桌面端
├── modules/ # 集成的第三方模块
│ ├── EasyTier/
│ ├── caddy/
│ ├── coraza/
│ ├── frp/
│ ├── nps/
│ └── ...
├── scripts/ # 安装和服务管理脚本
│ ├── install.sh # Linux 安装脚本
│ ├── install.ps1 # Windows 安装脚本
│ └── setup.iss # Windows 安装包配置
├── docsite/ # 文档站点(VitePress)
├── Dockerfile
├── docker-compose.yml
└── .github/
└── workflows/ # CI/CD 构建脚本
| 平台 | 架构 | 说明 |
|---|---|---|
| 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.21+
- Node.js 20+
- 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 惯用法,使用
go fmt和golangci-lint检查 - 前端使用 TypeScript 严格模式,遵循 ESLint 规则
- 提交前请确保所有测试通过
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建你的功能分支 (
git checkout -b feature/amazing-feature) - 提交你的更改 (
git commit -m 'feat: add amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 开启一个 Pull Request
本项目基于 GPL-3.0 许可证开源。