-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathnps.conf
More file actions
173 lines (147 loc) · 4.54 KB
/
Copy pathnps.conf
File metadata and controls
173 lines (147 loc) · 4.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
# NPS Server Configuration for kejilion/apps
# Official: https://github.com/yisier/nps
# NPS内网穿透服务端,支持TCP/UDP/HTTP/HTTPS/SOCKS5等多种协议隧道
# --- 基础信息 ---
local app_id="nps"
local app_name="NPS"
local app_text="轻量级内网穿透服务端,支持TCP/UDP/HTTP/HTTPS等多种隧道,自带Web管理面板"
local app_url="https://github.com/yisier/nps"
local docker_name="nps"
local docker_port="${docker_port:-8080}"
local app_size="1"
# --- 核心逻辑 ---
docker_app_install() {
local app_dir="/home/docker/nps"
mkdir -p "${app_dir}/conf"
cd "${app_dir}" || return 1
# 获取服务器公网 IP
local server_ip
server_ip=$(curl -s4 ip.sb 2>/dev/null || curl -s4 ifconfig.me 2>/dev/null || echo "YOUR_SERVER_IP")
# 生成随机管理面板密码
local web_password
web_password=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 12)
# 生成 auth_key
local auth_key
auth_key=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16)
# 生成 auth_crypt_key (16位)
local auth_crypt_key
auth_crypt_key=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16)
# 写入 nps.conf 配置文件
cat > conf/nps.conf <<NPSEOF
appname = nps
runmode = pro
#HTTP(S) 代理端口(留空则不启动,避免与Nginx等冲突)
http_proxy_ip=0.0.0.0
http_proxy_port=
https_proxy_port=
https_default_cert_file=conf/server.pem
https_default_key_file=conf/server.key
##bridge
bridge_type=tcp
bridge_port=8024
bridge_ip=0.0.0.0
#TLS
tls_enable=false
#tls_bridge_port=8025
#Traffic data persistence interval(minute)
flow_store_interval=1
#log
log_level=6
log_path=nps.log
#web 管理面板
web_host=0.0.0.0
web_username=admin
web_password=${web_password}
web_port=${docker_port}
web_ip=0.0.0.0
web_base_url=
web_open_ssl=false
web_cert_file=conf/server.pem
web_key_file=conf/server.key
#auth
auth_key=${auth_key}
auth_crypt_key=${auth_crypt_key}
#Web management multi-user login
allow_user_login=true
allow_user_register=false
allow_user_change_username=true
#extension
allow_flow_limit=true
allow_rate_limit=true
allow_tunnel_num_limit=true
allow_local_proxy=false
allow_connection_num_limit=true
allow_multi_ip=true
system_info_display=true
http_add_origin_header=true
http_cache=false
http_cache_length=100
disconnect_timeout=60
open_captcha=false
NPSEOF
# 写入 docker-compose.yml
# NPS 需要大量端口,使用 host 网络模式
cat > docker-compose.yml <<YML
services:
nps:
image: yisier1/nps:latest
container_name: nps
restart: unless-stopped
network_mode: host
volumes:
- ./conf:/conf
- /etc/localtime:/etc/localtime:ro
environment:
- TZ=Asia/Shanghai
YML
# 启动容器
echo "正在拉取并启动 NPS 服务端..."
docker compose up -d
# 等待服务就绪
echo "等待 NPS 启动..."
for i in $(seq 1 12); do
sleep 3
if curl -s -o /dev/null -w '' --max-time 3 http://127.0.0.1:${docker_port}/ 2>/dev/null; then
break
fi
done
echo "================================================"
echo " NPS 服务端安装完成!"
echo "================================================"
echo ""
echo " Web 管理面板: http://${server_ip}:${docker_port}"
echo " 默认用户名: admin"
echo " 默认密码: ${web_password}"
echo " ⚠️ 请登录后立即修改密码!"
echo ""
echo " 默认端口说明:"
echo " 管理面板: ${docker_port}"
echo " 客户端连接: 8024 (TCP桥接)"
echo " HTTP/HTTPS代理: 未启用(避免与Nginx冲突)"
echo ""
echo " 如需启用HTTP/HTTPS域名代理,编辑 nps.conf 设置 http_proxy_port 和 https_proxy_port"
echo ""
echo " 客户端连接命令 (Docker):"
echo " docker run -d --restart=always --name npc --net=host yisier1/npc -server=${server_ip}:8024 -vkey=<客户端密钥>"
echo ""
echo " 配置文件: ${app_dir}/conf/nps.conf"
echo " 如需开启TLS,编辑 nps.conf 设置 tls_enable=true 并开放 8025 端口"
echo "================================================"
check_docker_app_ip
}
docker_app_update() {
local app_dir="/home/docker/nps"
cd "${app_dir}" || return 1
docker compose pull
docker compose up -d
echo "NPS 服务端已更新至最新版本。"
}
docker_app_uninstall() {
local app_dir="/home/docker/nps"
cd "${app_dir}" || return 1
docker compose down --rmi all
rm -rf "${app_dir}"
echo "NPS 服务端已彻底卸载,包括所有配置和数据。"
}
# --- 注册 ---
docker_app_plus