ArtiFerrisRegistry
Due registry, una console
ArtiFerris parla il protocollo del registry npm e quello di Docker/OCI: npm, pnpm, yarn, docker e podman lo usano come il loro registry abituale. Ogni repository contiene pacchetti npm o immagini Docker, mai entrambi.
Un gruppo, due membri
Il .npmrc di un progetto punta a un gruppo. Il gruppo interroga i suoi membri nell'ordine stabilito, e risponde il primo che contiene il pacchetto. Attivare l'interruttore per vedere cosa cambia una seconda richiesta.
registry=https://acme.artiferris.pro/npm/npm-all/
//acme.artiferris.pro/npm/npm-all/:_authToken=<jeton>
# then, in the project
npm install left-pad
Pacchetto servito da npmjs-proxy, dal registry a monte
npm-all
a monte
npm-hosted non contiene left-pad, quindi il gruppo passa al membro successivo. Il proxy recupera il pacchetto da registry.npmjs.org, lo conserva, poi lo serve.
Il registry Docker
La password di docker login è un token API. Ogni push avvia una scansione Trivy dell'immagine, i cui risultati compaiono sulla sua pagina.
echo <jeton> | docker login acme.artiferris.pro -u camille --password-stdin
docker tag api:1.4.0 acme.artiferris.pro/images/api:1.4.0
docker push acme.artiferris.pro/images/api:1.4.0
docker pull acme.artiferris.pro/images/api:1.4.0
Le regole di un repository
Cosa ogni repository conserva, rifiuta e verifica.
- Tre tipi di repository
- Ospitato per i propri pacchetti, proxy per una cache davanti a un registry a monte, gruppo per più repository dello stesso formato dietro un unico indirizzo. Leggere attraverso un gruppo richiede
readsu ciascuno dei suoi membri. - Una quota per repository
- Lo spazio che il repository può occupare. Una pubblicazione che la supererebbe viene rifiutata.
- Una conservazione per repository
- Mantenere soltanto le ultime N versioni o etichette. La pulizia passa ogni 6 ore, e
latestnon viene mai eliminato. Ripubblicare una versione npm ritirata viene rifiutato. - Dipendenze verificate
- A ogni pubblicazione, ArtiFerris verifica le dipendenze del pacchetto. Anche
npm auditfunziona con ArtiFerris; i nomi e le versioni verificati vengono allora inviati aregistry.npmjs.org. - Immagini analizzate
- Trivy, incluso nell'immagine di ArtiFerris, analizza ogni immagine caricata. Una scansione si può rilanciare a mano dalla pagina dell'immagine.
- Repository pubblici
- Un repository pubblico si legge senza account e compare nel catalogo pubblico. Le letture anonime hanno un budget per client e per minuto, 1200 per impostazione predefinita.
Provare ArtiFerris, poi distribuire la propria istanza.
L'istanza pubblica permette di scoprire il prodotto. La propria istanza conserva i propri pacchetti.
git clone https://github.com/Masmarino/ArtiFerris.git
cd ArtiFerris
cp .env.example .env
# set POSTGRES_PASSWORD, JWT_SECRET, SECRETS_ENCRYPTION_KEY, PUBLIC_URL and the first admin in .env
docker compose up -d --build