npm-proxy

🔀 NPM代理自动化运维工具

🥥6总安装量 2评分人数 2
100% 的用户推荐

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

C

存在明显风险,不建议直接用于敏感场景

  • 来自社区或个人来源,建议先隔离验证
  • ❌ <br/>**文件名异常**:主脚本文件名包含换行符(`scripts\nnpm_client.py`),可能用于混淆文件位置或逃避安全检查
  • ⚠️ <br/>**Token存储风险**:JWT token存储于`/root/.npm-token.json`,但未强制设置文件权限,存在敏感信息泄露可能
  • ⚠️ <br/>**环境变量暴露**:依赖环境变量传递管理员密码,存在被进程日志或容器镜像历史记录捕获的风险
  • ⚠️ <br/>**来源未经验证**:开发者"weird-aftertaste"及"clawdbot"组织缺乏社区知名度和长期维护记录
  • ✅ <br/>**无远程代码执行**:未发现eval、exec、subprocess等危险函数调用,核心功能逻辑清晰

使用说明

核心用法

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 内容

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