From 5600b1def090fef5c19465c5326d6dff6697c428 Mon Sep 17 00:00:00 2001 From: guclan Date: Mon, 15 May 2023 14:53:55 +0800 Subject: [PATCH] Add ehang-io/nps (#88) --- apps/list.json | 14 ++ apps/nps/metadata/logo.png | Bin 0 -> 32113 bytes apps/nps/versions/0.26.10/README.md | 90 +++++++++++++ apps/nps/versions/0.26.10/conf/clients.json | 0 apps/nps/versions/0.26.10/conf/hosts.json | 0 .../versions/0.26.10/conf/multi_account.conf | 2 + apps/nps/versions/0.26.10/conf/nps.conf | 85 ++++++++++++ apps/nps/versions/0.26.10/conf/server.key | 27 ++++ apps/nps/versions/0.26.10/conf/server.pem | 22 ++++ apps/nps/versions/0.26.10/conf/tasks.json | 0 apps/nps/versions/0.26.10/config.json | 124 ++++++++++++++++++ apps/nps/versions/0.26.10/docker-compose.yml | 34 +++++ 12 files changed, 398 insertions(+) create mode 100644 apps/nps/metadata/logo.png create mode 100644 apps/nps/versions/0.26.10/README.md create mode 100644 apps/nps/versions/0.26.10/conf/clients.json create mode 100644 apps/nps/versions/0.26.10/conf/hosts.json create mode 100644 apps/nps/versions/0.26.10/conf/multi_account.conf create mode 100644 apps/nps/versions/0.26.10/conf/nps.conf create mode 100644 apps/nps/versions/0.26.10/conf/server.key create mode 100644 apps/nps/versions/0.26.10/conf/server.pem create mode 100644 apps/nps/versions/0.26.10/conf/tasks.json create mode 100644 apps/nps/versions/0.26.10/config.json create mode 100644 apps/nps/versions/0.26.10/docker-compose.yml diff --git a/apps/list.json b/apps/list.json index c736e928..ae554fd9 100644 --- a/apps/list.json +++ b/apps/list.json @@ -430,6 +430,20 @@ "website": "https://www.adminer.org/", "github": "https://github.com/xiahao90/adminer", "document": "https://github.com/xiahao90/adminer" + }, + { + "key": "nps", + "name": "nps", + "tags": ["Tool"], + "versions": ["0.26.10"], + "shortDescZh": "轻量级、高性能、功能强大的内网穿透代理服务器", + "shortDescEn": "Lightweight, high-performance, powerful intranet penetration proxy server", + "type": "tool", + "limit": 1, + "crossVersionUpdate": true, + "website": "https://ehang-io.github.io/nps", + "github": "https://github.com/ehang-io/nps", + "document": "https://ehang-io.github.io/nps" } ] } diff --git a/apps/nps/metadata/logo.png b/apps/nps/metadata/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e677e005be15b9eddd2acdfabaff7ab8e28db481 GIT binary patch literal 32113 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 literal 0 KcmV+b0RR6000031 diff --git a/apps/nps/versions/0.26.10/README.md b/apps/nps/versions/0.26.10/README.md new file mode 100644 index 00000000..4275d13d --- /dev/null +++ b/apps/nps/versions/0.26.10/README.md @@ -0,0 +1,90 @@ + +# nps +![](https://img.shields.io/github/stars/ehang-io/nps.svg) ![](https://img.shields.io/github/forks/ehang-io/nps.svg) +[![Gitter](https://badges.gitter.im/cnlh-nps/community.svg)](https://gitter.im/cnlh-nps/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) +![Release](https://github.com/ehang-io/nps/workflows/Release/badge.svg) +![GitHub All Releases](https://img.shields.io/github/downloads/ehang-io/nps/total) + +[README](https://github.com/ehang-io/nps/blob/master/README.md)|[中文文档](https://github.com/ehang-io/nps/blob/master/README_zh.md) + +nps是一款轻量级、高性能、功能强大的**内网穿透**代理服务器。目前支持**tcp、udp流量转发**,可支持任何**tcp、udp**上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还**支持内网http代理、内网socks5代理**、**p2p等**,并带有功能强大的web管理端。 + + +## 背景 +![image](https://github.com/ehang-io/nps/blob/master/image/web.png?raw=true) + +1. 做微信公众号开发、小程序开发等----> 域名代理模式 + +2. 想在外网通过ssh连接内网的机器,做云服务器到内网服务器端口的映射,----> tcp代理模式 + +3. 在非内网环境下使用内网dns,或者需要通过udp访问内网机器等----> udp代理模式 + +4. 在外网使用HTTP代理访问内网站点----> http代理模式 + +5. 搭建一个内网穿透ss,在外网如同使用内网vpn一样访问内网资源或者设备----> socks5代理模式 +## 特点 +- 协议支持全面,兼容几乎所有常用协议,例如tcp、udp、http(s)、socks5、p2p、http代理... +- 全平台兼容(linux、windows、macos、群辉等),支持一键安装为系统服务 +- 控制全面,同时支持服务端和客户端控制 +- https集成,支持将后端代理和web服务转成https,同时支持多证书 +- 操作简单,只需简单的配置即可在web ui上完成其余操作 +- 展示信息全面,流量、系统信息、即时带宽、客户端版本等 +- 扩展功能强大,该有的都有了(缓存、压缩、加密、流量限制、带宽限制、端口复用等等) +- 域名解析具备自定义header、404页面配置、host修改、站点保护、URL路由、泛解析等功能 +- 服务端支持多用户和用户注册功能 + +**没找到你想要的功能?不要紧,点击[进入文档](https://ehang-io.github.io/nps)查找吧** +## 快速开始 + +### 安装 +> [releases](https://github.com/ehang-io/nps/releases) + +下载对应的系统版本即可,服务端和客户端是单独的 + +### 服务端启动 +下载完服务器压缩包后,解压,然后进入解压后的文件夹 + +- 执行安装命令 + +对于linux|darwin ```sudo ./nps install``` + +对于windows,管理员身份运行cmd,进入安装目录 ```nps.exe install``` + +- 默认端口 + +nps默认配置文件使用了80,443,8080,8024端口 + +80与443端口为域名解析模式默认端口 + +8080为web管理访问端口 + +8024为网桥端口,用于客户端与服务器通信 + +- 启动 + +对于linux|darwin ```sudo nps start``` + +对于windows,管理员身份运行cmd,进入程序目录 ```nps.exe start``` + +```安装后windows配置文件位于 C:\Program Files\nps,linux和darwin位于/etc/nps``` + +**如果发现没有启动成功,可以查看日志(Windows日志文件位于当前运行目录下,linux和darwin位于/var/log/nps.log)** +- 访问服务端ip:web服务端口(默认为8080) +- 使用用户名和密码登陆(默认admin/123,正式使用一定要更改) +- 创建客户端 + +### 客户端连接 +- 点击web管理中客户端前的+号,复制启动命令 +- 执行启动命令,linux直接执行即可,windows将./npc换成npc.exe用cmd执行 + +如果需要注册到系统服务可查看[注册到系统服务](https://ehang-io.github.io/nps/#/use?id=注册到系统服务) + +### 配置 +- 客户端连接后,在web中配置对应穿透服务即可 +- 更多高级用法见[完整文档](https://ehang-io.github.io/nps/) + +## 贡献 +- 如果遇到bug可以直接提交至dev分支 +- 使用遇到问题可以通过issues反馈 +- 项目处于开发阶段,还有很多待完善的地方,如果可以贡献代码,请提交 PR 至 dev 分支 +- 如果有新的功能特性反馈,可以通过issues或者qq群反馈 diff --git a/apps/nps/versions/0.26.10/conf/clients.json b/apps/nps/versions/0.26.10/conf/clients.json new file mode 100644 index 00000000..e69de29b diff --git a/apps/nps/versions/0.26.10/conf/hosts.json b/apps/nps/versions/0.26.10/conf/hosts.json new file mode 100644 index 00000000..e69de29b diff --git a/apps/nps/versions/0.26.10/conf/multi_account.conf b/apps/nps/versions/0.26.10/conf/multi_account.conf new file mode 100644 index 00000000..e3cd7926 --- /dev/null +++ b/apps/nps/versions/0.26.10/conf/multi_account.conf @@ -0,0 +1,2 @@ +# key -> user | value -> pwd +npc=npc.pwd \ No newline at end of file diff --git a/apps/nps/versions/0.26.10/conf/nps.conf b/apps/nps/versions/0.26.10/conf/nps.conf new file mode 100644 index 00000000..a6c2615e --- /dev/null +++ b/apps/nps/versions/0.26.10/conf/nps.conf @@ -0,0 +1,85 @@ +appname = nps +#Boot mode(dev|pro) +runmode = pro + +#HTTP(S) proxy port, no startup if empty +http_proxy_ip=${NPS_HTTP_PROXY_IP} +http_proxy_port=${NPS_HTTP_PROXY_PORT} +https_proxy_port=${NPS_HTTPS_PROXY_PORT} +https_just_proxy=true +#default https certificate setting +https_default_cert_file=server.pem +https_default_key_file=server.key + +##bridge +bridge_type=tcp +bridge_port=${NPS_BRIDGE_PORT} +bridge_ip=0.0.0.0 + +# Public password, which clients can use to connect to the server +# After the connection, the server will be able to open relevant ports and parse related domain names according to its own configuration file. +public_vkey=${NPS_PUBLIC_VKEY} + +#Traffic data persistence interval(minute) +#Ignorance means no persistence +#flow_store_interval=1 + +# log level LevelEmergency->0 LevelAlert->1 LevelCritical->2 LevelError->3 LevelWarning->4 LevelNotice->5 LevelInformational->6 LevelDebug->7 +log_level=7 +#log_path=nps.log + +#Whether to restrict IP access, true or false or ignore +#ip_limit=true + +#p2p +#p2p_ip=127.0.0.1 +#p2p_port=6000 + +#web +web_host=${NPS_WEB_HOST} +web_username=${NPS_WEB_USERNAME} +web_password=${NPS_WEB_PASSWORD} +web_port = ${NPS_WEB_PORT} +web_ip=0.0.0.0 +web_base_url= +web_open_ssl=${NPS_WEB_OPEN_SSL} +web_cert_file=${NPS_DEFAULT_CERT_FILE} +web_key_file=${NPS_DEFAULT_KEY_FILE} +# if web under proxy use sub path. like http://host/nps need this. +#web_base_url=/nps + +#Web API unauthenticated IP address(the len of auth_crypt_key must be 16) +#Remove comments if needed +#auth_key=test +auth_crypt_key =${NPS_AUTH_CRYPT_KEY} + +#allow_ports=9001-9009,10001,11000-12000 + +#Web management multi-user login +allow_user_login=false +allow_user_register=false +allow_user_change_username=false + + +#extension +allow_flow_limit=false +allow_rate_limit=false +allow_tunnel_num_limit=false +allow_local_proxy=false +allow_connection_num_limit=false +allow_multi_ip=false +system_info_display=false + +#cache +http_cache=false +http_cache_length=100 + +#get origin ip +http_add_origin_header=false + +#pprof debug options +#pprof_ip=0.0.0.0 +#pprof_port=9999 + +#client disconnect timeout +disconnect_timeout=60 diff --git a/apps/nps/versions/0.26.10/conf/server.key b/apps/nps/versions/0.26.10/conf/server.key new file mode 100644 index 00000000..570054af --- /dev/null +++ b/apps/nps/versions/0.26.10/conf/server.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEA2MVLOHvgU8FCp6LgQrPfaWcGygrsRk7TL9hbT8MxbCRUSLV7 +Lbt3q5Knz8eTN4NWmwE6L5glOcH2x3Hnn+hPjbvgq35XBBIccAm0cYYKqoKkikeK +FZM0Gp/WhSrhJ4laTyQqyleIFKpwD9kHDiC/sxjGDhSFmHKhhAnsQIRm2tppFXX0 +aAMqJEm88jzk1BN2QtKjEAn1u8v1+QW1KP3WuzdXH4L7hhMll66/KIm6Hfs2FRHQ +pRUWqZeJY4q79NW5p5f+siGwOsGpxb/p11pM+0xnCH3UIFbm3zCTzP4sLvkfFGAe +yAHsAwmaP8dJxh40ej3NN8uNiNvt8nw2Vb/1LwIDAQABAoIBAD40x/RKoEKIyE8B +D6g0pB1EQo+CePFoN3SYewO1uR4WgtVmtxWVoa7r5BpdZGLe3uCWhpMX7z7W6bGs +f1LFQOckjkHIfMIfTGfecRjO5Yqu+Pbxtq+gUah+S/plJr3IzdC+SUVNvzBnBMeX +eU3Vmg2UQ2nQ+9GWu8D/c/vDwxx0X8oQ2G8QaxX0tUurlSMNA3M7xySwEvhx54fO +UrDF3Q4yF48eA4butxVLFWf3cnlY+nR8uYd2vKfmp689/8C6kkfoM9igB78e93sm +uDM2eRLm4kU5WLl301T42n6AF7w8J0MhLLVOIeLs4l5gZPa3uKvYFmuHQao7e/5R +U/jHKrECgYEA8alPXuxFSVOvdhIsSN//Frj9CdExVdYmaLkt/2LO4FMnOaWh1xh7 +5iCY1bJT8D9dhfbqRg3qW2oguZD8gu04R8fTRegQ89qmAIwsEYqVf9salR41lZU4 +Rc+5yc7O11WIe9Lzu+ONFBFkAh3UFMR4zVZ/JhKIG/P5Srm7SUdKW2cCgYEA5aHo +x2LR+yKhjkrBzHG3Qrfy1PtlYHjOpYYAKHQcBFuiG08W3CK/vkYl+mhv0uyhT7mn +q6NDqrpZPRnDlOoEqgRS1X/QWKN6Pgd4HNLIawvp0vK9jYXDPcAXFzVthXCIwFcn +3a3m4cHiuLdRNOHkydiHQyTOF6eEneN07TDvwvkCgYEApzOd1u9igPmFzQuF2GYi ++HXFnaU/nUQuDwcQ7EJRIKRn31raPxiRoQesty5LJU6yRp4wOYgnPliPi9Tk4TGA +XynC4/tMv2vorzhMxVY9Wdke602bhYNZC/RNd3O/aP2lEQdD3Bv04I2nxE8fDb9i +VbAjCRSJV83WDf2zt1+78sECgYEAzezjRiKdcZu9y0/I+WEk2cUCE/MaF2he0FsZ +uy1cjp/qAJltQ5452xUnK6cKWNlxU4CHF0mC/hC8xCldliZCZoEYE3PaUBLSJdwm +35o6tpxpZI3gZJCG5NJlIp/8BkVDrVC7ZHV17hAkFEf4n/bPaB8wNYtE8jt8luaK +TcarzGkCgYBn2alN0RLN2PHDurraFZB6GuCvh/arEjSCY3SDFQPF10CVjTDV7sx3 +eqJkwJ81syTmfJwZIceWbOFGgsuSx37UrQAVlHZSvzeqEg9dA5HqSoOACyidJI7j +RG2+HB+KpsIZjGgLrEM4i7VOpYUDRdaouIXngFq/t9HNT+MDck5/Lw== +-----END RSA PRIVATE KEY----- diff --git a/apps/nps/versions/0.26.10/conf/server.pem b/apps/nps/versions/0.26.10/conf/server.pem new file mode 100644 index 00000000..7908eca5 --- /dev/null +++ b/apps/nps/versions/0.26.10/conf/server.pem @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDtTCCAp2gAwIBAgIJAPXRSiP0Fs7sMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV +BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX +aWRnaXRzIFB0eSBMdGQwHhcNMTcxMTA3MDg1MzQ2WhcNMjcxMTA1MDg1MzQ2WjBF +MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50 +ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEA2MVLOHvgU8FCp6LgQrPfaWcGygrsRk7TL9hbT8MxbCRUSLV7Lbt3q5Kn +z8eTN4NWmwE6L5glOcH2x3Hnn+hPjbvgq35XBBIccAm0cYYKqoKkikeKFZM0Gp/W +hSrhJ4laTyQqyleIFKpwD9kHDiC/sxjGDhSFmHKhhAnsQIRm2tppFXX0aAMqJEm8 +8jzk1BN2QtKjEAn1u8v1+QW1KP3WuzdXH4L7hhMll66/KIm6Hfs2FRHQpRUWqZeJ +Y4q79NW5p5f+siGwOsGpxb/p11pM+0xnCH3UIFbm3zCTzP4sLvkfFGAeyAHsAwma +P8dJxh40ej3NN8uNiNvt8nw2Vb/1LwIDAQABo4GnMIGkMB0GA1UdDgQWBBQdPc0R +a8alY6Ab7voidkTGaH4PxzB1BgNVHSMEbjBsgBQdPc0Ra8alY6Ab7voidkTGaH4P +x6FJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNV +BAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAPXRSiP0Fs7sMAwGA1UdEwQF +MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAH1IZNkjuvt2nZPzXsuiVNyCE1vm346z +naE0Uzt3aseAN9m/iiB8mLz+ryvWc2aFMX5lTdsHdm2rqmqBCBXeRwTLf4OeHIju +ZQW6makWt6PxANEo6gbdPbQXbS420ssUhnR2irIH1SdI31iikVFPdiS0baRRE/gS ++440M1jOOOnKm0Qin92ejsshmji/0qaD2+6D5TNw4HmIZaFTBw+kfjxCL6trfeBn +4fT0RJ121V3G3+AtG5sWQ93B3pCg+jtD+fGKkNSLhphq84bD1Zv7l73QGOoylkEn +Sc0ajTLOXFBb83yRdlgV3Da95jH9rDZ4jSod48m+KemoZTDQw0vSwAU= +-----END CERTIFICATE----- diff --git a/apps/nps/versions/0.26.10/conf/tasks.json b/apps/nps/versions/0.26.10/conf/tasks.json new file mode 100644 index 00000000..e69de29b diff --git a/apps/nps/versions/0.26.10/config.json b/apps/nps/versions/0.26.10/config.json new file mode 100644 index 00000000..389d88e5 --- /dev/null +++ b/apps/nps/versions/0.26.10/config.json @@ -0,0 +1,124 @@ +{ + "formFields": [ + { + "type": "number", + "labelZh": "web管理端口", + "labelEn": "Web Management Port", + "required": true, + "default": 8080, + "rule": "paramPort", + "envKey": "PANEL_APP_PORT_HTTP" + }, + { + "type": "number", + "labelZh": "服务端客户端通信端口", + "labelEn": "Server-Client Communication Port", + "required": true, + "default": 8024, + "rule": "paramPort", + "envKey": "NPS_BRIDGE_PORT" + }, + { + "type": "text", + "labelZh": "外部访问地址(若默认地址请替换localhost为当前服务IP)", + "labelEn": "External URL(If the default address, please replace localhost with the current service IP)", + "required": true, + "default": "http://localhost:8080", + "rule": "paramExtUrl", + "envKey": "NPS_WEB_HOST", + "edit": true + }, + { + "type": "text", + "labelZh": "web界面管理账号", + "labelEn": "Web Interface Management Account", + "required": true, + "default": "admin", + "random": true, + "rule": "paramCommon", + "envKey": "NPS_WEB_USERNAME" + }, + { + "type": "password", + "labelZh": "web界面管理密码", + "labelEn": "Web Interface Management Password", + "required": true, + "default": "123", + "random": true, + "rule": "paramComplexity", + "envKey": "NPS_WEB_PASSWORD" + }, + { + "type": "text", + "labelZh": "开启Https访问", + "labelEn": "Enable Https Access", + "required": true, + "default": "false", + "rule": "paramCommon", + "envKey": "NPS_WEB_OPEN_SSL" + }, + { + "type": "number", + "labelZh": "动态端口范围开始", + "labelEn": "Dynamic Port Range Start", + "required": true, + "default": 20100, + "rule": "paramPort", + "envKey": "NPS_RANDOM_PORT_START" + }, + { + "type": "number", + "labelZh": "动态端口范围结束", + "labelEn": "Dynamic Port Range End", + "required": true, + "default": 20200, + "rule": "paramPort", + "envKey": "NPS_RANDOM_PORT_END" + }, + { + "type": "text", + "labelZh": "客户端以配置文件模式启动时的密钥", + "labelEn": "Key When the Client Starts in Configuration File Mode", + "required": true, + "default": "123", + "rule": "paramCommon", + "envKey": "NPS_PUBLIC_VKEY" + }, + { + "type": "text", + "labelZh": "16位aes加密密钥", + "labelEn": "16-bit AES Encryption Key", + "required": true, + "default": "1234567812345678", + "rule": "paramCommon", + "envKey": "NPS_AUTH_CRYPT_KEY" + }, + { + "type": "text", + "labelZh": "域名代理http代理监听地址", + "labelEn": "Http Proxy IP", + "required": false, + "default": "0.0.0.0", + "rule": "paramCommon", + "envKey": "NPS_HTTP_PROXY_IP" + }, + { + "type": "number", + "labelZh": "域名代理http代理监听端口", + "labelEn": "Http Proxy Port", + "required": false, + "default": 20080, + "rule": "paramPort", + "envKey": "NPS_HTTP_PROXY_PORT" + }, + { + "type": "number", + "labelZh": "域名代理https代理监听端口", + "labelEn": "Https Proxy Port", + "required": false, + "default": 20443, + "rule": "paramPort", + "envKey": "NPS_HTTPS_PROXY_PORT" + } + ] +} \ No newline at end of file diff --git a/apps/nps/versions/0.26.10/docker-compose.yml b/apps/nps/versions/0.26.10/docker-compose.yml new file mode 100644 index 00000000..1bc4c43d --- /dev/null +++ b/apps/nps/versions/0.26.10/docker-compose.yml @@ -0,0 +1,34 @@ +version: "3" +services: + nps: + image: ffdfgdfg/nps:v0.26.10 + container_name: ${CONTAINER_NAME} + ports: + - ${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP} + - ${NPS_BRIDGE_PORT}:${NPS_BRIDGE_PORT} + - ${NPS_HTTP_PROXY_PORT}:${NPS_HTTP_PROXY_PORT} + - ${NPS_HTTPS_PROXY_PORT}:${NPS_HTTPS_PROXY_PORT} + - ${NPS_RANDOM_PORT_START}-${NPS_RANDOM_PORT_END}:${NPS_RANDOM_PORT_START}-${NPS_RANDOM_PORT_END} + restart: always + volumes: + - ./conf:/conf + environment: + NPS_WEB_HOST: ${NPS_WEB_HOST} + NPS_WEB_PORT: ${PANEL_APP_PORT_HTTP} + NPS_WEB_USERNAME: ${NPS_WEB_USERNAME} + NPS_WEB_PASSWORD: ${NPS_WEB_PASSWORD} + NPS_WEB_OPEN_SSL: ${NPS_WEB_OPEN_SSL} + NPS_PUBLIC_VKEY: ${NPS_PUBLIC_VKEY} + NPS_BRIDGE_PORT: ${NPS_BRIDGE_PORT} + NPS_AUTH_CRYPT_KEY: ${NPS_AUTH_CRYPT_KEY} + NPS_HTTP_PROXY_IP: ${NPS_HTTP_PROXY_IP} + NPS_HTTP_PROXY_PORT: ${NPS_HTTP_PROXY_PORT} + NPS_HTTPS_PROXY_PORT: ${NPS_HTTPS_PROXY_PORT} + networks: + - 1panel-network + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true \ No newline at end of file