← Todos os templates · Ferramentas de desenvolvimento
Faça deploy de Verdaccio em um clique
Um registry npm privado para os seus próprios pacotes, que também faz cache dos pacotes do npm
Uma alternativa auto-hospedada para npm Teams, GitHub Packages e JFrog Artifactory.
O que é Verdaccio?
O Verdaccio é um registry npm privado e leve, que equipes e desenvolvedores solo rodam no lugar dos pacotes privados pagos do npm, do GitHub Packages ou do JFrog Artifactory. Você publica pacotes nele com npm publish e instala com npm, yarn ou pnpm como se fosse do npmjs. Ele não precisa de banco de dados: os pacotes e seus metadados são arquivos no disco dele.
Ele também é um proxy do registry público: um pacote que ele não tem vem do npmjs pelo uplink e fica guardado, então as próximas instalações saem do Verdaccio, não do npmjs, e um escopo como @seunome pode continuar privado enquanto todo o resto vem do npm. A página web dele mostra o readme, as versões e as dependências de cada pacote.
Este template roda o Verdaccio com o armazenamento num volume e uma única conta, com o usuário e a senha que você informa, gravados no arquivo htpasswd dele a cada inicialização. O cadastro está desativado, e os pacotes, os seus e os do npm, só podem ser lidos e instalados por um usuário que entrou, então o registry não é um espelho aberto para estranhos.
Hospedagem de Verdaccio no Pethost
- Você entra no Pethost com uma passkey, GitHub ou Google. Ainda não tem máquina? Você escolhe um plano, e o link espera até ela ficar pronta.
- Novo projeto abre em Verdaccio. Você preenche o que ele pede e clica em Criar projeto: Usuário, Senha do administrador.
- Em um ou dois minutos Verdaccio está no ar no próprio endereço com HTTPS. Os segredos são gerados ao acaso, e os dados vão para o backup noturno.
- É um projeto como qualquer outro: você ou seu agente podem alterá-lo, fazer rollback ou restaurá-lo.
Perguntas sobre Verdaccio
O Verdaccio é gratuito?
Sim. O Verdaccio é de código aberto sob a licença MIT, sem edição paga, e rodá-lo você mesmo custa só a máquina.
Como publico um pacote no Verdaccio?
Rode npm login --registry https://seu-endereco/ com seu usuário e sua senha, e depois npm publish --registry https://seu-endereco/ na pasta do pacote. Definir publishConfig.registry no package.json ou registry no .npmrc evita digitar o endereço toda vez.
O Verdaccio também instala pacotes públicos?
Sim. Um pacote que não está no Verdaccio é buscado no npmjs pelo uplink e guardado em cache, então você pode apontar o npm, o yarn ou o pnpm só para o Verdaccio e ter tanto os seus pacotes quanto os públicos. Neste template, instalar também exige um usuário que entrou.
O Verdaccio funciona com yarn e pnpm?
Sim. O Verdaccio fala o protocolo do registry do npm, então npm, yarn e pnpm publicam nele e instalam a partir dele assim que a configuração de registry aponta para o endereço do Verdaccio e eles têm o token dele.
De quanta memória e disco Verdaccio precisa?
Verdaccio é leve: cerca de 100 MB de memória; o disco guarda seus pacotes e os públicos instalados por ele, alguns megabytes cada. No Pethost, o plano Starter basta, com espaço para outros apps ao lado.
Arquivo Docker Compose de Verdaccio
O template é este compose.yaml e as variáveis gravadas no .env do projeto quando ele é criado. O Pethost roda o arquivo exatamente como está escrito.
Containers: verdaccio (verdaccio/verdaccio:6).
Volumes, no backup noturno: 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:
Mais em Ferramentas de desenvolvimento
- GiteaHospedagem de Git com pull requests e issues
- code-serverO VS Code no navegador
- KrokiDiagramas a partir de texto: PlantUML, Mermaid, Graphviz e mais
- CoderAmbientes de desenvolvimento remotos a partir de templates do Terraform, abertos no VS Code, JetBrains, no navegador ou por SSH
- HasuraAPIs GraphQL e REST instantâneas sobre um banco Postgres, com permissões, eventos e um console web
- InsForgeUm backend para apps que agentes de código constroem: Postgres, autenticação, armazenamento e edge functions