---
title: "Verdaccio avec Docker Compose et hébergement en un clic"
description: "Auto-hébergez Verdaccio, le registre npm privé, léger et open source : publiez vos propres paquets et mettez npmjs en cache, avec npm, yarn et pnpm."
---

[← Tous les templates](https://pethost.dev/fr/templates/) · [Outils de développement](https://pethost.dev/fr/templates/developer-tools/)

# 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.

[Déployer sur Pethost](https://console.pethost.dev/?template=verdaccio)

## 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

1. 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.
2. 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**.
3. 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.
4. 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:
```

[compose.yaml](https://pethost.dev/templates/verdaccio/compose.yaml)[Le voir sur GitHub](https://github.com/pethost-dev/templates/tree/main/verdaccio)

## [Aussi dans Outils de développement](https://pethost.dev/fr/templates/developer-tools/)

- [**Gitea**Hébergement Git avec pull requests et issues](https://pethost.dev/fr/templates/gitea/)
- [**code-server**VS Code dans le navigateur](https://pethost.dev/fr/templates/code-server/)
- [**Kroki**Des diagrammes à partir de texte : PlantUML, Mermaid, Graphviz et plus](https://pethost.dev/fr/templates/kroki/)
- [**Coder**Des environnements de développement distants issus de modèles Terraform, ouverts dans VS Code, JetBrains, le navigateur ou en SSH](https://pethost.dev/fr/templates/coder/)
- [**Hasura**Des API GraphQL et REST instantanées sur une base Postgres, avec des permissions, des événements et une console web](https://pethost.dev/fr/templates/hasura/)
- [**InsForge**Un backend pour les applications que construisent les agents de code : Postgres, authentification, stockage et edge functions](https://pethost.dev/fr/templates/insforge/)

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Templates](https://pethost.dev/fr/templates/)
- [À propos](https://pethost.dev/about/)
- [Docs](https://pethost.dev/docs/)
- [Blog](https://pethost.dev/fr/blog/)
- [API](https://pethost.dev/docs/api/)
- [CLI](https://pethost.dev/docs/cli/)
- [Plugin](https://github.com/pethost-dev/plugin)
- [Conditions](https://pethost.dev/terms/)
- [Confidentialité](https://pethost.dev/privacy/)
- [Remboursements](https://pethost.dev/refunds/)
- [support@pethost.dev](mailto:support@pethost.dev)

Bases de données

- [Postgres](https://pethost.dev/fr/postgres/)

Comparatifs

- [Coolify vs Dokploy vs CapRover vs Dokku](https://pethost.dev/fr/blog/coolify-vs-dokploy-vs-caprover-vs-dokku/)
- [Coolify Cloud vs Dokploy Cloud](https://pethost.dev/fr/blog/coolify-cloud-vs-dokploy-cloud/)
- [Tarifs Railway vs Render vs Fly.io](https://pethost.dev/fr/blog/railway-vs-render-vs-fly-io-pricing/)
- [Hébergement Docker Compose managé](https://pethost.dev/fr/blog/managed-docker-compose-hosting/)

Alternatives

- [Alternatives à Railway](https://pethost.dev/fr/blog/railway-alternatives/)
- [Alternatives à Heroku](https://pethost.dev/fr/blog/heroku-alternatives/)
- [Alternatives à Dokploy](https://pethost.dev/fr/blog/dokploy-alternatives/)
- [Alternatives à Coolify](https://pethost.dev/fr/blog/coolify-alternatives/)
- [Alternatives à Render](https://pethost.dev/fr/blog/render-alternatives/)
- [Alternatives à Sliplane](https://pethost.dev/fr/blog/sliplane-alternatives/)
