当前位置: 首页 > 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.dtcms.com/a/315557.html

相关文章:

  • HTML 媒体元素概述
  • DashVector专有网络
  • DDoS 防护的未来趋势AI 如何改变安全行业
  • Baumer相机如何通过YoloV8深度学习模型实现工厂自动化产线牛奶瓶盖实时装配的检测识别(C#代码UI界面版)
  • Pseudo Pseudo Random Numbers
  • Docker使用的常见问题
  • 《BFC的深层逻辑与全域应用》
  • 目标检测、分割的数据增强策略
  • 前端安全攻防
  • CVE-2017-8291源码分析与漏洞复现(PIL远程命令执行漏洞)
  • Kafka-Eagle 安装
  • LeetCode——2411. 按位或最大的最小子数组长度
  • 工业级 CAN 与以太网桥梁:串口服务器CAN通讯转换器深度解析(上)
  • 【Git】git提交代码报错Git: husky > pre-commit
  • 【java】大数据insert的几种技术方案和优缺点
  • 机器学习——集成学习(Ensemble Learning)详解:原理、方法与实战应用
  • 机遇识别与商业变革:基于开源AI大模型、AI智能名片与S2B2C商城小程序的协同创新研究
  • 【Day 16】Linux-性能查看
  • SpringBoot3.x入门到精通系列:4.3 性能优化技巧
  • 飞算JavaAI需求转SpringBoot项目:从零到一的沉浸式开发之旅
  • Angular进阶之十三:Angular全新控制流:革命性的模板语法升级
  • Solidity智能合约基础
  • Python 函数详解
  • 精华贴分享|指数,衍生品,与交易时间之间的逻辑关系
  • Apache OFBiz Scrum 组件命令注入漏洞
  • MySQL 查询性能优化与索引失效问题全解析
  • 视频水印技术中的变换域嵌入方法对比分析
  • K8s Master状态NotReady
  • Linux内核参数调优:为K8s节点优化网络性能
  • Datart:开源数据可视化的新星,赋能企业数据分析