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.

Il registry npm nella documentazione

.npmrc
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

npm-hostedospitato, non lo ha
npmjs-proxyproxy, ha risposto

a monte

registry.npmjs.orgha risposto

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.

Il registry Docker nella documentazione

Accedere, caricare e scaricare un'immagine
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 read su 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 latest non viene mai eliminato. Ripubblicare una versione npm ritirata viene rifiutato.
Dipendenze verificate
A ogni pubblicazione, ArtiFerris verifica le dipendenze del pacchetto. Anche npm audit funziona con ArtiFerris; i nomi e le versioni verificati vengono allora inviati a registry.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.

I repository nella documentazione

Provare ArtiFerris, poi distribuire la propria istanza.

L'istanza pubblica permette di scoprire il prodotto. La propria istanza conserva i propri pacchetti.

Avviare lo stack con Docker Compose
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