---
title: "Verdaccio: Docker Compose и хостинг в один клик"
description: "Self-hosted Verdaccio: легкий open source приватный npm-реестр. Публикуйте свои пакеты и кешируйте npmjs, работает с npm, yarn и pnpm."
---

[← Все шаблоны](https://pethost.dev/ru/templates/) · [Инструменты разработчика](https://pethost.dev/ru/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 — с passkey, через 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/ru/templates/developer-tools/)

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

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Шаблоны](https://pethost.dev/ru/templates/)
- [О нас](https://pethost.dev/about/)
- [Документация](https://pethost.dev/docs/)
- [Блог](https://pethost.dev/ru/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/ru/postgres/)

Сравнения

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

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

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