npm Enterprise Quickstart
This is the fastest way to get started with npm Enterprise - your own private npm registry and website!
tl;dr
Here's what we're going to cover in this guide:
- Install npm Enterprise on your server
- Configure and start your Enterprise instance
- Configure the npm CLI to talk to your registry
- Publish, install, and search for packages
Minimal details are given for each step. For more exhaustive details, please see the linked docs pages.
Here's a quick video to help walk you through this process:
1. Install npm Enterprise on your server
Provision a modern Linux server fulfilling the prereqs
You will need:
- a 64-bit version of Ubuntu 14/15 or CentOS/RHEL 7
- 4 GB of RAM
- at least 10 GB of disk space
- ports 8080, 8081, 8082, and 8800 opened for inbound TCP traffic
access to the public internet, either directly or via proxy
On AWS, use an m3.large instance type and define a Security Group to open the ports above.
Install latest Node.js and npm for your Linux distro
Ubuntu/Debian:
$ curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash - $ sudo apt-get install -y nodejs $ sudo npm i -g npm@latest $ node -v && npm -vCentOS/RHEL:
$ curl -sL https://rpm.nodesource.com/setup_4.x | sudo -E bash - $ sudo yum -y install nodejs $ sudo npm i -g npm@latest $ node -v && npm -vUse npm to install
npme$ sudo npm install npme -g --unsafeWatch for and answer any prompts.
This will install Docker and run an admin web console on port 8800, which you will use to configure your Enterprise instance and complete the installation below.
2. Configure and start your Enterprise instance
Get a license key by signing up for a free trial license
You will need a license key to continue.
Visit
https://<your-server>:8800in your favorite web browser and proceed past the security warningThe security warning is due to initial use of a self-signed certificate. You can plug in your own SSL/TLS certificate in the next step.
Paste your server's DNS name or IP in the "Hostname" field and choose your SSL/TLS option
If using the self-signed certificate, proceed past the browser security warning again if you are redirected to
https://<dns-name>:8800.Enter "Billing Email" and "License Key" you received via email or the npmjs.com site and hit "Continue"
- Enter a new password to protect your admin console and hit "Continue"
Select your desired settings and hit "Save"
Enter your company's name in "Your company name" and, for purposes of quickstart, select "Open" for "Authentication". Other default settings should be fine.
Note that you can always come back and change configuration later. Any time you change configuration settings, you must restart the services for the changes to take effect.
Please visit this page for details on configuration settings.
Hit "Take me to the Dashboard"
The admin console will begin to download all the services that make up your registry and run them as Docker containers. If the services don't start automatically, use the "Start Now" button in the top-left panel of the Dashboard.
Wait for the services to reach a status of "Started". Once they do, your registry is up and ready for use.
Quickly verify that your registry is running and accessible
Either run
curl http://<your-server>:8080or visit that url in your browser. If you get a JSON response, your Enterprise registry is good to go!
3. Configure the npm CLI to talk to your registry
Select a scope name for your company or project
You will use this scope as a prefix for all private packages. E.g. if you choose
@mycofor a scope, you could have private packages named@myco/fooand@myco/bar.Login to your registry and associate it with your scope name
On your local computer, use the following command and plug in your registry url and selected scope name.
$ npm login --registry http://<your-server>:8080 --scope @myco Username: me Password: Email: (this IS public) [email protected]The username, password, and email you use should respect the configured authentication strategy in your Enterprise admin web console. If using the "Open" authentication strategy, any values will work.
Note that this will add content to your
.npmrcfile, similar to the following:@myco:registry=http://<your-server>:8080/ //<your-server>:8080/:_authToken=abc123With this in place, any publishes or installs of packages with the
@mycoscope will automatically go to or come from your private Enterprise registry.For more details on configuring the npm client for your Enterprise registry, see this page.
Optionally set your Enterprise registry as your primary registry
$ npm config set registry http://<your-server>:8080This will add the following to your
.npmrcfile:registry=http://<your-server>:8080/With this in place, all installs will go through your Enterprise registry.
If using this option, you should make sure the "Read Through Cache" setting is enabled (default) in the admin console of your server.
4. Publish, install, and search for packages
Publish a scoped package to your Enterprise registry
Create a test package named after your scope and
npm publishit. Here's an example:$ mkdir test-pkg $ cd test-pkg $ npm init -y --scope @myco $ echo "module.exports = 'test successful'\n" > index.js $ npm publishVisit your registry's website at
http://<your-server>:8081/and find the@myco/test-pkgpackage under "recently updated packages".For more details on publishing packages to your Enterprise registry, see this page.
Install a scoped package from your Enterprise registry
Verify you can install the test package created above. Go to another directory and
npm installit.$ mkdir downstream $ cd downstream $ npm install @myco/test-pkg $ node -e "console.log(require('@myco/test-pkg'))" test successfulThe package should be downloaded to a local
node_modulesdirectory so you canrequire()and use it.Search for packages using the CLI
$ npm search @mycoSearch for package using the website
Visit your registry's website at
http://<your-server>:8081/and use the search bar at the top.