ArtiFerrisRegistres

Deux registres, une console

ArtiFerris parle le protocole du registre npm et celui de Docker/OCI : npm, pnpm, yarn, docker et podman s'en servent comme de leur registre habituel. Chaque dépôt contient des paquets npm ou des images Docker, jamais les deux.

Un groupe, deux membres

Le .npmrc d'un projet pointe sur un groupe. Le groupe consulte ses membres dans l'ordre que vous fixez, et le premier qui contient le paquet répond. Activez l'interrupteur pour voir ce que change une seconde demande.

Le registre npm dans la documentation

.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

Paquet servi par npmjs-proxy, depuis l'amont

npm-all

npm-hostedhébergé, ne l'a pas
npmjs-proxyproxy, a répondu

amont

registry.npmjs.orga répondu

npm-hosted ne contient pas left-pad : le groupe passe au membre suivant. Le proxy va chercher le paquet sur registry.npmjs.org, le garde, puis le sert.

Le registre Docker

Le mot de passe de docker login est un jeton API. Chaque push lance un scan Trivy de l'image, dont les résultats s'affichent sur sa page.

Le registre Docker dans la documentation

Se connecter, pousser et tirer une image
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

Les règles d'un dépôt

Ce que chaque dépôt garde, refuse et vérifie.

Trois types de dépôt
Hébergé pour vos propres paquets, proxy pour un cache devant un registre amont, groupe pour plusieurs dépôts du même format derrière une seule adresse. Lire à travers un groupe demande read sur chacun de ses membres.
Un quota par dépôt
La place que le dépôt peut occuper. Une publication qui le dépasserait est refusée.
Une rétention par dépôt
Ne garder que les N dernières versions ou étiquettes. La purge passe toutes les 6 heures, et latest n'est jamais purgé. Republier une version npm dépubliée est refusé.
Les dépendances auditées
À chaque publication, ArtiFerris audite les dépendances du paquet. npm audit fonctionne aussi contre ArtiFerris ; les noms et versions audités partent alors vers registry.npmjs.org.
Les images analysées
Trivy, présent dans l'image d'ArtiFerris, analyse chaque image poussée. Un scan se relance à la main depuis la page de l'image.
Des dépôts publics
Un dépôt public se lit sans compte et apparaît dans le catalogue public. Les lectures anonymes ont un budget par client et par minute, 1 200 par défaut.

Les dépôts dans la documentation

Évaluez ArtiFerris, puis déployez votre propre instance.

L'instance publique permet de découvrir le produit. Votre instance conserve vos paquets.

Démarrer la pile avec 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