← Wszystkie szablony · Narzędzia dla programistów
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.
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
- Logujesz się do Pethost kluczem dostępu, przez GitHub albo Google. Nie masz jeszcze maszyny? Wybierasz plan, a link czeka, aż będzie gotowa.
- 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.
- 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.
- 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:
Więcej w kategorii Narzędzia dla programistów
- GiteaHosting Git z pull requestami i zgłoszeniami
- code-serverVS Code w przeglądarce
- KrokiDiagramy z tekstu: PlantUML, Mermaid, Graphviz i inne
- CoderZdalne środowiska programistyczne z szablonów Terraform, otwierane w VS Code, JetBrains, przeglądarce albo przez SSH
- HasuraNatychmiastowe API GraphQL i REST nad bazą Postgres, z uprawnieniami, zdarzeniami i konsolą w przeglądarce
- InsForgeBackend dla aplikacji, które budują agenci kodujący: Postgres, uwierzytelnianie, pliki i edge functions