侧边栏壁纸
博主头像
知识旅途 博主等级

项目经理&三流程序员

  • 累计撰写 29 篇文章
  • 累计创建 15 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

NPS 服务端部署

Administrator
2026-03-02 / 0 评论 / 0 点赞 / 47 阅读 / 0 字

​版本信息​:

  • ​镜像版本​:yisier1/nps​ 和 yisier1/npc​ (社区维护活跃版)

  • ​网络模式​:Host​ 模式 (无需繁琐映射端口,配置即时生效)

  • ​更新时间​:2026-01-23


第一部分:服务端部署 (NPS Server)

​部署位置​:云服务器 (腾讯云/阿里云/VPS)

​核心逻辑​:先建立目录结构 -> 初始化防崩溃数据库文件 -> 编写配置文件 -> 启动容器。

1. 初始化目录与数据库 (必做)

NPS 容器启动时会直接读取挂载目录下的 .json​ 数据文件。如果这些文件不存在,容器会直接报错退出。我们需要手动创建它们并写入空的 JSON 数组 []​。

# 1. 创建项目主目录 (建议放在 /opt 或 /data 下)
mkdir -p /opt/nps/conf

# 2. 进入配置目录
cd /opt/nps/conf

# 3. 初始化核心数据库文件 (至关重要!)
# clients.json: 存储所有客户端(NPC)的验证密钥、备注等信息
echo "[]" > clients.json

# tasks.json: 存储所有隧道(TCP/UDP)的端口映射规则
echo "[]" > tasks.json

# hosts.json: 存储域名解析规则 (如果不使用泛域名解析,此文件为空但也必须存在)
echo "[]" > hosts.json

2. 创建核心配置文件 (nps.conf​)

这是 NPS 的大脑,决定了端口、密码和运行模式。

# 在 /opt/nps/conf 目录下创建
vi nps.conf

​nps.conf​ 详细配置内容:

# --- 基础配置 ---
appname = nps
# 运行模式:dev(开发) 或 pro(生产),dev 模式下日志更详细
runmode = dev

# --- 核心通信端口 ---
# [重要] 客户端(NPC)连接服务端的端口
# 需要在云服务器防火墙放行此端口 (TCP)
bridge_port=28024

# --- Web 管理后台配置 ---
# Web 管理界面访问端口 (如 http://IP:8080)
# 需要在云服务器防火墙放行此端口 (TCP)
web_port=28080

# Web 界面登录用户名
web_username=admin
# [必改] Web 界面登录密码 (请务必修改为强密码)
web_password=123

# --- 端口防冲突配置 ---
# 为了防止 NPS 占用了服务器原本的 80/443 端口 (通常被 Nginx/1Panel 占用)
# 我们将 NPS 的 HTTP 代理端口改为非常规端口
http_proxy_port=18080
https_proxy_port=18443

# 绑定 IP,0.0.0.0 代表允许所有外网连接
bridge_ip=0.0.0.0

# --- 高级限制与鉴权 ---
# 最大并发隧道数量
max_tunnel_num=100
# 最大客户端连接数
max_client_num=50
# 默认的公共连接密钥 (通常用不上,我们在网页端为每个客户端单独设置 vkey)
public_vkey=123

# 是否允许在 Web 界面进行用户注册 (个人使用建议关闭,更安全)
allow_user_login=false
allow_user_register=false

# --- 端口开放范围 ---
# 限制网页上可以随意开启的端口范围,防止误占用系统端口
allow_ports=900-65500

3. 编写 Docker Compose (docker-compose.yml​)

Bash

# 回到项目主目录 /opt/nps
cd /opt/nps
vi docker-compose.yml

​docker-compose.yml​ 内容:

YAML

services:
  nps:
    # 使用社区维护的活跃镜像,替代原版 ffdfgdfg (已停更)
    image: yisier1/nps
    container_name: nps
    restart: always
    
    # [核心配置] Network Mode: Host
    # 容器直接共享宿主机(云服务器)的网络栈。
    # 优势:
    # 1. 性能最好,没有 NAT 损耗。
    # 2. 网页后台新增端口映射时,无需修改 compose 文件,无需重启容器,立即生效。
    network_mode: host
    
    volumes:
      # 将宿主机的配置目录挂载到容器内部
      # 包含了 nps.conf 和我们刚才初始化的 json 数据库
      - ./conf:/conf

4. 启动与防火墙设置

Bash

# 启动服务
docker-compose up -d

# 查看日志 (确认无报错)
docker logs -f nps

⚠️ 防火墙放行提醒:

请务必去腾讯云/阿里云控制台的​安全组​,放行以下 TCP 端口:

  • 28080: 用于 Web 管理。

  • 28024: 用于 NPC 客户端连接。

  • 后续: 以后每增加一个穿透端口 (如 38080),都要记得来这里放行,如果采用反代策略则忽略这条。


0

评论区