npm-proxy

🔀 NPM代理自动化运维工具

编辑精选

通过REST API管理Nginx Proxy Manager的代理主机、SSL证书和访问控制,适合运维人员快速配置反向代理与自动化域名管理。

收藏
5.6k
安装
1.7k
版本
v1.0.0
CLS 安全性认证2026-05-01
点击查看完整报告 >

使用说明

核心用法

npm-proxy技能通过调用Nginx Proxy Manager(NPM)的REST API,实现对反向代理配置的自动化管理。用户需配置NPM_URLNPM_EMAILNPM_PASSWORD`三个环境变量完成身份认证。技能支持列出所有代理主机、查看特定主机详情、启用/禁用主机、删除主机以及管理SSL证书等核心操作。添加新主机时需直接调用API,支持配置域名转发、SSL强制、WebSocket升级、HTTP/2支持等高级选项,并可一键启用Let's Encrypt自动证书。

显著优点

该技能将NPM的Web界面操作转化为命令行工具,极大提升了运维效率。对于需要频繁变更代理配置的场景(如CI/CD流水线、多环境部署),自动化脚本替代手动点击可显著减少人为错误。纯Python标准库实现(无第三方依赖)降低了部署复杂度,JWT token的本地缓存机制(存储于/root/.npm-token.json)避免了重复认证的开销。支持的高级功能如HSTS、缓存控制、漏洞拦截等,满足了生产环境的安全需求。

潜在缺点与局限性

当前实现存在明显功能缺口:添加新主机需直接使用curl而非封装好的命令,脚本功能被描述为"minimal",用户体验不完整。文件名包含异常换行符(scripts\nnpm_client.py)暗示开发规范性问题。Token文件权限未强制设置,存在敏感信息泄露风险。错误处理较为粗糙,直接打印到stderr后退出,不利于集成到更复杂的自动化流程中。此外,技能仅支持NPM管理员账户,缺乏基于角色的权限细分。

适合的目标群体

主要面向DevOps工程师、系统管理员和运维开发人员,特别是已部署NPM作为统一入口网关的技术团队。适合需要批量管理数十个代理主机、自动化SSL证书续期、或将代理配置纳入Infrastructure as Code实践的组织。对于个人开发者或小规模项目,直接使用NPM的Web界面可能更为直观。

使用风险

安全风险:环境变量传递密码存在日志泄露隐患;token文件若权限设置不当可被其他进程读取;文件名异常可能逃避某些安全扫描。运维风险:直接操作生产环境的NPM配置可能导致服务中断;缺乏操作确认机制,误删主机难以恢复。依赖风险:技能与特定NPM版本绑定,API变更可能导致功能失效;需要稳定的网络连接到NPM实例。合规风险:Let's Encrypt证书申请受速率限制,批量操作可能触发封禁。

安全解读

核心用法

npm-proxy 是一款 Nginx Proxy Manager (NPM) 的 API 客户端 Skill,允许用户通过命令行管理反向代理主机、SSL 证书和访问控制列表。主要功能包括:

  • 代理主机管理:列出、启用/禁用、删除代理主机
  • SSL 证书管理:查看证书列表,支持 Let's Encrypt 自动续期
  • 域名配置:添加新域名指向内部服务器端口,支持 HTTP/HTTPS 转发
  • 高级选项:WebSocket 升级、HTTP/2 支持、缓存、HSTS 等

显著优点

  • 零依赖安全:仅使用 Python 标准库(urllib、json),无第三方包依赖,彻底规避供应链攻击风险
  • 凭证管理规范:敏感信息(邮箱、密码)从环境变量读取,符合安全最佳实践
  • 轻量高效:124 行核心代码,功能聚焦,审计成本低
  • 自托管友好:专为私有 NPM 实例设计,数据完全由用户掌控

潜在缺点与局限性

  • 功能受限:创建新主机需直接使用 curl,客户端脚本仅实现基础查询/开关操作
  • Token 明文缓存:API Token 以 JSON 格式明文存储于 ~/.npm-token.json,存在本地文件权限风险
  • 无 HTTPS 强制校验:代码未验证 NPM_URL 协议,可能误用 HTTP 导致凭证泄露
  • 错误处理简陋:通用 Exception 捕获,网络超时场景处理不完善
  • 个人开发者维护:来源可信度 T3,无组织背书,长期更新存在不确定性

适合人群

  • 已部署 Nginx Proxy Manager 的自托管用户
  • 需要自动化管理反向代理的 DevOps/运维工程师
  • 熟悉 Docker/Homelab 环境的技术爱好者
  • 重视供应链安全、愿意审查代码的谨慎用户

常规风险

1. 中间人攻击:若 NPM_URL 配置错误或强制 HTTPS 未生效,凭证传输可能被截获
2. 本地权限提升:Token 文件默认权限宽松,多用户系统下可能被其他进程读取

3. NPM 实例安全:Skill 安全性完全依赖后端 NPM 服务器的配置与防护

4. 功能误用:高级配置(advanced_config)直接透传 Nginx 配置,语法错误可能导致服务故障

使用建议

建议部署前手动添加 HTTPS 强制校验和 Token 文件 600 权限设置,定期检查 NPM 实例和 Skill 的更新状态。

npm-proxy 内容

scripts文件夹
手动下载zip · 2.9 kB
npm_client.pytext/plain
请选择文件