refactor(mirror): replace 3 services with single Nexus Repository Manager

Consolidates BaGet + Verdaccio + registry:2 into one Sonatype Nexus OSS
instance with a REST API provisioning script.

docker-compose.mirror.yml: single nexus service, ports 8081 (UI/NuGet/npm)
  and 8083 (Docker Hub pull-through proxy)
mirrors/nexus/provision.sh: idempotent setup — changes admin password,
  enables anonymous access, creates nuget-proxy / npm-proxy / docker-hub-proxy
nuget.mirror.config: updated source URL to Nexus NuGet proxy endpoint
ci-cd.yml: updated npm --registry to Nexus npm proxy endpoint

Run once on server: docker compose -f docker-compose.mirror.yml up -d
  then: ./mirrors/nexus/provision.sh

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-05-28 14:35:55 +03:30
parent 6f85cfe4d3
commit 61e44c63ab
4 changed files with 210 additions and 87 deletions
+8 -8
View File
@@ -24,11 +24,11 @@ concurrency:
# node:20-alpine → no git → checkout fails
# Fix: plain shell git clone via http.extraheader (token never in process list).
#
# Local mirrors (started via docker-compose.mirror.yml):
# Local mirrors — Nexus Repository Manager (docker-compose.mirror.yml):
# "mirror" hostname → host-gateway (docker bridge IP 172.17.0.1)
# NuGet → http://mirror:5101 (BaGet — nuget.mirror.config)
# npm → http://mirror:4873 (Verdaccio — --registry flag)
# Docker Hub → configured in /etc/docker/daemon.json on the host
# NuGet → http://mirror:8081/repository/nuget-proxy/ (nuget.mirror.config)
# npm → http://mirror:8081/repository/npm-proxy/ (--registry flag)
# Docker → http://mirror:8083 (daemon.json registry-mirrors)
# ─────────────────────────────────────────────────────────────────────────────
jobs:
@@ -136,7 +136,7 @@ jobs:
- name: Install dependencies
working-directory: web/dashboard
run: npm install --legacy-peer-deps --ignore-scripts --registry http://mirror:4873
run: npm install --legacy-peer-deps --ignore-scripts --registry http://mirror:8081/repository/npm-proxy/
- name: TypeScript check
working-directory: web/dashboard
@@ -168,7 +168,7 @@ jobs:
- name: Install dependencies
working-directory: web/admin
run: npm install --legacy-peer-deps --ignore-scripts --registry http://mirror:4873
run: npm install --legacy-peer-deps --ignore-scripts --registry http://mirror:8081/repository/npm-proxy/
- name: TypeScript check
working-directory: web/admin
@@ -200,7 +200,7 @@ jobs:
- name: Install dependencies
working-directory: web/website
run: npm install --legacy-peer-deps --ignore-scripts --registry http://mirror:4873
run: npm install --legacy-peer-deps --ignore-scripts --registry http://mirror:8081/repository/npm-proxy/
- name: TypeScript check
working-directory: web/website
@@ -232,7 +232,7 @@ jobs:
- name: Install dependencies
working-directory: web/finder
run: npm install --legacy-peer-deps --ignore-scripts --registry http://mirror:4873
run: npm install --legacy-peer-deps --ignore-scripts --registry http://mirror:8081/repository/npm-proxy/
- name: TypeScript check
working-directory: web/finder