0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2024-12-16 21:56:25 -05:00
verdaccio/website/blog/2018-11-19-setting-up-verdaccio-on-digitalocean.md

128 lines
4.7 KiB
Markdown
Raw Permalink Normal View History

---
author: Juan Picado
authorURL: https://twitter.com/jotadeveloper
authorFBID: 1122901551
title: Setting up Verdaccio on DigitalOcean
---
This one of the multiple articles I will write about running Verdaccio on multiple platforms.
This time for simplicity Ive chosen [DigitalOcean](https://www.digitalocean.com/) that provides affordable base prices and if you want to run your own registry, its a good option.
<!--truncate-->
### Create a Droplet {#create-a-droplet}
![](https://cdn-images-1.medium.com/max/1024/1*04T_T0af4mEZrJq4QBKKcQ.png)<figcaption>Choosing an image before creating a droplet</figcaption>
Create a droplet is fairly easy, it just matters to choose an image and click on create, **I personally selected a Node.js 8.10.0 version** to simplify the setup.
![](https://cdn-images-1.medium.com/max/1024/1*V1GIMttiMPYuX8FLKuumRg.png)<figcaption>A view of the droplet panel</figcaption>
While the droplet is created, which takes a matter of seconds the next step is to find a way to log in via SSH, you can find credentials in your email. _Keep on mind the droplet provides root access and the next steps I wont use sudo_.
### Installing Requirements {#installing-requirements}
As first step we have to install [Verdaccio](https://verdaccio.org/) with the following command.
```
npm install --global verdaccio
```
> We will use npm for simplicity, but Id recommend using other tools as [pnpm](https://pnpm.js.org/) or [yarn](https://yarnpkg.com/en/).
We will handle the **verdaccio** process using the _pm2_ tool that provides handy tools for restarting and monitoring.
```
npm install -g pm2
```
#### Nginx Configuration {#nginx-configuration}
To handle the request we will set up _ngnix_ which is really easy to install. I wont include in this article all steps to setup the web but you can [follow this article](https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-16-04).
Once _nginx_ is running in the port 80, we have to modify lightly the configuration file as follow
```
vi /etc/nginx/sites-available/default
location / {
proxy\_pass [http://127.0.0.1:4873/](http://127.0.0.1:4873/);
proxy\_set\_header Host $http\_host;
}
```
_You might pimp this configuration if you wish, but, for simplicity this is good enough for the purpose of this article._
Dont forget restart _nginx_ in order the changes take affect.
```
systemctl restart nginx
```
Since we are using a proxy, we must update the default configuration provided by **verdaccio** to define our proxy pass domain. Edit the file and add the your domain or IP.
```
vi /root/verdaccio//config.yaml
http\_proxy: http://xxx.xxx.xxx.xxx/
```
### Running Verdaccio {#running-verdaccio}
Previously we installed pm2 and now is the moment to run _verdaccio_ with the following command.
```
pm2 start `which verdaccio`
```
_Note: notice we are using which due pm2 seems not to be able to run a node global command._
### Using Verdaccio {#using-verdaccio}
Verdaccio provides a nice UI to browse your packages you can access via URL, in our case get the IP from the DigitalOcean control panel and access _verdaccio_ like http://xxx.xxx.xxx.xxx/ .
![](https://cdn-images-1.medium.com/max/1024/1*l5oyR93jMLDOJnYUv88IZg.png)
#### Install packages {#install-packages}
npm will use the default registry on install, but we are willing to use our own registry, to achieve that use the --registry argument to provide a different location.
```
npm install --registry http://xxx.xxx.xxx.xxx
```
Other options Id suggest if you need to switch between registries is using nrm, to install it just do
```
npm install --global nrm
nrm add company-registry [http://xxx.xxx.xxx:4873](http://xxx.xxx.xxx:4873/)
nrm use company-registry
```
With the steps above, you can switch back to other registries in an easy way, for more information just type nrm --help .
#### Publishing Packages {#publishing-packages}
By default verdaccio requires authentication for publishing, thus we need to log in.
```
npm adduser --registry http://xxx.xxx.xxx.xxx
```
Once you are logged, its the moment to publish.
```
npm publish --registry http://xxx.xxx.xxx.xxx
```
### Wrapping Up {#wrapping-up}
As you can see, **host a registry is quite cheap and the initial set up might take fairly short time if you have some skills with UNIX**.
> Verdaccio provides you good performance for a small middle team with the default plugins, you might scale for bigger teams if is need it, but I will write about those topics in future articles.
If you are willing to share your experience in our blog writing about **_verdaccio_** being installed on other platforms, just [send me a message over our chat at Discord](http://chat.verdaccio.org) for easy coordination.
---