nps

module
v0.34.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 12, 2026 License: GPL-3.0

README

NPS Enhanced

A high-performance NAT traversal and reverse proxy server with Web UI.

GitHub Stars GitHub Forks Release GitHub All Releases

⭐️ Give us a star on GitHub if you like it!


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.

Since the original NPS project has been inactive for a long time, this repository continues its development as an actively maintained community version with extensive refactoring, improved stability, and enhanced functionality.

NPS Web UI


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.


Installation and Usage

For more detailed configuration options, please refer to the Documentation (some sections may be outdated).

Android | OpenWrt
Docker Deployment

DockerHub: NPS | NPC

GHCR: NPS | NPC

If you need to obtain the real client IP, you can use it together with mmproxy. For example: SSH.

NPS Server
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
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
# 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

Windows 7 users should use the version ending with old: 64 / 32

.\nps.exe install
.\nps.exe start|stop|restart|uninstall

# Update
.\nps.exe stop
.\nps-update.exe update
.\nps.exe start
Client Installation
Linux
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

Windows 7 users should use the version ending with old: 64 / 32

.\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.

Directories

Path Synopsis
cmd
npc command
nps command
lib
mux
p2p
pmux
Package pmux This module is used for port reuse Distinguish client, web manager , HTTP and HTTPS according to the difference of protocol
Package pmux This module is used for port reuse Distinguish client, web manager , HTTP and HTTPS according to the difference of protocol
web

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL