Crear un repositorio NPM privado con Verdaccio en Docker Compose

Tiempo de lectura: 2 minutos

Verdaccio es un servidor ligero que te permitirá manejar tus propias librerías de NPM de forma privada.

Logo Verdaccio

En este tutorial, te enseñaré cómo crear un repositorio privado NPM con Verdaccio y Docker.

Paso 1: Crear un archivo docker-compose.yml

Crea un archivo llamado docker-compose.yml en tu proyecto y agrega el siguiente contenido:

services:
  verdaccio_npm:
    image: verdaccio/verdaccio
    container_name: verdaccio_npm
    ports:
      - "4873:4873" # Exponer el puerto de Verdaccio
    volumes:
      - ./config/verdaccio_config:/verdaccio/conf 
      - ./config/verdaccio_plugins:/verdaccio/plugins

Ahora vamos a crear un archivo llamado config.yaml y lo ponemos dentro de ./config/verdaccion_config

# Ruta a un directorio con todos los paquetes
storage: ./storage

# Ruta al archivo htpasswd para la gestión de usuarios
auth:
  htpasswd:
    file: ./htpasswd
    # Establecer max_users en 0 para deshabilitar el auto-registro
    max_users: 0  # Esto evita que cualquier usuario se registre

# Requerir autenticación para acceder a la interfaz web
web:
  login: true  # Habilitar inicio de sesión
  title: Verdaccio
  primaryColor: "#046fdb"
# Lista de repositorios conocidos a los que podemos conectarnos
uplinks:
  npmjs:
    url: https://registry.npmjs.org/

# Configuración de los paquetes
packages:
  '@*/*':
    access: $authenticated 
    publish: $authenticated  # Publicar solo usuarios autenticados
    unpublish: $authenticated  # Despublicar solo usuarios autenticados
    proxy: npmjs  # Proxiar a npmjs

  '**':
    access: $authenticated 
    publish: $authenticated  # Publicar solo usuarios autenticados
    unpublish: $authenticated  # Despublicar solo usuarios autenticados
    proxy: npmjs  # Proxiar a npmjs

# Configuración del servidor
server:
  keepAliveTimeout: 60  # Tiempo de espera para conexiones

# Middleware de auditoría
middlewares:
  audit:
    enabled: true  # Habilitar auditoría

# Configuración de logs
log: { type: stdout, format: pretty, level: http }  # Configuración de los logs

# Configuración de i18n
i18n:
  web: en-US  # Idioma de la interfaz web

Ahora tenemos que crear la contraseña y usuario de administrador.

Para eso tenemos que generar un archivo htpasswd y añadirlo dentro de ./config/verdaccio_config

Para generar este archivo podemos usar este comando:

htpasswd -c ./config/htpasswd <nombre-de-usuario>

O crearlo desde una web: https://www.web2generators.com/apache-tools/htpasswd-generator

.gitignore:

config/verdaccio_storage/*
config/verdaccio_plugins/*
config/verdaccio_config/htpasswd
config/verdaccio_config/storage

Y ya podemos ejecutar el docker.

Paso 2: Ejecutar Docker Compose

Abre tu terminal y navega a la carpeta donde creaste el archivo docker-compose.yml, luego ejecuta:

docker-compose up -d

Esto descargará la imagen de Verdaccio y levantará el contenedor en segundo plano.

Paso 3: Acceder a Verdaccio

Después de que el contenedor esté en funcionamiento, puedes acceder a la interfaz web de Verdaccio en http://localhost:4873.

Comandos importantes:

  • Hacer login en el server
npm login --registry http://localhost:4873/
  • Publicar librería:
npm publish --registry http://localhost:4873/

Nos pedirá hacer login, añadimos usuario y contraseña.

  • Instalar libreria
npm install <nombre-del-paquete> --registry http://localhost:4873/
  • Lista de paquetes
npm search --registry http://localhost:4873/
  • Borrar paquetes
npm unpublish <nombre-del-paquete> --registry http://localhost:4873/ --force
  • Actualizar un paquete
npm version <nueva-versión>
npm publish --registry http://localhost:4873/
  • Cerrar sesión
npm logout --registry http://localhost:4873/

Deja un comentario