Verdaccio Private NPM Package Server - CloudCommandos/JohnChan GitHub Wiki

Create project folder

mkdir -p /opt/docker/verdaccio

Create folder for configs

mkdir -p /opt/docker/verdaccio/docker-reference/conf

Create config file config.yaml

nano /opt/docker/verdaccio/docker-reference/conf/config.yaml
#
# This is the config file used for the docker images.
# It allows all users to do anything, so don't use it on production systems.
#
# Do not configure host and port under `listen` in this file
# as it will be ignored when using docker.
# see https://verdaccio.org/docs/en/docker#docker-and-custom-port-configuration
#
# Look here for more config file examples:
# https://github.com/verdaccio/verdaccio/tree/master/conf
#

# path to a directory with all packages
storage: /verdaccio/storage/data
# path to a directory with plugins to include
plugins: /verdaccio/plugins

web:
  # WebUI is enabled as default, if you want disable it, just uncomment this line
  #enable: false
  title: Verdaccio
  # comment out to disable gravatar support
  # gravatar: false
  # by default packages are ordercer ascendant (asc|desc)
  # sort_packages: asc
  darkMode: true

# translate your registry, api i18n not available yet
# i18n:
# list of the available translations https://github.com/verdaccio/ui/tree/master/i18n/translations
#   web: en-US

auth:
  htpasswd:
    file: /verdaccio/storage/htpasswd
    # Maximum amount of users allowed to register, defaults to "+infinity".
    # You can set this to -1 to disable registration.
    # max_users: 1000

# a list of other known repositories we can talk to
uplinks:
  npmjs:
    url: https://registry.npmjs.org/
    cache: true
    maxage: 30m

    # scoped packages
    access: $all
    publish: $authenticated
    unpublish: $authenticated
    proxy: npmjs

  '**':
    # allow all users (including non-authenticated users) to read and
    # publish all packages
    #
    # you can specify usernames/groupnames (depending on your auth plugin)
    # and three keywords: "$all", "$anonymous", "$authenticated"
    access: $all

    # allow all known users to publish/publish packages
    # (anyone can register by default, remember?)
    publish: $authenticated
    unpublish: $authenticated

    # if package is not available locally, proxy requests to 'npmjs' registry
    proxy: npmjs

middlewares:
  audit:
    enabled: true

# log settings
logs:
  - { type: stdout, format: pretty, level: http }
  #- {type: file, path: verdaccio.log, level: info}
#experiments:
#  # support for npm token command
#  token: false
#  # support for the new v1 search endpoint, functional by incomplete read more on ticket 1732
#  search: false

# This affect the web and api (not developed yet)
#i18n:
#web: en-US

Make sure that the config folder is accessible by user verdaccio or by anyone

chmod 755 /opt/docker/verdaccio/docker-reference/conf
chmod 644 /opt/docker/verdaccio/docker-reference/conf/config.yaml

Create docker-stack.yaml

nano /opt/docker/verdaccio/docker-stack.yaml
version: '3.8'

services:
  verdaccio:
    image: verdaccio/verdaccio:4.8.1
    networks:
      - node-network
    environment:
      - VERDACCIO_PORT=7080
    ports:
      - "7080:7080"
    volumes:
      - "./docker-reference/conf:/verdaccio/conf"
      - "verdaccio-storage:/verdaccio/storage"   
      - "verdaccio-plugins:/verdaccio/plugins"   

networks:
  node-network:

volumes:
  verdaccio-storage:
  verdaccio-plugins:

Deploy the stack

docker stack deploy --compose-file docker-stack.yaml verdaccio

To use Verdaccio as the npm registry, run these commands on your npm client. Change URL accordingly.

npm config set registry http://192.168.3.150:7080
npm install --verbose