Verdaccio es un servidor ligero que te permitirá manejar tus propias librerías de NPM de forma privada.
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/