嘿,兄弟!是不是经常在开发.NET项目的时候,被各种包管理搞得头大?公共的NuGet源虽然方便,但一旦涉及到公司内部组件、敏感代码或者想做点“私货”,用公共源就显得不太靠谱了。这时候,一个私有的NuGet仓库简直就是你的救星。

今天我就来带你实操一把——用阿里云的轻量应用服务器(也就是大家常说的“轻量服务器”),从零开始搭建一个稳定、安全、还能自己掌控的私有NuGet仓库。整个过程不吹牛,只要你懂点基础命令和.NET环境,1小时之内绝对能搞定!而且成本还低,特别适合个人开发者、小团队甚至创业公司。
为什么选阿里云轻量服务器?
首先咱们得说说为啥要选阿里云的轻量服务器。你可能也听说过ECS,但那玩意儿对新手来说配置复杂、价格偏高。而轻量服务器就不一样了,它主打的就是“简单+便宜+够用”。
比如我现在用的是2核2G内存、5M带宽、60GB SSD的套餐,月租才几十块,跑个NuGet服务绰绰有余。关键是控制台特别友好,IP、防火墙、SSH登录一键搞定,连域名绑定都给你集成了,简直是懒人福音。
最重要的是,阿里云在国内访问速度快,延迟低,不像某些国外VPS,传个包都要等半天。你团队成员在北上广深,还是新疆西藏,都能快速拉取私有包,效率直接拉满。
准备工作:买服务器 + 装环境
第一步,当然是先搞一台服务器。你可以直接去阿里云官网搜“轻量应用服务器”,选择适合你的配置。我建议最低选2核2G,系统选Ubuntu 20.04或22.04 LTS版本,稳定又省心。
顺带提一嘴,现在新用户注册还能领一大波优惠券,老用户偶尔也有返场福利。如果你还没领过,强烈建议点这里先去领取阿里云优惠券,买服务器能省下不少钱,尤其是你要长期用的话,首年折扣简直香到不行。
服务器买好之后,通过SSH登录进去,准备装环境。我们这次要用的是一个叫BaGet的开源项目,它是专为NuGet设计的轻量级私有包服务器,支持NuGet、Symbol Server,还能对接数据库和云存储,最关键的是——它用ASP.NET Core写的,部署起来特别顺手。
安装 .NET SDK 和 BaGet
登录服务器后,先更新系统:
sudo apt update && sudo apt upgrade -y
然后安装.NET SDK,我推荐装.NET 6或者.NET 8,长期支持版更稳:
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt update
sudo apt install -y apt-transport-https
sudo apt install -y dotnet-sdk-6.0
装完之后输入dotnet --version看看有没有输出版本号,有就说明OK了。
接下来下载BaGet。可以直接用官方发布的二进制文件,省事:
mkdir ~/baget && cd ~/baget
wget https://github.com/loic-sharma/BaGet/releases/latest/download/baget-linux-x64.zip
unzip baget-linux-x64.zip
解压完你会看到一堆文件,其中最重要的就是Baget这个可执行文件。
配置 BaGet:让它听你的话
BaGet 启动前需要一个配置文件,我们来创建一个appsettings.json:
nano appsettings.json
把下面内容贴进去:
{
"Storage": {
"Type": "FileSystem",
"Path": "/home/ubuntu/baget/packages"
},
"Database": {
"Type": "SQLite",
"ConnectionString": "Data Source=/home/ubuntu/baget/baget.db"
},
"Search": {
"Type": "Sqlite"
},
"Gallery": {
"Enabled": true
},
"Endpoints": {
"PackagePublish": {
"Enabled": true
},
"PackageMetadata": {
"Enabled": true
}
}
}
解释一下关键点:
- Storage.Type: FileSystem 表示包文件存在本地磁盘,路径是
/home/ubuntu/baget/packages - Database 用SQLite,简单够用,不用额外起MySQL
- Gallery.Enabled: true 打开网页界面,你可以通过浏览器查看已上传的包
- PackagePublish.Enabled: true 允许你推送新包上去
保存退出后,手动创建一下包存储目录:
mkdir /home/ubuntu/baget/packages
启动服务 & 设置开机自启
现在可以先手动测试启动一下:
./Baget
如果看到日志里出现“Now listening on: http://localhost:5000”之类的提示,说明启动成功了!默认是监听5000端口。
但总不能每次都手动启动吧?我们用systemd做个守护进程:
sudo nano /etc/systemd/system/baget.service
写入以下内容:
[Unit]
Description=BaGet NuGet Server
After=network.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/baget
ExecStart=/home/ubuntu/baget/Baget
Restart=always
[Install]
WantedBy=multi-user.target
保存后启用服务:
sudo systemctl enable baget
sudo systemctl start baget
然后检查状态:
sudo systemctl status baget
看到绿色的active (running) 就稳了!
配置 Nginx 反向代理 + 域名访问
现在服务在5000端口跑着,但我们不可能让团队成员记个IP加端口号吧?所以最好配个域名,走80或443端口。
先装Nginx:
sudo apt install nginx -y
然后配置反向代理:
sudo nano /etc/nginx/sites-available/baget
写入:
server {
listen 80;
server_name nuget.yourdomain.com; # 换成你自己的域名
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}
然后软链接到sites-enabled,并重启Nginx:
sudo ln -s /etc/nginx/sites-available/baget /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
别忘了去阿里云控制台的安全组规则里,开放80端口!不然外网访问不了。
最后一步,去你的域名服务商那里,把nuget.yourdomain.com解析到服务器公网IP。等几分钟生效后,打开浏览器访问,应该就能看到BaGet的首页了,恭喜你,私有NuGet仓库正式上线!
怎么上传和使用私有包?
接下来就是实际用了。假设你有一个类库项目叫MyCompany.Utils,打包发布前,在项目文件里加上版本号:
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<PackageId>MyCompany.Utils</PackageId>
<Version>1.0.0</Version>
<Authors>YourName</Authors>
</PropertyGroup>
然后发布包:
dotnet pack -c Release
会生成一个nupkg文件,比如MyCompany.Utils.1.0.0.nupkg。
推送到你的私有源:
dotnet nuget push ./bin/Release/MyCompany.Utils.1.0.0.nupkg
-k your-api-key
-s http://nuget.yourdomain.com
等等,API Key呢?BaGet默认没有密码保护,为了安全,建议你在appsettings.json里加个密钥:
"ApiKey": "your-super-secret-key-here"
重启服务后,推送时用这个key就行。
团队成员怎么用?只需要在他们的NuGet.Config里加个源:
<add key="private" value="http://nuget.yourdomain.com/v3/index.json" />
然后在Visual Studio或者命令行里就能搜索、安装你发布的私有包了,就跟用nuget.org一样丝滑。
小投入,大回报
看到这儿,你应该已经意识到:搭建私有NuGet仓库根本没那么难。借助阿里云轻量服务器 + BaGet,整个过程不到一小时,成本每个月一杯奶茶钱都不到。
它带来的好处却是实实在在的:代码复用更高效、内部组件统一管理、发布流程标准化,还能避免把敏感代码扔到公共平台。对于正在成长的团队来说,这步迟早要走,不如趁早动手。
如果你还在犹豫要不要试,我只能说——真香!我自己从今年初就开始用这套方案,现在十几个项目共用五六套核心包,改个bug全项目同步更新,再也不用手动复制粘贴了。
最后再提醒一次,去领个阿里云优惠券,买服务器能省则省,省下来的钱请同事喝杯咖啡不香吗?
好了,文章就到这儿。赶紧动手试试吧,遇到问题欢迎留言,我看到都会回。
内容均以整理官方公开资料,价格可能随活动调整,请以购买页面显示为准,如涉侵权,请联系客服处理。
本文由星速云发布。发布者:星速云。禁止采集与转载行为,违者必究。出处:https://www.67wa.com/149827.html