当前位置: 首页 > news >正文

NuGet03-私有仓库搭建

零、文章目录

NuGet03-私有仓库搭建

1、主流搭建方案对比

工具/方案适用场景特点
NuGet.Server简单场景、Windows 环境优先微软官方方案,需 IIS 部署,配置简单但功能有限
BaGet轻量级、快速部署、跨平台支持基于 .NET Core,Docker 一键部署,支持私有包存储与代理缓存
Nexus Repository企业级多语言仓库(Java/NuGet/NPM)功能强大,支持代理、托管、组仓库,需较高配置

2、NuGet.Server服务搭建(简单场景)

(1)官方文档
  • 官方文档:https://learn.microsoft.com/nuget/hosting-packages/nuget-server
(2)环境准备
  • 基础要求
    • Windows Server 2016+ 或支持IIS的Windows系统
    • .NET Framework 4.6+ 运行环境
    • Visual Studio 2019+(推荐使用社区版)
  • IIS组件安装
    • 控制面板 → 程序 → 启用或关闭Windows功能 → 勾选以下内容:
      ✔️ IIS管理控制台
      ✔️ ASP.NET 4.8
      ✔️ 静态内容、目录浏览(用于包列表显示)
(3)服务端创建
  • 新建ASP.NET空Web项目(选择.NET Framework 4.6+模板)

  • 通过NuGet安装服务端核心包:
Install-Package NuGet.Server -Version 3.4.2  # 兼容.NET Framework的最新稳定版
  • 修改Web.config
<appSettings><add key="requireApiKey" value="true" />  <!-- 启用API密钥验证 --><add key="apiKey" value="MySecretKey123" />  <!-- 自定义推送密钥 --><add key="packagesPath" value="D:\DEV\NuGetPackages" />  <!-- 自定义包存储路径 --><add key="allowInsecureConnections" value="true" />  <!-- 允许HTTP -->
</appSettings>
(4)IIS部署流程
  • 右键项目 → 发布 → 选择「文件夹」发布方式 → 生成发布包

  • IIS管理器 → 右键「网站」→ 添加网站:
    • 名称:NuGetServer
    • 物理路径:指向发布文件夹(如D:\DEV\Web\NuGetServer
    • 端口:建议使用非80端口(如9000)避免冲突
    • 应用程序池 → 设置.NET版本为v4.0,托管模式为「集成」

  • 验证访问:http://127.0.0.1:9000/ ,出现下面页面表示部署成功。

(5)上传NuGet包
  • 上传之前,需要在 nuget 的配置文件加上源C:\Users\{用户名}\AppData\Roaming\NuGet\NuGet.Config
<configuration><packageSources><!-- 关键修改:添加 allowInsecureConnections 属性允许HTTP --><add key="NuGet.Server" value="http://127.0.0.1:9000/nuget" allowInsecureConnections="true" /></packageSources>
</configuration>
  • 使用命令行将 NuGet 包上传到服务器上。
dotnet nuget push BluecusliyouPackage.1.0.0.nupkg -k MySecretKey123 -s http://127.0.0.1:9000/nuget

3、BaGet服务搭建(轻量级方案)

(1)官方文档
  • GitHub 主仓库: https://github.com/loic-sharma/BaGet 包含最新源码、文档、Issue 跟踪及版本发布信息。
  • 官方文档站: https://loic-sharma.github.io/BaGet/提供部署指南、配置参数详解及功能说明。
  • Release 下载页: https://github.com/loic-sharma/BaGet/releases可直接下载预编译包(如 BaGet.zip )用于快速部署
(2)环境准备
  • 操作系统:Centos7.9,安装 Docker
  • 资源要求:
    • 内存 ≥ 8GB(建议 16GB+)
    • 存储 ≥ 100GB(推荐 SSD)
(3)服务部署
  • docker相关知识请参考:https://blog.csdn.net/liyou123456789/article/details/122292877
  • linux 相关知识请参考:https://blog.csdn.net/liyou123456789/article/details/121548156
# 创建数据存储目录 
mkdir ~/baget-data && cd ~/baget-data # 运行容器(配置端口、存储卷和 API Key)
docker run -d --name baget \-p 5555:80 \-v ~/baget-data:/var/baget \-e Baget__ApiKey=YourSecretKey \-e Baget__Storage__Type=FileSystem \-e Baget__Storage__Path=/var/baget \-e Baget__Mirror__Enabled=true \-e Baget__Mirror__PackageSource=https://api.nuget.org/v3/index.json \loicsharma/baget:latest
  • 参数说明
参数作用注意事项
-d以守护进程模式运行容器(后台运行)避免阻塞终端,适合生产环境
--name baget指定容器名称为 baget便于通过 docker logs baget
查看日志
-p 5555:80将容器内部 80 端口映射到宿主机 5555 端口访问地址:http://宿主机IP:5555
-v ~/baget-data:/var/baget挂载宿主机目录 ~/baget-data
到容器内 /var/baget
确保宿主机目录有写入权限(如 chmod 777 ~/baget-data
环境变量(关键配置)
-e Baget__ApiKey=YourSecretKey设置推送包的 API 密钥(需保密)推送命令需匹配此密钥:dotnet nuget push -k YourSecretKey
-e Baget__Storage__Type=FileSystem存储类型设为本地文件系统支持 FileSystem
/AzureBlobStorage
/S3
-e Baget__Storage__Path=/var/bagetNuGet 包存储路径(需与 -v
挂载路径一致)
持久化数据至宿主机目录
-e Baget__Mirror__Enabled=true启用官方 NuGet 代理镜像自动缓存从官方源下载的包,加速内网访问
-e Baget__Mirror__PackageSource=https://api.nuget.org/v3/index.json设置代理镜像源为官方 NuGet V3 接口必须为 V3 格式 URL,否则代理失效
loicsharma/baget:latest使用官方 BaGet 镜像的最新版本可用特定版本如 v0.4.0
提高稳定性
  • 验证:浏览器访问 http://192.168.119.180:5555,显示包管理页面即成功

(4)上传NuGet包
  • 上传之前,需要在 nuget 的配置文件加上源C:\Users\{用户名}\AppData\Roaming\NuGet\NuGet.Config
<configuration><packageSources>    <add key="BaGet" value="http://192.168.119.180:5555/v3/index.json" allowInsecureConnections="true" /></packageSources>
</configuration>
  • 使用命令行将 NuGet 包上传到服务器上。
dotnet nuget push -k YourSecretKey -s http://192.168.119.180:5555/v3/index.json BluecusliyouPackage.1.0.0.nupkg
(5)上传效果

4、Nexus 3 服务搭建(企业级方案)

(1)官方文档
  • 官方文档:https://help.sonatype.com/en/sonatype-nexus-repository.html
(2)环境准备
  • 操作系统:Centos7.9,安装 Docker
  • 资源要求:
    • 内存 ≥ 8GB(建议 16GB+)
    • 存储 ≥ 100GB(推荐 SSD)
(3)安装部署
# 创建数据目录 
mkdir -p /opt/nexus-data && chown -R 200:200 /opt/nexus-data# 运行容器
docker run -d \--name nexus \-p 8081:8081 \-p 8082-8085:8082-8085 \-v /opt/nexus-data:/nexus-data \--restart unless-stopped \sonatype/nexus3:latest
  • 验证:等待 2-5 分钟,访问 http://服务器IP:8081
  • 首次启动需从 /opt/nexus-data/admin.password 获取初始密码。

(4)仓库配置
  • 登录管理界面
    • 地址:http://<IP>:8081 → 输入初始密码 → 重置管理员密码(建议复杂密码) admin 123456。
  • 创建 Blob 存储(逻辑存储单元)
    • 设置 → Repository → Blob Stores → Create Blob Store

- 类型:File → 命名(如 `nuget-hosted`),路径默认。

  • 仓库类型创建:
    • nuget-hosted(托管私有包)
    • nuget.org-proxy (代理官方库)
    • nuget-group(聚合上述仓库)。

  • 启用 NuGet Realm:
    • Security → Realms 中添加 NuGet API-Key Realm

(5)上传NuGet包
  • **生成API Key:**登录 Nexus → 用户头像 → NuGet API Key → 验证密码后获取密钥(GUID 格式)。

  • 上传之前,需要在 nuget 的配置文件加上源C:\Users\{用户名}\AppData\Roaming\NuGet\NuGet.Config
<configuration><packageSources>    <add key="Nexus.hosted" value="http://192.168.119.180:8081/repository/nuget-hosted/" allowInsecureConnections="true" /></packageSources>
</configuration>
  • 使用命令行将 NuGet 包上传到服务器上。
dotnet nuget push BluecusliyouPackage.1.0.0.nupkg -k e2bb20d1-fa9d-3b14-b570-752b274aab93 -s http://192.168.119.180:8081/repository/nuget-hosted/
(6)上传效果

http://www.lryc.cn/news/610618.html

相关文章:

  • mac前端环境安装
  • 【ARM】CMSIS6 介绍
  • Mac上pnpm的安装与使用
  • AIDL学习
  • 《算法导论》第 2 章 - 算法基础
  • 朴素贝叶斯(Naive Bayes)算法详解
  • pipeline方法关系抽取--课堂笔记
  • 神坛上的transformer
  • VUE2 学习笔记18 路由守卫
  • 无人机 × 巡检 × AI识别:一套可复制的超低延迟低空视频感知系统搭建实践
  • 人月神话:软件工程的永恒智慧
  • Android 之 Kotlin中的协程(Dispatchers.IO)
  • 研发团队看板协作中的自动化实践:集成CI/CD与任务流转
  • Goby 漏洞安全通告| NestJS DevTools /inspector/graph/interact 命令执行漏洞(CVE-2025-54782)
  • Linux内核参数调优:为K8s节点优化网络性能
  • 【功能测试】软件功能上线测试经验总结
  • K8S健康检查巡检清单
  • K8s Master状态NotReady
  • 播放器音频后处理实践(一)
  • 【Axure视频教程】动态折线图
  • 从 “看懂图” 到 “读懂视频”:多模态技术如何用文本反哺视觉?
  • 02-算法
  • 基于Istio与Envoy的gRPC流量控制与熔断降级实战经验分享
  • 43.MySQL管理
  • 站在JS的角度,看鸿蒙中的ArkTs
  • 进阶向:PDF合并/拆分工具
  • 让 Spark 干体力活:用 Java 快速找出最小值
  • 集成电路学习:什么是RS-232推荐标准232
  • neo4j虚拟关系的统计
  • golang实现支持100万个并发连接(例如,HTTP长连接或WebSocket连接)系统架构设计详解