← Усі шаблони · Інструменти розробника
Задеплойте 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 — з ключем доступу, через 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