1. BaGet 介绍
BaGet 是一个开源的 NuGet 服务器,旨在提供轻量级、高性能且易于部署的 NuGet 包管理解决方案。它支持多种存储后端(如 Azure Blob Storage、Amazon S3、Local File Storage System/本地文件系统 等),并且具有高度可定制性和扩展性。
BaGet源码托管地址为:https://github.com/loic-sharma/BaGet
1.2 主要特点
BaGet 是基于 .NET Core 开发的 NuGet 包服务器应用组件,因此需要运行环境安装 .NET Core SDK,BaGet 具有以下特性:
- 轻量级:
BaGet是一个轻量级的NuGet服务器,适合小型到中型项目。 - 高性能:利用
ASP.NET Core和SQLite/PostgreSQL提供高性能的服务。 - 配置持久化:支持多种数据库类型,支持离线缓存。
- 易于部署:支持
Docker容器化部署,方便快速搭建。 - 高度可定制:支持多种存储后端(包括云存储)和配置选项。
- 安全:支持
HTTPS和API密钥认证。
1.3 使用说明
1.3.1 安装与部署
1.3.1.1 Docker 部署
# 拉取镜像
docker pull jkempf/baget
# 运行容器
docker run -p 5000:5000 --name baget -d jkempf/baget
这将启动一个默认配置的 BaGet 实例,并映射端口 5000 到宿主机。
1.3.1.2 手动部署
# 下载源码
git clone https://github.com/jkempf/baget.git
# 进入代码目录
cd baget
# 安装依赖
dotnet restore
# 构建项目
dotnet publish -c Release -o ./publish
# 运行应用
dotnet ./publish/BaGet.dll
1.3.1.3 配置
-
使用环境变量配置
设置环境变量
export BAGET__STORAGE__TYPE=FileSystem
export BAGET__STORAGE__PATH=/path/to/packages
export BAGET__DATABASE__CONNECTION_STRING="Data Source=/path/to/baget.db"
export BAGET__API_KEY=your-api-key运行应用
dotnet ./publish/BaGet.dll
-
使用
JSON配置文件创建 json 配置文件
{
"Storage": { "Type": "FileSystem", "Path": "/path/to/packages" }, "Database": { "ConnectionString": "Data Source=/path/to/database.db" }, "ApiKey": "your-api-key" // 此处配置 API 安全密钥}
指定配置文件路径
dotnet ./publish/BaGet.dll --configuration /path/to/config.json
1.3.1.4 部署成功验证
IIS管理器 → 右键「网站」→ 添加网站: 名称:NuGetServer 物理路径:指向发布文件夹(如D:\DEV\Web\NuGetServer) 端口:建议使用非80端口(如9000)避免冲突 应用程序池 → 设置.NET版本为v4.0,托管模式为「集成」


访问对应的网址,出现如下页面说明部署成功了

1.3.1.5 修改nuget包配置
上传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>
1.4 配置Nuget仓库并上传package
下载NuGet

将下载的exe文件放到指定的文件夹中,然后配置环境变量(比如我放在D:\application\Nuget路径下,那么我就将D:\application\Nuget添加到系统环境变量中)

测试是否成功,打开cmd,输入nuget,回车如下图则成功。

nuget.exe spec 生成 NuSpec 文件或者手动创建

执行 nuget.exe pack 打包即可

