# nps **Repository Path**: hsg4ok_admin/nps ## Basic Information - **Project Name**: nps - **Description**: 很优秀的内网透传库 - **Primary Language**: Go - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-28 - **Last Updated**: 2026-05-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # NPS Enhanced An enhanced and actively maintained NAT traversal and reverse proxy system with Web UI. [![GitHub Stars](https://img.shields.io/github/stars/djylb/nps.svg)](https://github.com/djylb/nps) [![GitHub Forks](https://img.shields.io/github/forks/djylb/nps.svg)](https://github.com/djylb/nps) [![Release](https://github.com/djylb/nps/workflows/Release/badge.svg)](https://github.com/djylb/nps/actions) [![GitHub All Releases](https://img.shields.io/github/downloads/djylb/nps/total)](https://github.com/djylb/nps/releases) > ⭐️ Give us a star on [GitHub](https://github.com/djylb/nps) if you like it! - [中文文档](https://github.com/djylb/nps/blob/master/README.zh.md) --- ## Introduction NPS is a lightweight and efficient NAT traversal and reverse proxy system for exposing services behind NAT or firewalls. It supports multiple protocols such as TCP, UDP, HTTP, HTTPS, and SOCKS5, and provides a Web management interface for convenient deployment and monitoring. Based on the original [NPS](https://github.com/ehang-io/nps) project, **NPS Enhanced** has evolved into an actively maintained and extensively improved edition with continuous refactoring, better stability, and many practical enhancements for modern deployment scenarios. - **Before asking questions, please check:** [Documentation](https://d-jy.net/docs/nps/) and [Issues](https://github.com/djylb/nps/issues) - **Contributions welcome:** Submit PRs, feedback, or suggestions to help improve the project - **Join the discussion:** Connect with other users in our [Telegram Group](https://t.me/npsdev) - **Android:** [djylb/npsclient](https://github.com/djylb/npsclient) - **OpenWrt:** [djylb/nps-openwrt](https://github.com/djylb/nps-openwrt) - **Mirror:** [djylb/nps-mirror](https://github.com/djylb/nps-mirror) ![NPS Web UI](https://cdn.jsdelivr.net/gh/djylb/nps/image/web.png) --- ## Why NPS Enhanced - **Easy to install** Provides simple deployment methods for Docker, Linux, and Windows, making setup and updates straightforward. - **Lightweight and efficient** Designed to stay lightweight while delivering strong performance for daily NAT traversal and reverse proxy usage. - **Easy to manage** Comes with a Web UI for configuration, monitoring, and routine management, reducing deployment and maintenance complexity. - **Powerful and flexible** Supports multiple proxy types, transport protocols, and practical features for a wide range of private-network access scenarios. --- ## Key Features - **Multi-Protocol Support** Supports TCP/UDP forwarding, HTTP/HTTPS reverse proxy, HTTP/SOCKS5 proxy, P2P mode, Proxy Protocol support, HTTP/3 support, and more for different private-network access scenarios. - **Cross-Platform Deployment** Compatible with major platforms such as Linux and Windows, and can be easily installed as a system service. - **Web Management Interface** Provides real-time monitoring of traffic, connection status, and client states with an intuitive and user-friendly interface. - **Security and Extensibility** Built-in features such as encrypted transmission, traffic limiting, access expiration controls, certificate management, and certificate renewal help improve security and manageability. - **Multiple Connection Protocols** Supports connecting to the server using TCP, KCP, TLS, QUIC, WS, and WSS protocols. --- ## What's New in v0.35.0 - **Node control plane and multi-platform management** Adds the public `/api/*` management surface for external platforms, including snapshots, batch requests, config export/import, and scoped actor access. - **Direct, reverse, and dual platform connectivity** Supports reverse WebSocket channels, callback delivery, retry queues, replay, signing, and change-window based resynchronization for platform integrations. - **Management workflow refactor** Reorganizes the management UI and service layer around users, clients, tunnels, hosts, and node-facing operations. - **Reliability and code quality improvements** Cleans up race conditions, lint findings, persistence edge cases, and test coverage across P2P, mux, proxy, and runtime paths. Further reading: - [CHANGELOG](https://github.com/djylb/nps/blob/master/CHANGELOG.md) - [Node Management Guide](https://d-jy.net/docs/nps/#/guide/server/node-management) - [Management API Reference](https://d-jy.net/docs/nps/#/reference/management-api) - [Server Configuration Reference](https://d-jy.net/docs/nps/#/reference/server-config) --- ## Installation and Usage For more detailed configuration options, please refer to the [Documentation](https://d-jy.net/docs/nps/). ### [Android](https://github.com/djylb/npsclient) | [OpenWrt](https://github.com/djylb/nps-openwrt) ### Docker Deployment **DockerHub:** [NPS](https://hub.docker.com/r/duan2001/nps) | [NPC](https://hub.docker.com/r/duan2001/npc) **GHCR:** [NPS](https://github.com/djylb/nps/pkgs/container/nps) | [NPC](https://github.com/djylb/nps/pkgs/container/npc) > If you need to obtain the real client IP, you can use it together with [mmproxy](https://github.com/djylb/mmproxy-docker). For example: SSH. #### NPS Server ```bash docker pull duan2001/nps docker run -d --restart=always --name nps --net=host -v $(pwd)/conf:/conf -v /etc/localtime:/etc/localtime:ro duan2001/nps ``` > **Tip:** After installing NPS, edit `nps.conf` (for example: listening ports and Web admin credentials) before starting the service. #### NPC Client ```bash docker pull duan2001/npc docker run -d --restart=always --name npc --net=host duan2001/npc -server=xxx:123,yyy:456 -vkey=key1,key2 -type=tls,tcp -log=off ``` > **Tip:** Get `-server`, `-vkey`, and `-type` from the client page in the NPS Web UI to avoid manual input mistakes. ### Server Installation #### Linux ```bash # Install (default configuration path: /etc/nps/; binary file path: /usr/bin/) wget -qO- https://raw.githubusercontent.com/djylb/nps/refs/heads/master/install.sh | sudo sh -s nps nps install nps start|stop|restart|uninstall # Update nps update && nps restart ``` > **Tip:** For first-time setup, edit `/etc/nps/nps.conf` and verify it before running `nps start`. #### Windows > If you do not want to choose the architecture, legacy package, or install path manually, use the repository root `install.ps1`. > > Windows 7 / 8 / 8.1 users should use the version ending with old: [64](https://github.com/djylb/nps/releases/latest/download/windows_amd64_server_old.tar.gz) / [32](https://github.com/djylb/nps/releases/latest/download/windows_386_server_old.tar.gz) ```powershell .\install.ps1 nps .\nps.exe install .\nps.exe start|stop|restart|uninstall # Update .\nps.exe stop .\nps-update.exe update .\nps.exe start ``` ### Client Installation #### Linux ```bash wget -qO- https://raw.githubusercontent.com/djylb/nps/refs/heads/master/install.sh | sudo sh -s npc /usr/bin/npc install -server=xxx:123,yyy:456 -vkey=xxx,yyy -type=tls -log=off npc start|stop|restart|uninstall # Update npc update && npc restart ``` > **Tip:** For `npc install`, use the command generated on the client page in the NPS Web UI. #### Windows > If you do not want to choose the architecture, legacy package, or install path manually, use the repository root `install.ps1`. > > Windows 7 / 8 / 8.1 users should use the version ending with old: [64](https://github.com/djylb/nps/releases/latest/download/windows_amd64_client_old.tar.gz) / [32](https://github.com/djylb/nps/releases/latest/download/windows_386_client_old.tar.gz) ```powershell .\install.ps1 npc .\npc.exe install -server="xxx:123,yyy:456" -vkey="xxx,yyy" -type="tls,tcp" -log="off" .\npc.exe start|stop|restart|uninstall # Update .\npc.exe stop .\npc-update.exe update .\npc.exe start ``` > **Tip:** The client supports connecting to multiple servers simultaneously. Example: > `npc -server=xxx:123,yyy:456,zzz:789 -vkey=key1,key2,key3 -type=tcp,tls` > Here, `xxx:123` uses TCP, and `yyy:456` and `zzz:789` use TLS. > If you need to connect to older server versions, add `-proto_version=0` to the startup command.