← Все шаблоны · Инструменты разработчика
Задеплойте Verdaccio в один клик
Приватный npm-реестр для ваших собственных пакетов, который заодно кеширует пакеты из npm
Альтернатива npm Teams, GitHub Packages и JFrog Artifactory на вашей машине.
Что такое 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
- Вы входите в Pethost — с passkey, через GitHub или Google. Машины еще нет? Вы выбираете тариф, и ссылка ждет, пока машина не будет готова.
- Окно «Новый проект» открывается на приложении Verdaccio. Вы заполняете то, что оно просит, и нажимаете «Создать проект»: Имя пользователя, Пароль администратора.
- Через минуту-две Verdaccio работает по своему адресу с HTTPS. Секреты создаются случайно, а данные попадают в ночной бэкап.
- Это проект как любой другой: вы или ваш агент можете его изменить, откатить или восстановить.
Вопросы про 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:
Еще в категории «Инструменты разработчика»
- GiteaGit-хостинг с пул-реквестами и задачами
- code-serverVS Code в браузере
- KrokiДиаграммы из текста: PlantUML, Mermaid, Graphviz и другие
- CoderУдалённые среды разработки из шаблонов Terraform, которые открываются в VS Code, JetBrains, браузере или по SSH
- HasuraГотовые GraphQL- и REST-API поверх базы Postgres, с правами доступа, событиями и веб-консолью
- InsForgeБэкенд для приложений, которые пишут AI-агенты: Postgres, авторизация, файлы и edge functions