2017-12-16 07:25:59 -05:00
---
id: uplinks
title: "Uplinks"
---
2017-07-01 17:11:54 -05:00
2017-12-16 07:25:59 -05:00
An *uplink* is a link with an external registry that provides acccess to external packages.
2017-07-02 07:40:00 -05:00
2018-01-20 17:00:45 -05:00
![Uplinks ](/img/uplinks.png )
2017-07-02 07:40:00 -05:00
### Usage
2017-12-16 07:25:59 -05:00
2017-07-01 17:11:54 -05:00
```yaml
uplinks:
npmjs:
url: https://registry.npmjs.org/
server2:
url: http://mirror.local.net/
timeout: 100ms
server3:
url: http://mirror2.local.net:9000/
baduplink:
url: http://localhost:55666/
2017-12-16 07:25:59 -05:00
```
2017-07-01 17:11:54 -05:00
### Configuration
You can define mutiple uplinks and each of them must have an unique name (key). They can have two properties:
2017-07-02 02:35:24 -05:00
Property | Type | Required | Example | Support | Description | Default
--- | --- | --- | --- | --- | --- | ---
2018-01-09 12:00:47 -05:00
url | string | Yes | https://registry.npmjs.org/ | all | The registry url | npmjs
2018-01-20 17:00:45 -05:00
ca | string | No | ~./ssl/client.crt' | all | SSL path certificate | No default
2017-07-02 02:35:24 -05:00
timeout | string | No | 100ms | all | set new timeout for the request | 30s
maxage | string | No |10m | all | limit maximun failure request | 2m
fail_timeout | string | No |10m | all | defines max time when a request becomes a failure | 5m
max_fails | number | No |2 | all | limit maximun failure request | 2
2018-05-26 10:34:31 -05:00
cache | boolean | No |[true,false] | >= 2.1 | cache all remote tarballs in storage | true
2018-05-26 10:39:11 -05:00
auth | list | No | [see below ](uplinks.md#auth-property ) | >= 2.5 | assigns the header 'Authorization' [more info ](http://blog.npmjs.org/post/118393368555/deploying-with-npm-private-modules ) | disabled
2018-04-29 14:50:10 -05:00
headers | list | No | authorization: "Bearer SecretJWToken==" | all | list of custom headers for the uplink | disabled
2018-03-17 09:47:28 -05:00
strict_ssl |boolean | No | [true,false] | >= 3.0 | If true, requires SSL certificates be valid. | true
2017-07-02 02:35:24 -05:00
2018-05-26 10:37:24 -05:00
#### Auth property
2018-05-18 11:21:23 -05:00
The `auth` property allows you to use an auth token with an uplink. Using the default environment variable:
```yaml
uplinks:
private:
url: https://private-registry.domain.com/registry
auth:
type: bearer
token_env: true # defaults to `process.env['NPM_TOKEN']`
```
or via a specified environment variable:
```yaml
uplinks:
private:
url: https://private-registry.domain.com/registry
auth:
type: bearer
token_env: FOO_TOKEN
```
`token_env: FOO_TOKEN ` internally will use `process.env['FOO_TOKEN']`
or by directly specifying a token:
```yaml
uplinks:
private:
url: https://private-registry.domain.com/registry
auth:
type: bearer
token: "token"
```
> Note: `token` has priority over `token_env`
2017-07-01 17:11:54 -05:00
### You Must know
2018-01-20 17:00:45 -05:00
* Uplinks must be registries compatible with the `npm` endpoints. Eg: *verdaccio* , `sinopia@1.4.0` , *npmjs registry* , *yarn registry* , *JFrog* , *Nexus* and more.
* Setting `cache` to false will help to save space in your hard drive. This will avoid store `tarballs` but [it will keep metadata in folders ](https://github.com/verdaccio/verdaccio/issues/391 ).
2017-07-02 02:35:24 -05:00
* Exceed with multiple uplinks might slow down the lookup of your packages due for each request a npm client does, verdaccio does 1 call for each uplink.
* The (timeout, maxage and fail_timeout) format follow the [NGINX measurement units ](http://nginx.org/en/docs/syntax.html )