Ember front-end that builds on NuGet.Lucene for private package hosting
JavaScript HTML C# CSS
Clone or download
Pull request Compare This branch is even with chriseldredge:master.
tmulkern and Chris Eldredge Turn off Prefer 32bit Flag in Build Options (#173)
Turned off Prefer 32bit Flag in Build Options
Latest commit ee6be05 Nov 2, 2016
Permalink
Failed to load latest commit information.
.nuget Run unit tests in integrated builds. Jan 12, 2015
app Fix typo in package sort option Aug 5, 2016
config Upgrade Ember to 1.13.2 and ember-cli to 0.2.7. Jun 29, 2015
integration-tests Update NuGet.Lucene to fix bug in OData filters that use DateTime. Mar 12, 2014
public Upgrade Ember to 1.13.2 and ember-cli to 0.2.7. Jun 29, 2015
server Make URLs relative so they work right when base url is not / Oct 14, 2014
src Turn off Prefer 32bit Flag in Build Options (#173) Nov 3, 2016
tests Upgrade to ember-cli 1.13.13 and ember 1.13.11. Nov 25, 2015
vendor Upgrade to ember-cli 0.0.42. Sep 5, 2014
.bowerrc Upgrade ember-cli from 0.0.42 to 0.1.1. Oct 14, 2014
.editorconfig Upgrade Ember to 1.13.2 and ember-cli to 0.2.7. Jun 29, 2015
.gitattributes Splitting Ember front-end out from NuGet.Lucene repository. Apr 19, 2013
.gitignore Ignore VS 2015 .vs directory. Jul 5, 2016
.gitmodules Add ./dist as submodule Jan 15, 2014
.jshintrc Upgrade to ember-cli 0.2.3 and ember 1.11.1. Apr 16, 2015
.watchmanconfig Upgrade to ember-cli 1.13.13 and ember 1.13.11. Nov 25, 2015
COPYRIGHT.txt Add COPYRIGHT.txt and include LICENSE.txt and COPYRIGHT.txt as AppVey… Aug 20, 2015
Ciao.proj Update to Ciao 1.1. Aug 4, 2014
Ciao.props Run unit test assembly for correct configuration. Feb 4, 2015
Ciao.targets Add package source and alternate build of WebConfigTransformRunner th… Sep 7, 2014
Klondike.sln Add Apache Public License 2.0. Jan 12, 2015
LICENSE.txt Add Apache Public License 2.0. Jan 12, 2015
NuGet.config Add package source and alternate build of WebConfigTransformRunner th… Sep 7, 2014
README.md Remove README notes on customizing homepage Dec 10, 2015
appveyor.yml AppVeyor: Cache bower_components too. Jul 6, 2016
bower.json Upgrade to ember-cli 1.13.13 and ember 1.13.11. Nov 25, 2015
ember-cli-build.js Upgrade to EmberJS 1.13.8. Aug 21, 2015
package.json Set version to 2.1.0. Jul 6, 2016
testem.json Upgrade Ember to 1.13.2 and ember-cli to 0.2.7. Jun 29, 2015

README.md

Klondike Build status

Ember front-end that builds on NuGet.Lucene for private NuGet package hosting.

Binaries

Available from the Releases tab on github.

Alternatively, you can clone the Klondike-Release git repo to make upgrading easier.

Preview binaries can be obtained from the Artifacts tab of a successful AppVeyor build.

What is Klondike

Klondike is an asp.net web application you deploy to your own web server or to the cloud that works as a private NuGet package feed for storing private packages your organization creates. Klondike can also automatically restore packages sourced from 3rd party feeds, such as the nuget.org public feed, to keep your build server humming even when nuget.org is unavailable.

Klondike performs dramatically better than the standard NuGet.Server provider and adds lots of extra features you can't get anywhere else. Klondike uses Lucene.Net meaning that the install footprint is light. Simply grab the binaries, stand up an IIS site (or run the self-hosted exe) and you're done. Much easier than deploying your own NuGet Gallery.

How to Deploy Klondike

  1. Grab a binary zip from the Releases tab or clone Klondike-Release
  2. Customize Settings.config
  3. Create a site in IIS using a .NET v4.0 Integrated Pipeline application pool

N.B. Klondike works best deployed as a root application and is only supported in this configuration. There are known issues with NuGet clients when attempting to host Klondike as a child application on a virtual path. In addition, the Ember web application will not work correctly unless it is rebuilt with a different virtual path.

App Pool Advanced Configuration

Klondike is designed to run as a single process to avoid conflicting writes on the Lucene index files. Adjust your application pool accordingly:

  • Make sure Maximum Worker Processes is set to 1
  • Make sure Disable Overlapped Recycle is set to true

Authentication and Role-Based Security

Klondike supports external authentication providers such as Windows (Active Directory), basic auth and NTLM. These are configured in IIS Manager and other tools.

Disable anonymous authentication to require authentication even for read access to Klondike.

In addition to standard authentication, Klondike supports authentication by using the X-NuGet-ApiKey HTTP Request header to be compatible with NuGet clients that push and delete packages.

Local Administrator

Browsing or accessing the Klondike app from a local network interface on the same machine will implicitly grant access as LocalAdministrator. This account is allowed to create additional users, push and delete packages.

You can disable this behavior by editing handleLocalRequestsAsAdmin in Settings.config.

Mapping Active Directory Roles to Klondike

Edit the roleMappings section in Web.config to grant Klondike roles for user administration and package management to existing roles in your external security provider (such as Active Directory). Multiple groups can be specified delimited by commas. Membership in any one role is sufficient to grant a Klondike role.

The available roles and their permissions are:

  • PackageManager - Allowed to push and delete packages
  • AccountAdministrator - Allowed to administer accounts

Creating Users and Passwords

Any user who has the AccountAdministrator role may create, delete and modify accounts and API keys. This includes the LocalAdministrator account.

To access this feature, browse to Klondike and select Admin in the top navigation, then Manage Accounts.

Self-Hosted Klondike

The binary release also includes Klondike.SelfHost.exe in the bin directory. It can be run from the console using mono or the .net framework:

Klondike.SelfHost.exe --port=8080

Or

mono ./Klondike.SelfHost.exe --interactive --port=8080

Klondike requires Mono 4.2.0 or later.

If no port is specified, 8080 is used as a default. See the Klondike.SelfHost README for more information.

Building Locally

This repository consists of two components:

  1. Ember front-end built and packaged by ember-cli
  2. c# project built by MSBuild or xbuild

Front End

Prerequisites: node (node and npm should be on your PATH).

Install ember-cli and bower if you haven't already:

npm install -g ember-cli@0.2.7

Install dependencies:

npm install && bower install

Finally, build:

ember build

This puts the built app into ./dist.

Note: if you do not have the .NET 4.5 SDK or Mono 3.6 MDK installed you can skip building the .net assets by using the ember-only environment:

ember build --environment=ember-only

.NET Back End

The c# projects can be built on Windows or OS X / Linux. On Windows, install Visual Studio 2013 and the Microsoft.NET Framework 4.5 SDK. On OS X / Linux, install the Mono MDK

Mono can also be installed by homebrew on OS X.

Front End development without .NET

You can develop the front end without needing to build or host the .net code.

Edit config/environment.js and set the apiURL and (optionally) apiKey properties to point to an external Klondike API endpoint, then run

ember serve --environment=ember-only

Previewing debug/release builds

You can serve production builds with:

ember serve --environment=production

Integration Tests

Coming Real Soon Now.