---
title: "Verdaccio Docker Compose und Hosting mit einem Klick"
description: "Verdaccio selbst hosten: die leichte Open-Source-Registry für private npm-Pakete. Veröffentliche eigene Pakete und cache npmjs, mit npm, yarn und pnpm."
---

[← Alle Vorlagen](https://pethost.dev/de/templates/) · [Entwickler-Tools](https://pethost.dev/de/templates/developer-tools/)

# Verdaccio mit einem Klick deployen

Eine private npm-Registry für deine eigenen Pakete, die auch die von npm cacht

Eine selbst gehostete Alternative zu npm Teams, GitHub Packages und JFrog Artifactory.

[Auf Pethost deployen](https://console.pethost.dev/?template=verdaccio)

## Was ist Verdaccio?

Verdaccio ist eine leichte private npm-Registry, die Teams ebenso wie Leute, die allein entwickeln, statt der kostenpflichtigen privaten Pakete von npm, GitHub Packages oder JFrog Artifactory betreiben. Du veröffentlichst Pakete darauf mit npm publish und installierst sie mit npm, yarn oder pnpm wie von npmjs. Eine Datenbank braucht Verdaccio nicht: Pakete und ihre Metadaten sind Dateien auf seiner Disk.

Außerdem ist Verdaccio ein Proxy für die öffentliche Registry: Ein Paket, das es nicht hat, kommt über seinen Uplink von npmjs und wird aufbewahrt, sodass spätere Installationen von Verdaccio statt von npmjs kommen, und ein Scope wie @deinname kann privat bleiben, während alles andere von npm kommt. Die Weboberfläche zeigt für jedes Paket das Readme, die Versionen und die Abhängigkeiten.

Diese Vorlage betreibt Verdaccio mit dem Speicher in einem Volume und einem einzigen Konto aus dem Benutzernamen und dem Passwort, die du festlegst und die bei jedem Start in die htpasswd-Datei geschrieben werden. Die Registrierung ist aus, und Pakete, deine eigenen wie die von npm, kann nur lesen und installieren, wer angemeldet ist, sodass die Registry kein offener Mirror für Fremde ist.

## Verdaccio-Hosting auf Pethost

1. Du meldest dich bei Pethost an, mit Passkey, GitHub oder Google. Noch keine Maschine? Du wählst einen Tarif, und der Link wartet, bis sie bereit ist.
2. „Neues Projekt“ öffnet sich bei Verdaccio. Du füllst aus, was die App braucht, und klickst auf „Projekt erstellen“: **Benutzername**, **Admin-Passwort**.
3. In ein, zwei Minuten läuft Verdaccio unter eigener Adresse mit HTTPS. Die Secrets werden zufällig erzeugt, und die Daten sind im nächtlichen Backup.
4. Es ist ein Projekt wie jedes andere: Du oder dein Agent könnt es ändern, zurückrollen oder wiederherstellen.

## Fragen zu Verdaccio

**Ist Verdaccio kostenlos?**

Ja. Verdaccio ist Open Source unter der MIT-Lizenz, ohne kostenpflichtige Edition, und selbst betrieben kostet es nur die Maschine.

**Wie veröffentliche ich ein Paket in Verdaccio?**

Führ npm login --registry https://deine-adresse/ mit deinem Benutzernamen und Passwort aus, dann npm publish --registry https://deine-adresse/ im Ordner des Pakets. Wenn du publishConfig.registry in der package.json oder registry in der .npmrc setzt, musst du die Adresse nicht jedes Mal tippen.

**Kann Verdaccio auch öffentliche Pakete installieren?**

Ja. Ein Paket, das nicht in Verdaccio liegt, wird über den Uplink von npmjs geholt und gecacht, sodass du npm, yarn oder pnpm allein auf Verdaccio zeigen lassen kannst und sowohl deine Pakete als auch öffentliche bekommst. In dieser Vorlage muss man auch zum Installieren angemeldet sein.

**Funktioniert Verdaccio mit yarn und pnpm?**

Ja. Verdaccio spricht das Protokoll der npm-Registry, also veröffentlichen npm, yarn und pnpm darauf und installieren davon, sobald ihre Registry-Einstellung auf seine Adresse zeigt und sie sein Token haben.

**Wie viel RAM und Speicherplatz braucht Verdaccio?**

Verdaccio ist leicht: etwa 100 MB RAM; auf der Disk liegen deine Pakete und die öffentlichen, die darüber installiert wurden, je ein paar Megabyte. Auf Pethost reicht dafür der Tarif Starter, mit Platz für weitere Apps daneben.

## Verdaccio: die Docker-Compose-Datei

Die Vorlage ist diese compose.yaml und die Variablen, die beim Erstellen in die .env des Projekts geschrieben werden. Pethost führt die Datei so aus, wie sie geschrieben ist.

**Container:** verdaccio (verdaccio/verdaccio:6).

**Volumes, im nächtlichen Backup:** 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)[Auf GitHub ansehen](https://github.com/pethost-dev/templates/tree/main/verdaccio)

## [Mehr in Entwickler-Tools](https://pethost.dev/de/templates/developer-tools/)

- [**Gitea**Git-Hosting mit Pull-Requests und Issues](https://pethost.dev/de/templates/gitea/)
- [**code-server**VS Code im Browser](https://pethost.dev/de/templates/code-server/)
- [**Kroki**Diagramme aus Text: PlantUML, Mermaid, Graphviz und mehr](https://pethost.dev/de/templates/kroki/)
- [**Coder**Entfernte Entwicklungsumgebungen aus Terraform-Vorlagen, geöffnet in VS Code, JetBrains, im Browser oder per SSH](https://pethost.dev/de/templates/coder/)
- [**Hasura**Sofortige GraphQL- und REST-APIs über einer Postgres-Datenbank, mit Berechtigungen, Events und einer Web-Konsole](https://pethost.dev/de/templates/hasura/)
- [**InsForge**Ein Backend für Apps, die Coding-Agenten bauen: Postgres, Auth, Speicher und Edge Functions](https://pethost.dev/de/templates/insforge/)

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Vorlagen](https://pethost.dev/de/templates/)
- [Über uns](https://pethost.dev/about/)
- [Doku](https://pethost.dev/docs/)
- [Blog](https://pethost.dev/de/blog/)
- [API](https://pethost.dev/docs/api/)
- [CLI](https://pethost.dev/docs/cli/)
- [Plugin](https://github.com/pethost-dev/plugin)
- [AGB](https://pethost.dev/terms/)
- [Datenschutz](https://pethost.dev/privacy/)
- [Erstattung](https://pethost.dev/refunds/)
- [support@pethost.dev](mailto:support@pethost.dev)

Datenbanken

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

Vergleiche

- [Coolify vs Dokploy vs CapRover vs Dokku](https://pethost.dev/de/blog/coolify-vs-dokploy-vs-caprover-vs-dokku/)
- [Coolify Cloud vs Dokploy Cloud](https://pethost.dev/de/blog/coolify-cloud-vs-dokploy-cloud/)
- [Railway vs Render vs Fly.io Preise](https://pethost.dev/de/blog/railway-vs-render-vs-fly-io-pricing/)
- [Managed Hosting für Docker Compose](https://pethost.dev/de/blog/managed-docker-compose-hosting/)

Alternativen

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