---
title: "Verdaccio: Docker Compose і хостинг в один клік"
description: "Self-hosted Verdaccio: легкий приватний npm-реєстр із відкритим кодом. Публікуйте свої пакети й кешуйте npmjs, працює з npm, yarn і pnpm."
---

[← Усі шаблони](https://pethost.dev/uk/templates/) · [Інструменти розробника](https://pethost.dev/uk/templates/developer-tools/)

# Задеплойте Verdaccio в один клік

Приватний npm-реєстр для ваших власних пакетів, який заодно кешує пакети з npm

Альтернатива npm Teams, GitHub Packages і JFrog Artifactory на вашій машині.

[Задеплоїти на Pethost](https://console.pethost.dev/?template=verdaccio)

## Що таке Verdaccio?

Verdaccio — легкий приватний npm-реєстр, який команди й розробники-одинаки запускають замість платних приватних пакетів npm, GitHub Packages або JFrog Artifactory. Ви публікуєте в нього пакети через npm publish і встановлюєте їх через npm, yarn або pnpm так само, як із npmjs. База даних йому не потрібна: пакети та їхні метадані — це файли на його диску.

А ще він працює як проксі публічного реєстру: пакет, якого в нього немає, приходить із npmjs через його uplink і зберігається, тож наступні встановлення йдуть із Verdaccio, а не з npmjs, а скоуп на кшталт @yourname може лишатися приватним, поки все інше приходить із npm. Його вебсторінка показує readme, версії й залежності кожного пакета.

Цей шаблон запускає Verdaccio зі сховищем у томі й одним акаунтом — іменем користувача й паролем, які ви вказуєте; вони записуються в його файл htpasswd під час кожного запуску. Реєстрацію вимкнено, а пакети, і ваші, і з npm, читати й встановлювати може лише користувач, який увійшов, тож реєстр не стане відкритим дзеркалом для сторонніх.

## Хостинг Verdaccio на Pethost

1. Ви входите в Pethost — з ключем доступу, через GitHub або Google. Машини ще немає? Ви обираєте тариф, і посилання чекає, доки машина не буде готова.
2. Вікно «Новий проєкт» відкривається на застосунку Verdaccio. Ви заповнюєте те, що він просить, і натискаєте «Створити проєкт»: **Ім’я користувача**, **Пароль адміністратора**.
3. За хвилину-дві Verdaccio працює за власною адресою з HTTPS. Секрети створюються випадково, а дані потрапляють у щонічний бекап.
4. Це проєкт як будь-який інший: ви або ваш агент можете його змінити, відкотити або відновити.

## Питання про Verdaccio

**Verdaccio безкоштовний?**

Так. Verdaccio має відкритий код за ліцензією MIT, платної редакції в нього немає, і якщо запускати його самому, платити доведеться лише за машину.

**Як опублікувати пакет у Verdaccio?**

Виконайте npm login --registry https://your-address/ зі своїм іменем користувача й паролем, потім npm publish --registry https://your-address/ у каталозі пакета. Якщо задати publishConfig.registry у package.json або registry у .npmrc, адресу не доведеться набирати щоразу.

**Чи може Verdaccio встановлювати й публічні пакети?**

Так. Пакет, якого немає у Verdaccio, стягується з npmjs через його uplink і кешується, тож npm, yarn або pnpm можна спрямувати лише на Verdaccio й отримувати і свої пакети, і публічні. У цьому шаблоні для встановлення теж треба ввійти.

**Чи працює Verdaccio з yarn і pnpm?**

Так. Verdaccio розмовляє протоколом npm-реєстру, тому npm, yarn і pnpm публікують у нього й встановлюють із нього, щойно в їхньому налаштуванні реєстру вказано його адресу і в них є його токен.

**Скільки пам’яті й диска потрібно Verdaccio?**

Verdaccio має скромні вимоги: близько 100 MB пам’яті; на диску лежать ваші пакети й публічні пакети, встановлені через нього, по кілька мегабайтів кожен. На Pethost йому вистачить тарифу Starter, і поруч залишиться місце для інших застосунків.

## Verdaccio: файл Docker Compose

Шаблон — це цей compose.yaml і змінні, які записуються в .env проєкту під час його створення. Pethost запускає файл так, як його написано.

**Контейнери:** verdaccio (verdaccio/verdaccio:6).

**Томи, у щонічному бекапі:** 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)[Відкрити на GitHub](https://github.com/pethost-dev/templates/tree/main/verdaccio)

## [Ще в категорії «Інструменти розробника»](https://pethost.dev/uk/templates/developer-tools/)

- [**Gitea**Git-хостинг із пул-реквестами й задачами](https://pethost.dev/uk/templates/gitea/)
- [**code-server**VS Code у браузері](https://pethost.dev/uk/templates/code-server/)
- [**Kroki**Діаграми з тексту: PlantUML, Mermaid, Graphviz та інші](https://pethost.dev/uk/templates/kroki/)
- [**Coder**Віддалені середовища розробки з шаблонів Terraform, які відкриваються у VS Code, JetBrains, браузері або через SSH](https://pethost.dev/uk/templates/coder/)
- [**Hasura**Готові GraphQL- і REST-API поверх бази Postgres, із правами доступу, подіями й вебконсоллю](https://pethost.dev/uk/templates/hasura/)
- [**InsForge**Бекенд для застосунків, які пишуть AI-агенти: Postgres, авторизація, файли та edge functions](https://pethost.dev/uk/templates/insforge/)

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Шаблони](https://pethost.dev/uk/templates/)
- [Про нас](https://pethost.dev/about/)
- [Документація](https://pethost.dev/docs/)
- [Блог](https://pethost.dev/uk/blog/)
- [API](https://pethost.dev/docs/api/)
- [CLI](https://pethost.dev/docs/cli/)
- [Плагін](https://github.com/pethost-dev/plugin)
- [Умови](https://pethost.dev/terms/)
- [Конфіденційність](https://pethost.dev/privacy/)
- [Повернення коштів](https://pethost.dev/refunds/)
- [support@pethost.dev](mailto:support@pethost.dev)

Бази даних

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

Порівняння

- [Coolify vs Dokploy vs CapRover vs Dokku](https://pethost.dev/uk/blog/coolify-vs-dokploy-vs-caprover-vs-dokku/)
- [Coolify Cloud vs Dokploy Cloud](https://pethost.dev/uk/blog/coolify-cloud-vs-dokploy-cloud/)
- [Ціни Railway vs Render vs Fly.io](https://pethost.dev/uk/blog/railway-vs-render-vs-fly-io-pricing/)
- [Керований хостинг Docker Compose](https://pethost.dev/uk/blog/managed-docker-compose-hosting/)

Альтернативи

- [Альтернативи Railway](https://pethost.dev/uk/blog/railway-alternatives/)
- [Альтернативи Heroku](https://pethost.dev/uk/blog/heroku-alternatives/)
- [Альтернативи Dokploy](https://pethost.dev/uk/blog/dokploy-alternatives/)
- [Альтернативи Coolify](https://pethost.dev/uk/blog/coolify-alternatives/)
- [Альтернативи Render](https://pethost.dev/uk/blog/render-alternatives/)
- [Альтернативи Sliplane](https://pethost.dev/uk/blog/sliplane-alternatives/)
