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.
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
amont
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.
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
readsur 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
latestn'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 auditfonctionne aussi contre ArtiFerris ; les noms et versions audités partent alors versregistry.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.
Évaluez ArtiFerris, puis déployez votre propre instance.
L'instance publique permet de découvrir le produit. Votre instance conserve vos paquets.
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