Nugetgallery: [Feature] Run NuGet server in linux docker container on Kestrel

Created on 30 Nov 2016  路  18Comments  路  Source: NuGet/NuGetGallery

The NuGet server is one of the few applications we still need to run on Windows, whereas all of our applications already written in .net core run in Kubernetes.

Are their any plans to 'upgrade' Nuget.Server to asp.net core?

NuGet.Server Discussions

Most helpful comment

Is there a roadmap yet for .net core support?
We host our entire infrastructure in a docker swarm and we have definite (and urgent) need for a NuGet server.

All 18 comments

Hi @JorritSalverda !
The NuGet team is currently investing all it's time in security related features. Unfortunately, improvement to NuGet.Server is not in our plans for the near future.

Thanks for your understanding!

Any news here ?

NuGet is one of the most important pieces in dotnet core and there is no core implementation available/scheduled in 2017 ?

Is there a roadmap yet for .net core support?
We host our entire infrastructure in a docker swarm and we have definite (and urgent) need for a NuGet server.

Since it seems we might wait unknown/long time for official nuget server on dotnet core, I have started a project which aims exactly at it. https://github.com/ai-traders/liget
It ports pieces of this repository and several others to get private nuget server working on dotnet core with kestrel.
I have already setup CI with end to end tests which run with various common clients such as nuget CLI dotnet CLI and paket.
It already implements push and basic queries, so that paket install, paket update and alike are passing.

Any official updates?

@lecoque , the team continues to focus on security and package authenticity issues in the NuGet ecosystem, as well as key experiences on nuget.org like search results quality. Our quarterly plan will be published shortly on our blog.
Unfortunately we won't be able to get to rewriting NuGet.Server in .NET core in the near future. I hope tools like @tomzo 's liget will be able to fill the gap.

I've been working on a ASP.NET Core version of NuGet.Server: https://github.com/loic-sharma/BaGet

Summary of BaGet:

  • Easy to setup for small scale (using Sqlite and the local file system)
  • Scales up well for advanced scenarios (using SQL Server, Azure Blob Storage, and Azure Search)
  • Does not support private feeds yet

鈿狅笍 Although I work on nuget.org for Microsoft, this is a side project that I've been working on my own time that isn't official supported by either Microsoft nor NuGet.

@skofman1

Unfortunately we won't be able to get to rewriting NuGet.Server in .NET core in the near future

Do we need a full rewrite? Maybe we can start with a minimal viable product?

I hope tools like @tomzo 's liget will be able to fill the gap.

It would be good to have some involvement from the NuGet team so one of these community projects can grow to be _the real deal_. Maybe you can host an implementation on the GitHub NuGet org?

It would be good to have some involvement from the NuGet team so one of these community projects can grow to be the real deal.

I totally agree on this, there must be at least 20 projects on GitHub with nuget server, each implementing just some cases that original developer needed. The same is true for LiGet, until I need windows hosting support or good visual studio integration, I won't implement it. But that should not stop anyone from contributing when they need it.
@loic-sharma creates yet another implementation and again, its a single developer, it supports some cases. Sadly we did not talk before he started re-implementing half of what LiGet does already. And it would be really great to have someone from Microsoft who knows original NuGet to participate in a community server development.

Maybe you can host an implementation on the GitHub NuGet org?

That would be great.
If Microsoft does not want to support an open nuget server, then at least publishing some of the working implementation would help community to take initiative. Currently all we have is documentation of v3 API and that's all. When I started LiGet even that wasn't available. v2 is undocumented till this day.

My general message to anybody reading this issue is this - We are all in a bad place with NuGet server, you can blame Microsoft or not, you can try to persuade them to help. But If you feel like implementing yet another scratch server because your case does not work in LiGet or any other community project, please at least open an issue on LiGet first, let's talk. I can contribute time into integrating efforts of multiple users, help with design, provide CI and automation, and actually implement stuff as I did already. So that in the long term we have the real deal nuget server, which has many maintainers/developers and does not rely on efforts of single person to do all work for everyone, because that won't last long.

(side note to this thread: there are already a couple of real deal NuGet servers out there, both on-prem (ProGet, Artifactory, Sonatype, NuGet.Server) as well as SaaS (MyGet, Bintray). Of those on-prem ones, most can be run in a container if needed)

@maartenba the thread is about running NuGet.Server on dotnet core in container and actually you cannot do that, because it relies on old libraries which don't run on Core. LiGet was created by replacing those references.
Yes there are some great closed-source, paid solutions out there. But as @WernerMairl NuGet is one of the most important pieces in dotnet core and there is no core implementation available/scheduled in ... is a really bad state that I was referring to.
NuGet is basically the only official framework for managing dependencies in dotnet core and yet we need to rely on closed, external solutions to host private packages. There is no other "Open" platform which does that.

Totally agree, we really need good specification (v3 ?) and the best implementation of the latest protocol as stand alone service, with the community involved.
Right now the project has no guidance and anything is stuck (see pull requests).

Currently i'm investing time into https://github.com/loic-sharma/BaGet

my personal focus

  • design, architecture and requirements
  • pure core with docker (alpine) in mind
  • avoid or decouple dependency to

    • OData (not needed if we focus on v3 instead of v2)

    • Entity Framework

    • any self hosted/implemented Credential storage

in my own projects currently i'm using Nexus from Sonatype on Docker

Totally agree, we really need good specification (v3 ?) and the best implementation of the latest protocol as stand alone service, with the community involved.

The v3 protocol has been documented here. The only standalone NuGet v3 implementations that I'm aware of are BaGet and Sleet.

... publishing some of the working implementation would help community to take initiative. Currently all we have is documentation of v3 API and that's all

You can find nuget.org's v3 implementation here: NuGet/NuGet.Services.Metadata

I understand the need for an open-source, lighweight implementation of NuGet Server that will be able to run on linux, docker, etc. Unfortunately, as already stated, NuGet team currently doesn't have the capacity to take on this work.
We would like to help community projects like LiGet and BaGet to get users and contributors. We started by adding links to them on our documentation page. We can also help join those projects to .NET Foundation.

From a technical perspecive, I stronly recommend implementating V3 protocol. V2 protocol is obsolete and all new NuGet features (like Package Signing) are added only to V3. In addition, V3 is thoroughly documented here.

Another alternative is: simple-nuget-server
Docker image with simple-nuget-server from idoop or fork by agowa338. The second one uses his own fork of simple-nuget-server.

However, it would we really great if NuGet.Server 'just' worked on Linux with ASP.NET Core because this alternative also is not feature complete (it only supports a single API key). But I do understand that the resources and time of the NuGet team is finite and choices need to be made.

Really cool to see that open source solutions are being built. A year has gone by since the last answer from Microsoft. Any updates?

I tried to convert the NuGet.Server to .NET Core 1.5 years ago. I don't remember exactly what the blocker was. Vague, some XML transformation libs? Does anybody know more?

Was this page helpful?
0 / 5 - 0 ratings

Related issues

xied75 picture xied75  路  5Comments

gep13 picture gep13  路  4Comments

anangaur picture anangaur  路  4Comments

yishaigalatzer picture yishaigalatzer  路  4Comments

skofman1 picture skofman1  路  3Comments