2016-08-20 11:46:54 -05:00
This is mostly basic linux server configuration stuff but I felt it important to document and share the steps I took to get verdaccio running permanently on my server. You will need root (or sudo) permissions for the following.
2013-11-19 05:53:53 -05:00
## Running as a separate user
2016-08-20 11:46:54 -05:00
First create the verdaccio user:
2013-11-19 05:53:53 -05:00
```bash
2016-08-20 11:46:54 -05:00
$ sudo adduser --disabled-login --gecos 'Verdaccio NPM mirror' verdaccio
2013-11-19 05:53:53 -05:00
```
2016-08-20 11:46:54 -05:00
You create a shell as the verdaccio user using the following command:
2013-11-19 05:53:53 -05:00
```bash
2016-08-20 11:46:54 -05:00
$ sudo su verdaccio
2013-11-19 05:53:53 -05:00
$ cd ~
```
2016-08-20 11:46:54 -05:00
The 'cd ~' command send you to the home directory of the verdaccio user. Make sure you run verdaccio at least once to generate the config file. Edit it according to your needs.
2013-11-19 05:53:53 -05:00
2013-11-19 07:26:32 -05:00
## Listening on all addresses
If you want to listen to every external address set the listen directive in the config to:
2017-04-19 05:21:47 -05:00
```yaml
2013-11-19 07:26:32 -05:00
# you can specify listen address (or simply a port)
listen: 0.0.0.0:4873
```
2017-04-19 06:35:25 -05:00
## Run behind reverse proxy with different domain and port
If you run verdaccio behind reverse proxy, you may noticed all resource file served as relaticve path, like `http://127.0.0.1:4873/-/static` , you can resolve this by set `url_prefix`
2017-04-19 05:21:47 -05:00
```yaml
url_prefix: 'https://your-domain:8888'
# or
url_prefix: 'https://your-domain:8888/your-path'
```
> Nginx or Apache configure? Please check out Wiki ;-)
2016-08-20 11:46:54 -05:00
## Keeping verdaccio running forever
We can use the node package called 'forever' to keep verdaccio running all the time.
2013-11-19 05:53:53 -05:00
https://github.com/nodejitsu/forever
First install forever globally:
```bash
$ sudo npm install -g forever
```
2016-08-20 11:46:54 -05:00
Make sure you've started verdaccio at least once to generate the config file and write down the created admin user. You can then use the following command to start verdaccio:
2013-11-19 05:53:53 -05:00
```bash
2016-08-20 11:46:54 -05:00
$ forever start `which verdaccio`
2013-11-19 05:53:53 -05:00
```
You can check the documentation for more information on how to use forever.
## Surviving server restarts
2016-08-20 11:46:54 -05:00
We can use crontab and forever together to restart verdaccio after a server reboot.
When you're logged in as the verdaccio user do the following:
2013-11-19 05:53:53 -05:00
```bash
$ crontab -e
```
This might ask you to choose an editor. Pick your favorite and proceed.
Add the following entry to the file:
```
2016-08-20 11:46:54 -05:00
@reboot /usr/bin/forever start /usr/lib/node_modules/verdaccio/bin/verdaccio
2013-11-19 05:53:53 -05:00
```
The locations may vary depending on your server setup. If you want to know where your files are you can use the 'which' command:
```bash
$ which forever
2016-08-20 11:46:54 -05:00
$ which verdaccio
```
2017-05-20 12:44:41 -05:00
## Apache reverse proxy configuration
config.yaml
```yaml
url_prefix: https://npm.your.domain.com
```
Apache virtual server configuration
```apacheconfig
< IfModule mod_ssl . c >
< VirtualHost * :443 >
ServerName npm.your.domain.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/npm.your.domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/npm.your.domain.com/privkey.pem
SSLProxyEngine On
ProxyRequests Off
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
ProxyPass / http://localhost:4873/ nocanon
ProxyPassReverse / http://localhost:4873/
< / VirtualHost >
< / IfModule >
```