---
id: linking-remote-registry
title: 'Linking a Remote Registry'
---

Verdaccio is a proxy and by default [links](uplinks.md) the public registry.

```yaml
uplinks:
  npmjs:
    url: https://registry.npmjs.org/
```

You can link multiple registries, the following document will drive you through some helpful configurations.

## Using Associating Scope {#using-associating-scope}

The unique way to access multiple registries using the `.npmrc` is the scope feature as follows:

```
// .npmrc
registry=https://registry.npmjs.org
@mycompany:registry=http://localhost:4873
```

This approach is valid, but comes with several disadvantages:

- It **only works with scopes**
- Scope must match, **no Regular Expressions are allowed**
- One scope **cannot fetch from multiple registries**
- Tokens/passwords **must be defined within** `.npmrc` and checked in into the repo.

See a full example [here](https://stackoverflow.com/questions/54543979/npmrc-multiple-registries-for-the-same-scope/54550940#54550940).

## Linking a Registry {#linking-a-registry}

Linking a registry is fairly simple. First, define a new section in the `uplinks` section. Note, the order here is irrelevant.

```yaml
  uplinks:
    private:
      url: https://private.registry.net/npm

    ... [truncated] ...

  'webpack':
    access: $all
    publish: $authenticated
    proxy: private

```

Add a `proxy` section to define the selected registry you want to proxy.

## Linking Multiple Registries {#linking-multiple-registries}

```yaml
  uplinks:
    server1:
      url: https://server1.registry.net/npm
    server2:
      url: https://server2.registry.net/npm

    ... [truncated] ...

  'webpack':
    access: $all
    publish: $authenticated
    proxy: server1 server2
```

Verdaccio supports multiple registries on the `proxy` field. The request will be resolved with the first in the list; if that
fails, it will try with the next in the list and so on.

## Offline Registry {#offline-registry}

Having a full Offline Registry is completely possible. If you don't want any connectivity with external remotes you
can do the following.

```yaml
auth:
  htpasswd:
    file: ./htpasswd
uplinks:
packages:
  '@my-company/*':
    access: $all
    publish: none
  '@*/*':
    access: $all
    publish: $authenticated
  '**':
    access: $all
    publish: $authenticated
```

Remove all `proxy` fields within each section of `packages`. The registry will become full offline.