Linux搭建Verdaccio私有npm仓库需四步:①确认Node.js≥v18.20.0并用nvm管理;②Docker或systemd部署,配置listen: 0.0.0.0:4873并开放防火墙端口;③启用htpasswd认证及@corp/*命名空间权限控制;④客户端通过npm set registry或--registry指向服务IP完成包发布与安装。

在 Linux 运维中搭建 Verdaccio 实现局域网 Node.js 私有包托管,核心是让服务可被内网其他机器访问、具备基础权限控制、能缓存公共包并安全发布私有包。不依赖复杂数据库或额外中间件,轻量可靠。
确保 Node.js 环境就绪
Verdaccio 依赖 Node.js(v14+,推荐 v18 LTS)。运维部署前需确认:
- 执行 node -v 和 npm -v,输出版本不低于 v18.20.0 和 v9.9.0
- 若未安装,建议用 nvm 管理(避免 root 权限污染):
nvm install 18 && nvm use 18 - 非 root 用户全局安装更安全:
npm install -g verdaccio --user(配合npm config set prefix设置 bin 路径)
选择适合运维场景的部署方式
生产环境推荐 Docker,测试/小团队可用直接运行,关键区别在于隔离性与可维护性:
使用约定式提交(Conventional Commits)生成标准化的 Git 提交信息。适用于以下场景: (1) 暂存更改时需要提交信息; (2) 审查 diff 时希望获得结构化摘要; (3) 编写 PR 描述或变更日志(changelog)条目; (4) 用户明确要求“为本次更改编写提交信息”。 该功能会分析已暂存/未暂存的 diff,并生成按类型(type)划分范围的提交信息。
-
Docker 部署(推荐):配置与数据卷分离,升级镜像不影响数据
拉取镜像:docker pull verdaccio/verdaccio:latest
启动命令示例(映射端口 + 持久化):docker run -d --name verdaccio -p 4873:4873 \-v /opt/verdaccio/conf:/verdaccio/conf \-v /opt/verdaccio/storage:/verdaccio/storage \verdaccio/verdaccio:latest -
直接运行(快速验证):
生成默认配置:verdaccio --init→ 保存为/etc/verdaccio/config.yaml
修改listen为0.0.0.0:4873(允许局域网访问)
用 systemd 托管服务(非前台运行):
新建/etc/systemd/system/verdaccio.service,指定用户、工作目录和配置路径
配置局域网访问与基础安全
默认只监听 localhost,必须显式放开内网访问,并防止未授权发布:
- 编辑
config.yaml,确认listen字段为:listen: 0.0.0.0:4873 - 开放系统防火墙(以 firewalld 为例):
firewall-cmd --permanent --add-port=4873/tcpfirewall-cmd --reload - 启用 htpasswd 认证(取消注释 auth 段):
auth:htpasswd:file: ./htpasswd
然后生成管理员:htpasswd -c ./htpasswd admin - 限制私有包命名空间(如
@corp/*)仅允许登录用户发布:'@corp/*':allow: $authenticatedpublish: $authenticated
客户端接入与日常使用
局域网内开发机只需简单配置即可使用,无需改代码:
- 设置当前项目 npm 源:
npm set registry http://verdaccio-server-ip:4873 - 注册/登录账号(首次发布前必需):
npm adduser --registry http://server-ip:4873 - 发布私有包:
npm publish --registry http://server-ip:4873 - 临时切换源(推荐):
npm install lodash --registry https://registry.npmjs.org/npm install @corp/utils --registry http://server-ip:4873










