From 903612635981e3dee7f1c1bbf1ed03c293e9cd5f Mon Sep 17 00:00:00 2001 From: "Juan Picado @jotadeveloper" Date: Sat, 24 Jun 2017 10:11:08 +0200 Subject: [PATCH] (wiki): Relocated server advanced configuration to wiki --- README.md | 2 +- wiki/README.md | 2 ++ wiki/reverse-proxy.md | 62 ++++++++++++++++++++++++++++++++++++- SERVER.md => wiki/server.md | 61 ++++++------------------------------ 4 files changed, 74 insertions(+), 53 deletions(-) rename SERVER.md => wiki/server.md (55%) diff --git a/README.md b/README.md index f3ad21202..015849db4 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ Now you can navigate to [http://localhost:4873/](http://localhost:4873/) where y When you start a server, it auto-creates a config file. -**For instructions on how to run Verdaccio as a service, with a nice URL or behind a proxy have a look at the [server-side configure document](SERVER.md).** +**For instructions on how to run Verdaccio as a service, with a nice URL or behind a proxy have a look at the [server-side configure document](wiki/server.md).** ### Docker diff --git a/wiki/README.md b/wiki/README.md index 931140538..26c637e9e 100644 --- a/wiki/README.md +++ b/wiki/README.md @@ -8,10 +8,12 @@ from a fresh look at the code and the outstanding issues. So here we are 🎉 ## Advanced Configurations + * [SSL Certificates](ssl.md) ## Servers +* [Advanced Server Configuration](server.md) * [Reverse Proxy](reverse-proxy.md) ### Windows Configurations diff --git a/wiki/reverse-proxy.md b/wiki/reverse-proxy.md index 0b02cfa58..d6db5ceac 100644 --- a/wiki/reverse-proxy.md +++ b/wiki/reverse-proxy.md @@ -12,7 +12,36 @@ Apache and mod_proxy should not decode/encode slashes and leave them as they are ```` -## Nginx +### Configuration with SSL + +config.yaml + +```yaml +url_prefix: https://npm.your.domain.com +``` + +Apache virtual server configuration + +```` + apacheconfig + + + 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://127.0.0.1:4873/ nocanon + ProxyPassReverse / http://127.0.0.1:4873/ + + +```` + +## Nginx + ```` server { @@ -22,4 +51,35 @@ server { proxy_set_header Host $host; } } +```` + +## 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` + +To resolve this issue, you should send real domain and port to verdaccio with `Host` heade + +Nginx configure should look like this: + +```nginx +location / { + proxy_pass http://127.0.0.1:4873/; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Forwarded-For $remote_addr; +} ``` +For this case, `url_prefix` should NOT set in verdaccio config + +--- +or a sub-directory installation: + +```nginx +location ~ ^/verdaccio/(.*)$ { + proxy_pass http://127.0.0.1:4873/$1; + proxy_set_header Host $host:$server_port; + proxy_set_header X-Forwarded-For $remote_addr; +} +``` +For this case, `url_prefix` should set to `/verdaccio/` + +> Note: There is a Slash after install path (`https://your-domain:port/vardaccio/`)! diff --git a/SERVER.md b/wiki/server.md similarity index 55% rename from SERVER.md rename to wiki/server.md index 802ed98fa..58ec383a3 100644 --- a/SERVER.md +++ b/wiki/server.md @@ -1,12 +1,16 @@ +# Server configuration + 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. ## Running as a separate user First create the verdaccio user: + ```bash $ sudo adduser --disabled-login --gecos 'Verdaccio NPM mirror' verdaccio ``` You create a shell as the verdaccio user using the following command: + ```bash $ sudo su verdaccio $ cd ~ @@ -16,40 +20,12 @@ The 'cd ~' command send you to the home directory of the verdaccio user. Make su ## Listening on all addresses If you want to listen to every external address set the listen directive in the config to: + ```yaml # you can specify listen address (or simply a port) listen: 0.0.0.0:4873 ``` -## 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` - -To resolve this issue, you should send real domain and port to verdaccio with `Host` heade - -Nginx configure should look like this: -```nginx -location / { - proxy_pass http://127.0.0.1:4873/; - proxy_set_header Host $host:$server_port; - proxy_set_header X-Forwarded-For $remote_addr; -} -``` -For this case, `url_prefix` should NOT set in verdaccio config - ---- -or a sub-directory installation: -```nginx -location ~ ^/verdaccio/(.*)$ { - proxy_pass http://127.0.0.1:4873/$1; - proxy_set_header Host $host:$server_port; - proxy_set_header X-Forwarded-For $remote_addr; -} -``` -For this case, `url_prefix` should set to `/verdaccio/` - -> Note: There is a Slash after install path (`https://your-domain:port/vardaccio/`)! - - > Apache configure? Please check out Wiki ;-) ## Keeping verdaccio running forever @@ -57,11 +33,13 @@ We can use the node package called 'forever' to keep verdaccio running all the t https://github.com/nodejitsu/forever First install forever globally: + ```bash $ sudo npm install -g forever ``` 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: + ```bash $ forever start `which verdaccio` ``` @@ -78,35 +56,16 @@ $ crontab -e This might ask you to choose an editor. Pick your favorite and proceed. Add the following entry to the file: + ``` @reboot /usr/bin/forever start /usr/lib/node_modules/verdaccio/bin/verdaccio ``` 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 $ which verdaccio ``` -## Apache reverse proxy configuration -config.yaml -```yaml -url_prefix: https://npm.your.domain.com -``` -Apache virtual server configuration -```apacheconfig - - - 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://127.0.0.1:4873/ nocanon - ProxyPassReverse / http://127.0.0.1:4873/ - - -``` +