私有 NPM proxy registry verdaccio
在建置 VUE 專案時,由於客戶需求須在封閉環境建立Docker image。這就麻煩了,再考慮資訊安全情況下只能建立私有的 NPM proxy registry。找尋了眾多解決方案,發現了一套可以一次滿足兩種需求:必要時開啟防火牆更新 NPM Registry,在不能連網時又可以給內部開發人員使用。
verdaccio 需要安裝 nodejs v12 以上版本
安裝必要套件
安裝環境為 RedHat 8,並使用 pm2(一個管理Node.js 的工具,用簡單的指令執行 Node.js相關程式)。
# Step 1. 安裝NPM
dnf install npm
# Step 2. 安裝新版NPM
npm install -g npm@8.3.0
# Step 3. 安裝新版的 nodejs
dnf module reset nodejs
dnf module install nodejs:14
# Step 4. 安裝必要套件
npm install -g all-the-package-names --save
npm install -g npm-package-downloader
# Step 5. 安裝 pm2
npm install -g pm2
# Step 6. 安裝 verdaccio
npm install --g verdaccio
建立執行verdaccio軟體執行專用帳號 npmproxy
# 新增帳號 npmproxy
useradd npmproxy
# 設定npmproxy密碼
passwd npmproxy
# 開啟 5566 埠號防火牆
firewall-cmd --zone=public --add-port=5566/tcp --permanent
# 重啟防火牆讓設定生效
firewall-cmd --reload
# 切換帳號為 npmproxy,並回到npmproxy家目錄,載入個人環境設定檔
su npmproxy
cd ~
source .bash_profile
# 嘗試執行 verdaccio
verdaccio
# 會看到類似下列回應代表已經成功啟用
info --- Creating default config file in /home/npmproxy/verdaccio/config.yaml
warn --- config file - /home/npmproxy/verdaccio/config.yaml
warn --- Plugin successfully loaded: verdaccio-htpasswd
warn --- Plugin successfully loaded: verdaccio-audit
warn --- http address - http://localhost:5566/ - verdaccio/5.3.2
修改修改 /home/npmproxy/verdaccio/config.yaml,新增 listen: - 0.0.0.0:4873
# 新增此設定,使其能夠從外部連線5566埠
listen:
- 0.0.0.0:5566
新增verdaccio NPM proxy 使用者
npm set registry http://localhost:5566/
npm login
Username: 自行輸入
Password: 自行輸入
Email: (this IS public) xxx@xxx.xxx
# 使用下列指令新增 verdaccio 網頁之帳號密碼
npm adduser --registry http://localhost:5566/
Username: 自行輸入
Password: 自行輸入
Email: (this IS public) xxx@xxx.xxx
Logged in as npmproxy on http://localhost:5566/.
使用pm2將verdaccio啟動於背景
# 使用pm2將verdaccio啟動於背景
pm2 start `which verdaccio`
# 若要停止指令如下
pm2 stop verdaccio
內部人員在使用時設定 npm proxy registry
# 查看指令 目前的 registry
npm get registry
# 設定為內部的npm proxy registry
npm set registry http://localhost:5566/
到此為止,就有一個私有NPM proxy registry!