NPS is a lightweight, high-performance intranet penetration proxy server supporting TCP/UDP traffic forwarding, HTTP(S) reverse proxy, SOCKS5 proxy, P2P穿透, with a modern web management panel.
Based on the original nps 0.26.10, with extensive bug fixes, performance and security improvements, and a redesigned Web UI.
- 🚀 Comprehensive Protocols — TCP, UDP, HTTP(S), SOCKS5, P2P, Secret, File access
- 🖥️ Cross-platform — Linux / Windows / macOS / ARM / Synology, with one-click system service installation
- 🎨 Web UI — Modern interface with light/dark theme, real-time traffic and speed monitoring
- 🔒 Security — Random password on first start, IP whitelist/blacklist, CAPTCHA, rate limiting
- 🌐 Domain Proxy — Custom headers, 404 pages, host rewrite, URL routing, wildcard, auto HTTPS
- 🔐 TLS Encryption — TLS encrypted communication between client and server
- 📦 Docker — Multi-arch images (amd64/arm/arm64), one-command deployment
- 💻 GUI Client — Wails-based desktop client (Windows)
# Run directly
./nps
# Install as system service (interactive)
./nps -server
# Docker
docker run -d --name nps \
-p 80:80 -p 443:443 \
-p 8024:8024 -p 8080:8080 \
-v /opt/nps/conf:/conf \
wushuo98/npsAfter starting, visit http://<server-ip>:8080 to access the web panel. A random username and password will be printed in the terminal on first launch.
📋 Port Reference
| Port | Purpose |
|---|---|
| 80 | HTTP reverse proxy |
| 443 | HTTPS reverse proxy |
| 8024 | Bridge TCP (client connections) |
| 8025 | Bridge TLS (encrypted connections) |
| 8080 | Web management panel |
# Interactive mode (recommended)
./npc
# Command line
./npc -server=<IP>:8024 -vkey=<key>
# TLS mode
./npc -server=<IP>:8025 -vkey=<key> -tls_enable=true
# Docker
docker run -d --name npc \
wushuo98/npc -server=<IP>:8024 -vkey=<key>💡 Recommended: Delete the
conffolder under the npc directory to use config-free mode. All settings are managed via the server's web panel.
| Mode | Description | Use Cases |
|---|---|---|
| TCP | TCP port forwarding with load balancing | SSH, Remote Desktop, Databases |
| UDP | UDP port forwarding | DNS, Gaming, VoIP |
| HTTP(S) | Domain-based reverse proxy | WeChat dev, Web apps |
| SOCKS5 | SOCKS5 proxy | Full intranet access |
| P2P | Peer-to-peer penetration | Direct device connection |
| Secret | Private proxy | Secure temporary connections |
| File | Intranet file access | File browsing & download |
nps/
├── cmd/
│ ├── nps/ # Server entry point
│ ├── npc/ # Client entry point
│ └── npc/npc-gui/ # Wails GUI client
├── bridge/ # Bridge layer (connection mgmt, tunnel mux)
├── server/ # Server core (proxy mode implementations)
├── client/ # Client core
├── lib/ # Shared libraries
│ ├── file/ # Data models + JSON persistence
│ ├── conn/ # Connection protocol
│ ├── nps_mux/ # Multiplexing library
│ ├── rate/ # Rate limiter
│ └── crypt/ # TLS certificate management
├── web/ # Web panel (Beego)
├── conf/ # Config + data storage
├── docs/ # Documentation site (Docsify)
├── build.sh # Cross-platform build script
├── Makefile # Build / test / CI
└── Dockerfile.* # Docker builds
Requires Go 1.24+
# Quick build
go build cmd/nps/nps.go # Server
go build cmd/npc/npc.go # Client
# Makefile (recommended)
make build # Build nps + npc
make test # Test with race detection & coverage
make lint # golangci-lint
# Cross compile
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" ./cmd/nps/nps.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" ./cmd/npc/npc.go
# GUI client (requires Wails)
cd cmd/npc/npc-gui && wails build- Server: wushuo98/nps
- Client: wushuo98/npc
git clone https://github.com/ZiDuNet/nps.git
cd nps
docker-compose up -d- 📖 Full Documentation
- 🚀 Getting Started
- ⚙️ Server Config
- 📱 Client Config
- 🔧 Tunnel Details
- 🐳 Docker Deployment
- 🖥️ GUI Client
See CHANGELOG.md for full history.
- v1.1.0 (2026-06-10) — Web UI modernization, bug fixes, security hardening
- v1.0.0 (2026-05) — Secondary development baseline, traffic stats fix, UI redesign
Issues and Pull Requests are welcome!
- Fork the repo
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Based on ehang-io/nps. Thanks to the original author.