---
title: "Verdaccio: Docker Compose i hosting jednym kliknięciem"
description: "Hostuj Verdaccio u siebie: lekki prywatny rejestr npm open source. Publikuj własne pakiety i trzymaj npmjs w cache, z npm, yarn i pnpm."
---

[← Wszystkie szablony](https://pethost.dev/pl/templates/) · [Narzędzia dla programistów](https://pethost.dev/pl/templates/developer-tools/)

# Wdróż Verdaccio jednym kliknięciem

Prywatny rejestr npm na twoje własne pakiety, który przechowuje też w cache pakiety z npm

Alternatywa dla npm Teams, GitHub Packages i JFrog Artifactory, hostowana u siebie.

[Wdróż na Pethost](https://console.pethost.dev/?template=verdaccio)

## Czym jest Verdaccio?

Verdaccio to lekki prywatny rejestr npm, który zespoły i programiści działający w pojedynkę uruchamiają zamiast płatnych prywatnych pakietów npm, GitHub Packages albo JFrog Artifactory. Publikujesz w nim pakiety przez npm publish i instalujesz je przez npm, yarn albo pnpm tak samo jak z npmjs. Nie potrzebuje bazy danych: pakiety i ich metadane to pliki na jego dysku.

To także proxy publicznego rejestru: pakiet, którego nie ma, przychodzi z npmjs przez jego uplink i zostaje zachowany, więc kolejne instalacje idą z Verdaccio, a nie z npmjs, a scope taki jak @twojanazwa może zostać prywatny, podczas gdy cała reszta przychodzi z npm. Jego strona pokazuje readme, wersje i zależności każdego pakietu.

Ten szablon uruchamia Verdaccio z magazynem na wolumenie i jednym kontem z nazwy użytkownika i hasła, które podajesz, zapisywanym do pliku htpasswd przy każdym starcie. Rejestracja jest wyłączona, a pakiety, zarówno twoje, jak i te z npm, może czytać i instalować tylko zalogowany użytkownik, więc rejestr nie jest otwartym mirrorem dla obcych.

## Hosting Verdaccio na Pethost

1. Logujesz się do Pethost kluczem dostępu, przez GitHub albo Google. Nie masz jeszcze maszyny? Wybierasz plan, a link czeka, aż będzie gotowa.
2. Okno „Nowy projekt” otwiera się na aplikacji Verdaccio. Wypełniasz to, o co prosi, i klikasz „Utwórz projekt”: **Nazwa użytkownika**, **Hasło administratora**.
3. Za minutę czy dwie aplikacja Verdaccio działa pod własnym adresem z HTTPS. Jej sekrety są tworzone losowo, a dane trafiają do nocnego backupu.
4. To projekt jak każdy inny: ty albo twój agent możecie go zmienić, cofnąć do wcześniejszej wersji albo przywrócić.

## Pytania o Verdaccio

**Czy Verdaccio jest darmowy?**

Tak. Verdaccio to open source na licencji MIT, bez płatnej edycji, a uruchomienie go u siebie kosztuje tylko maszynę.

**Jak opublikować pakiet w Verdaccio?**

Uruchom npm login --registry https://twoj-adres/ ze swoją nazwą użytkownika i hasłem, a potem npm publish --registry https://twoj-adres/ w katalogu pakietu. Ustawienie publishConfig.registry w package.json albo registry w .npmrc oszczędza wpisywania adresu za każdym razem.

**Czy Verdaccio zainstaluje też pakiety publiczne?**

Tak. Pakiet, którego nie ma w Verdaccio, jest pobierany z npmjs przez jego uplink i trafia do cache, więc możesz skierować npm, yarn albo pnpm wyłącznie na Verdaccio i dostać zarówno swoje pakiety, jak i publiczne. W tym szablonie instalowanie też wymaga zalogowanego użytkownika.

**Czy Verdaccio działa z yarn i pnpm?**

Tak. Verdaccio mówi protokołem rejestru npm, więc npm, yarn i pnpm publikują do niego i instalują z niego, gdy tylko ich ustawienie rejestru wskazuje na jego adres i mają jego token.

**Ile pamięci i miejsca na dysku potrzebuje Verdaccio?**

Verdaccio ma małe wymagania: około 100 MB pamięci; na dysku trzyma twoje pakiety i pakiety publiczne zainstalowane przez niego, po kilka megabajtów każdy. Na Pethost wystarczy mu plan Starter, z miejscem na inne aplikacje obok.

## Verdaccio: plik Docker Compose

Szablon to ten compose.yaml i zmienne zapisywane do .env projektu przy jego tworzeniu. Pethost uruchamia plik dokładnie tak, jak jest napisany.

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

**Wolumeny, w nocnym backupie:** 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)[Zobacz na GitHubie](https://github.com/pethost-dev/templates/tree/main/verdaccio)

## [Więcej w kategorii Narzędzia dla programistów](https://pethost.dev/pl/templates/developer-tools/)

- [**Gitea**Hosting Git z pull requestami i zgłoszeniami](https://pethost.dev/pl/templates/gitea/)
- [**code-server**VS Code w przeglądarce](https://pethost.dev/pl/templates/code-server/)
- [**Kroki**Diagramy z tekstu: PlantUML, Mermaid, Graphviz i inne](https://pethost.dev/pl/templates/kroki/)
- [**Coder**Zdalne środowiska programistyczne z szablonów Terraform, otwierane w VS Code, JetBrains, przeglądarce albo przez SSH](https://pethost.dev/pl/templates/coder/)
- [**Hasura**Natychmiastowe API GraphQL i REST nad bazą Postgres, z uprawnieniami, zdarzeniami i konsolą w przeglądarce](https://pethost.dev/pl/templates/hasura/)
- [**InsForge**Backend dla aplikacji, które budują agenci kodujący: Postgres, uwierzytelnianie, pliki i edge functions](https://pethost.dev/pl/templates/insforge/)

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Szablony](https://pethost.dev/pl/templates/)
- [O nas](https://pethost.dev/about/)
- [Dokumentacja](https://pethost.dev/docs/)
- [Blog](https://pethost.dev/pl/blog/)
- [API](https://pethost.dev/docs/api/)
- [CLI](https://pethost.dev/docs/cli/)
- [Plugin](https://github.com/pethost-dev/plugin)
- [Regulamin](https://pethost.dev/terms/)
- [Prywatność](https://pethost.dev/privacy/)
- [Zwroty](https://pethost.dev/refunds/)
- [support@pethost.dev](mailto:support@pethost.dev)

Bazy danych

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

Porównania

- [Coolify vs Dokploy vs CapRover vs Dokku](https://pethost.dev/pl/blog/coolify-vs-dokploy-vs-caprover-vs-dokku/)
- [Coolify Cloud vs Dokploy Cloud](https://pethost.dev/pl/blog/coolify-cloud-vs-dokploy-cloud/)
- [Cennik Railway vs Render vs Fly.io](https://pethost.dev/pl/blog/railway-vs-render-vs-fly-io-pricing/)
- [Zarządzany hosting Docker Compose](https://pethost.dev/pl/blog/managed-docker-compose-hosting/)

Alternatywy

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