← Tous les templates · Outils de développement
Déployez Verdaccio en un clic
Un registre npm privé pour vos propres paquets, qui met aussi en cache ceux de npm
Une alternative auto-hébergée à npm Teams, GitHub Packages et JFrog Artifactory.
Qu’est-ce que Verdaccio ?
Verdaccio est un registre npm privé et léger, que les équipes comme les développeurs solo font tourner à la place des paquets privés payants de npm, de GitHub Packages ou de JFrog Artifactory. Vous y publiez des paquets avec npm publish, et vous les installez avec npm, yarn ou pnpm comme depuis npmjs. Il n’a besoin d’aucune base de données : les paquets et leurs métadonnées sont des fichiers sur son disque.
C’est aussi un proxy du registre public : un paquet qu’il n’a pas vient de npmjs par son uplink et est conservé, donc les installations suivantes viennent de Verdaccio et non de npmjs, et un scope comme @votrenom peut rester privé pendant que tout le reste vient de npm. Sa page web montre le readme, les versions et les dépendances de chaque paquet.
Ce template fait tourner Verdaccio avec son stockage dans un volume et un seul compte, le nom d’utilisateur et le mot de passe que vous indiquez, écrits dans son fichier htpasswd à chaque démarrage. L’inscription est désactivée, et les paquets, les vôtres comme ceux de npm, ne sont lus et installés que par un utilisateur connecté, donc le registre n’est pas un miroir ouvert aux inconnus.
Hébergement de Verdaccio sur Pethost
- Vous vous connectez à Pethost avec une clé d’accès, GitHub ou Google. Pas encore de machine ? Vous choisissez une offre, et le lien attend qu’elle soit prête.
- Nouveau projet s’ouvre sur Verdaccio. Vous remplissez ce qu’il demande et cliquez sur Créer le projet : Nom d’utilisateur, Mot de passe administrateur.
- En une minute ou deux, Verdaccio tourne à sa propre adresse en HTTPS. Ses secrets sont créés au hasard, et ses données sont dans la sauvegarde nocturne.
- C’est un projet comme les autres : vous ou votre agent pouvez le modifier, revenir à une version précédente ou le restaurer.
Questions sur Verdaccio
Verdaccio est-il gratuit ?
Oui. Verdaccio est open source sous licence MIT, sans édition payante, et le faire tourner vous-même ne coûte que la machine.
Comment publier un paquet sur Verdaccio ?
Lancez npm login --registry https://votre-adresse/ avec votre nom d’utilisateur et votre mot de passe, puis npm publish --registry https://votre-adresse/ dans le dossier du paquet. Définir publishConfig.registry dans package.json ou registry dans .npmrc évite de taper l’adresse à chaque fois.
Verdaccio peut-il aussi installer des paquets publics ?
Oui. Un paquet absent de Verdaccio est récupéré depuis npmjs par son uplink et mis en cache, donc vous pouvez faire pointer npm, yarn ou pnpm vers Verdaccio seul et obtenir à la fois vos paquets et les paquets publics. Dans ce template, l’installation demande aussi un utilisateur connecté.
Verdaccio fonctionne-t-il avec yarn et pnpm ?
Oui. Verdaccio parle le protocole du registre npm, donc npm, yarn et pnpm y publient et y installent dès que leur réglage de registre pointe vers son adresse et qu’ils ont son token.
De combien de mémoire et de disque Verdaccio a-t-il besoin ?
Verdaccio est léger : environ 100 MB de mémoire ; son disque contient vos paquets et les paquets publics installés par son intermédiaire, quelques mégaoctets chacun. Sur Pethost, l’offre Starter lui suffit, avec de la place pour d’autres applications à côté.
Le fichier Docker Compose de Verdaccio
Le template, c’est ce compose.yaml et les variables écrites dans le .env du projet à sa création. Pethost exécute le fichier tel qu’il est écrit.
Conteneurs : verdaccio (verdaccio/verdaccio:6).
Volumes, dans la sauvegarde nocturne : storage.
services:
verdaccio:
image: verdaccio/verdaccio:6
restart: unless-stopped
environment:
VERDACCIO_PUBLIC_URL: ${URL}
ADMIN_USERNAME: ${ADMIN_USERNAME}
ADMIN_PASSWORD: ${ADMIN_PASSWORD}
# The administrator's line of the htpasswd file is written from the username and password
# given at every start, so its password is the one in the project's .env; the other lines,
# users the administrator added, stay as they are.
command:
- /bin/sh
- -c
- |
node -e '
const fs = require("node:fs");
const bcrypt = require("/usr/local/lib/node_modules/verdaccio/node_modules/bcryptjs");
const file = "/verdaccio/storage/htpasswd";
const { ADMIN_USERNAME: name, ADMIN_PASSWORD: password } = process.env;
const lines = fs.existsSync(file) ? fs.readFileSync(file, "utf8").split("\n") : [];
const others = lines.filter((line) => line && !line.startsWith(name + ":"));
fs.writeFileSync(file, [...others, name + ":" + bcrypt.hashSync(password, 10)].join("\n") + "\n", { mode: 0o600 });
' || exit 1
unset ADMIN_PASSWORD
exec verdaccio --config /verdaccio/conf/config.yaml --listen http://0.0.0.0:4873
configs:
- source: config
target: /verdaccio/conf/config.yaml
volumes:
- storage:/verdaccio/storage
configs:
config:
content: |
storage: /verdaccio/storage/data
plugins: /verdaccio/plugins
web:
title: Verdaccio
auth:
htpasswd:
file: /verdaccio/storage/htpasswd
# Nobody signs up with npm adduser: users are lines of the file, which the administrator adds.
max_users: -1
uplinks:
npmjs:
url: https://registry.npmjs.org/
# Only users who signed in install or publish, so the registry is no open mirror of npm.
packages:
'@*/*':
access: $$authenticated
publish: $$authenticated
unpublish: $$authenticated
proxy: npmjs
'**':
access: $$authenticated
publish: $$authenticated
unpublish: $$authenticated
proxy: npmjs
server:
keepAliveTimeout: 60
middlewares:
audit:
enabled: true
log:
type: stdout
format: pretty
level: http
volumes:
storage:
Aussi dans Outils de développement
- GiteaHébergement Git avec pull requests et issues
- code-serverVS Code dans le navigateur
- KrokiDes diagrammes à partir de texte : PlantUML, Mermaid, Graphviz et plus
- CoderDes environnements de développement distants issus de modèles Terraform, ouverts dans VS Code, JetBrains, le navigateur ou en SSH
- HasuraDes API GraphQL et REST instantanées sur une base Postgres, avec des permissions, des événements et une console web
- InsForgeUn backend pour les applications que construisent les agents de code : Postgres, authentification, stockage et edge functions