Nexus 是支持 Nuget、Docker、Npm 等多种包的仓库管理器,可用做私有包的存储分发,缓存官方包。
https://help.sonatype.com/en/sonatype-nexus-repository.html

环境需求

  • Docker

安装

  1. 创建数据挂载目录并赋予权限 mkdir data && chown -R 200 data
  2. 创建 docker-compose. Yml 文件
version: '3.1'
services:
nexus:
# 这里使用latest可能拉不动
image: m.daocloud.io/docker.io/sonatype/nexus3:3.61.0
container_name: nexus3
restart: always
environment:
# Nexus 上下文路径
NEXUS_CONTEXT: /
# 指定jvm参数
INSTALL4J_ADD_VM_PARAMS: -Xms1g -Xmx1g -XX:MaxDirectMemorySize=3g
volumes:
# 本地挂载数据
- ./data:/nexus-data
ports:
# 端口映射
- "8081:8081"
networks:
- nexusnetwork

networks:
nexusnetwork:
external: true
  1. 运行 docker compose up -d
  2. 等待片刻,nexus 需要时间构建,在此期间访问可能导致 apache 2 占用 8081 接口
  3. 访问 http://${server_address}:8081 即可
  4. 右上角 Login,管理员默认登录密码在 data/admin.password,这里使用 admin + admin. Password 登录后会提示修改密码,修改后 admin. Password 文件会直接被删除,不要使用原密码!!
  5. 提示可以禁止匿名访问,这样仅有授权用户可以访问资源

Nuget 配置

仓库说明

Nexus 有三个默认仓库

  • Nuget-group:组合存储库,可以将多个远程或本地存储库组合成一个虚拟存储库,默认包含 nuget-hosted,nuget. Org-proxy。拉取包的地址一般配置此仓库地址
  • Nuget-hosted:托管存储库,本地发布的包可以存储到此存储库。推送包的地址需要配置此仓库地址
  • Nuget. Org-proxy:代理存储库,缓存 nuget. Org 的包并从本地服务器上提供它们

权限配置

  • 点击齿轮可进入设置,在 Roles 中可创建角色,Users 中可创建用户,可以为角色分配相应的不同权限,角色之间也可以互相包含

Nuget 秘钥

  • 点击右上角的 User 图标,可以看到左边第二栏 Nuget API Key
    image-20250114174013491.png

点击 Access API Key,按照提示即可
image-20250114174036710.png

此时秘钥无法直接使用,需要在设置 Security-> Realms 中启用 NuGet API-Key Realm
https://help.sonatype.com/en/realms.html#Realms-NuGetAPI-KeyRealm
image-20250114174142845.png

设置部署策略

默认 nuget 包托管是启用了,而为了防止包被恶意篡改,可以将 nuget-hosted 仓库修改为禁用重新部署,多人协同开发时可防止包被被其他人覆盖。在设置了禁用重新部署时,推送重复包的时候将会返回 400 错误
https://help.sonatype.com/en/namespace-confusion-protection.html#NamespaceConfusionProtection-ConfigureNexusRepository3