A modern, open-source NuGet v3 server implementation with web interface, built using ASP.NET Core 9. This private NuGet package repository provides a powerful NuGet.Server alternative for hosting NuGet packages, whether for enterprise organizations, development teams, or community package repositories.
π Keywords: self-hosted NuGet server, private NuGet repository, NuGet.Server alternative, enterprise package management, Docker NuGet hosting, ASP.NET Core NuGet server
Browse and search your private NuGet packages with an intuitive web interface
Detailed package information with copy-to-clipboard install commands
Easy drag-and-drop package upload directly through the web browser
- NuGet V3 API - Basic compatibility with Visual Studio, dotnet CLI, and nuget.exe
- Package Management - Upload and manage package versions
- Search - Simple package search functionality
- Package Details - View package information and install commands
- Responsive Design - Works on desktop and mobile devices
- Package Browsing - Browse available packages with basic filtering
- Install Commands - Copy-to-clipboard functionality for package installation
- Health Status - Basic server health monitoring
- Customizable Branding - Configure for any organization or community
- Docker Support - Easy containerized deployment for any environment
- Environment Configuration - Flexible configuration via appsettings.json or environment variables
- Open Source - MIT licensed for free use, modification, and distribution
Set up your own self-hosted NuGet package repository in minutes! This guide will help you deploy a private NuGet server that serves as a powerful NuGet.Server alternative for your organization.
- .NET 9.0 SDK (or .NET 8.0 for compatibility)
- (Optional) Docker for containerized deployment
- (Optional) Node.js for CSS development
git clone https://github.com/dgknttr/nupack-server.git
cd nupack-server
Note: This is an open-source project. Feel free to fork, modify, and adapt it to your needs!
Copy the example configuration:
cp src/Nupack.Server.Web/appsettings.example.json src/Nupack.Server.Web/appsettings.json
Update appsettings.json
with your deployment details:
{
"Branding": {
"CompanyName": "Your Company Name",
"NugetSourceUrl": "https://nuget.yourdomain.com/v3/index.json"
},
"PackageStorage": {
"BasePath": null
}
}
You can configure where packages are physically stored:
- Default (
null
): Usespackages
folder in WebRootPath or ContentRootPath - Relative path:
"data/packages"
- relative to application root - Absolute path:
"/var/nuget/packages"
or"C:/NuGet/Packages"
- Environment variables:
"${NUGET_PACKAGES_PATH}"
or"${HOME}/nuget-packages"
See Package Storage Configuration for detailed examples and deployment scenarios.
Note: Only
CompanyName
andNugetSourceUrl
are configurable. All other branding elements are fixed to maintain consistent "Nupack Server" identity.
# Start both API and Web UI
dotnet run --project src/Nupack.Server.Api --urls "http://localhost:5003" &
dotnet run --project src/Nupack.Server.Web --urls "http://localhost:5004"
- Web Interface: http://localhost:5004
- NuGet API Endpoint: http://localhost:5003/v3/index.json
This project is designed to serve the broader .NET and NuGet community by providing:
- Learning Resource - Study a real-world NuGet server implementation
- Customization Base - Fork and modify for specific needs
- No Vendor Lock-in - Full control over your package hosting
- Cost-Effective - Free alternative to commercial NuGet hosting
- Privacy Control - Keep sensitive packages on your own infrastructure
- Compliance - Meet specific security and regulatory requirements
- Collaborative Development - Community-driven improvements and features
- Knowledge Sharing - Learn from and contribute to open-source practices
- Ecosystem Growth - Strengthen the .NET package management ecosystem
# Upload packages using dotnet CLI
dotnet nuget push package.nupkg --source http://localhost:5003/v3/index.json
# Or use the web interface upload page
# Navigate to http://localhost:5004/Upload
# Add the server as a package source
dotnet nuget add source "https://your-nuget-server.com/v3/index.json" --name "Nupack Server"
# Install packages from your server
dotnet add package YourPackage --source "Nupack Server"
Only two values are configurable through appsettings.json
:
{
"Branding": {
"CompanyName": "Your Organization",
"NugetSourceUrl": "https://nuget.yourdomain.com/v3/index.json"
}
}
All other branding elements (ProductName, RepositoryTitle, etc.) are fixed to maintain consistent "Nupack Server" identity across all deployments.
- Home (
/
) - Package overview and statistics - Search (
/Search
) - Search and filter packages - Package Details (
/Packages/Details/{id}
) - Detailed package information - Upload (
/Upload
) - Upload new packages via web interface
- Internal Package Repository: Host proprietary .NET libraries and shared components across development teams
- Microservices Architecture: Centralized package management for distributed systems and service libraries
- CI/CD Pipeline Integration: Automated package publishing and consumption in DevOps workflows
- Compliance & Security: Keep sensitive packages on-premises to meet regulatory requirements (GDPR, HIPAA, SOX)
- Multi-Team Collaboration: Share reusable components between different departments and projects
- Open Source Project Hosting: Alternative to nuget.org for community packages and pre-release versions
- Regional Package Mirrors: Faster package access for specific geographic regions or organizations
- Educational Institutions: Teaching package management and software distribution concepts
- Startup & Small Teams: Cost-effective alternative to commercial NuGet hosting services
- Development Sandbox: Testing and experimenting with package distribution before public release
- Offline Development: Air-gapped environments where internet access is restricted
- Custom Package Workflows: Specialized package validation, approval, and distribution processes
- Legacy System Support: Hosting older package versions not available on public repositories
- Performance Optimization: Reduced latency and bandwidth usage for frequently accessed packages
- Backup & Redundancy: Secondary package repository for business continuity planning
The project includes a Docker setup for easy deployment:
# Build and run with Docker Compose
docker-compose up -d
This will start both the API server and web interface with the following ports:
- API Server: http://localhost:5003 (HTTP), https://localhost:5001 (HTTPS)
- Web Interface: http://localhost:5004 (HTTP), https://localhost:5002 (HTTPS)
You can customize the configuration by editing the environment variables in docker-compose.yml
.
Configuration values can be overridden using environment variables:
# Example environment variables
Branding__ProductName="Custom NuGet Server"
Branding__CompanyName="Custom Company"
NuGetServer__BaseUrl="https://your-domain.com"
- Web UI Health:
http://localhost:5004/health
- API Health:
http://localhost:5003/health
Both endpoints return JSON with basic server status information.
We welcome contributions from the community! This is an open-source project and we appreciate any help to make it better.
- π Report Issues - Found a bug? Let us know!
- π‘ Suggest Features - Have an idea? We'd love to hear it
- π Improve Documentation - Help make the docs clearer
- π§ Submit Code - Fix bugs or add new features
- π§ͺ Add Tests - Help improve code coverage
- Fork the repository on GitHub
- Clone your fork locally
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Make your changes
- Test your changes thoroughly
- Commit your changes (
git commit -m 'Add amazing feature'
) - Push to your branch (
git push origin feature/amazing-feature
) - Open a Pull Request
src/
βββ Nupack.Server.Api/ # NuGet V3 API implementation
βββ Nupack.Server.Web/ # Web interface
βββ tests/ # Unit tests
# Restore dependencies and build
dotnet restore
dotnet build
# Run tests
dotnet test
- Be respectful and inclusive
- Follow existing code style and conventions
- Write clear commit messages
- Add tests for new features when possible
- Update documentation as needed
This project is licensed under the MIT License, which means:
- β Free to use - Use it anywhere, for any purpose
- β Free to modify - Adapt it to your specific needs
- β Free to distribute - Share your modifications with others
- β Commercial use allowed - Use it in commercial projects
See the LICENSE file for the complete license text.
- π Documentation - Check this README and code comments
- π Issues - Report bugs or request features on GitHub Issues
- π¬ Discussions - Join community discussions for questions and ideas
- π§ Community - Connect with other users and contributors
- Built with ASP.NET Core - Microsoft's open-source web framework
- UI styled with Tailwind CSS - A utility-first CSS framework
- Inspired by the official nuget.org interface
- Thanks to all contributors who help improve this project
Primary Keywords: self-hosted nuget server
, private nuget repository
, nuget.server alternative
, enterprise package management
, asp.net core nuget server
Secondary Keywords: docker nuget hosting
, private package repository
, nuget v3 server
, open source nuget server
, corporate nuget hosting
, internal package management
, nuget server implementation
, package repository hosting
Technology Stack: ASP.NET Core
, C#
, Docker
, NuGet v3 API
, Tailwind CSS
, Enterprise Ready
, Self-Hosted
, Open Source
If you find this project useful, please consider giving it a βοΈ on GitHub to help others discover it!
- β Modern ASP.NET Core 9 (vs. legacy .NET Framework)
- β Web interface included (vs. API-only)
- β Docker support (vs. IIS-only)
- β Active development (vs. minimal updates)
- β Enterprise features (vs. basic functionality)
- β Free & Open Source (vs. expensive licensing)
- β Full control (vs. vendor lock-in)
- β Customizable (vs. fixed features)
- β Self-hosted (vs. cloud dependency)
- β Community-driven (vs. corporate priorities)
- β Lightweight & Fast (optimized for performance)
- β Easy deployment (Docker + simple configuration)
- β Modern UI (responsive web interface)
- β Well documented (comprehensive guides)
- β Active community (regular updates & support)
A modern, self-hosted NuGet server and private package repository solution for the .NET community.
π Deploy your private NuGet server today β’ π Keep your packages secure β’ π° Save on hosting costs
π€ Contributions welcome β’ π MIT Licensed β’ π Made by the community, for the community