ArtiFerrisRegistries

Zwei Registries, eine Konsole

ArtiFerris spricht das Protokoll der npm-Registry und das von Docker/OCI: npm, pnpm, yarn, docker und podman nutzen es wie ihre gewohnte Registry. Jedes Repository enthält npm-Pakete oder Docker-Images, nie beides.

Eine Gruppe, zwei Mitglieder

Die .npmrc eines Projekts zeigt auf eine Gruppe. Die Gruppe fragt ihre Mitglieder in der von Ihnen festgelegten Reihenfolge ab, und das erste, das das Paket enthält, antwortet. Schalten Sie den Schalter um, um zu sehen, was eine zweite Anfrage ändert.

Die npm-Registry in der Dokumentation

.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

Paket von npmjs-proxy geliefert, aus dem Upstream

npm-all

npm-hostedgehostet, hat es nicht
npmjs-proxyProxy, hat geantwortet

Upstream

registry.npmjs.orghat geantwortet

npm-hosted enthält left-pad nicht, also geht die Gruppe zum nächsten Mitglied. Der Proxy holt das Paket von registry.npmjs.org, behält es und liefert es dann aus.

Die Docker-Registry

Das Passwort für docker login ist ein API-Token. Jeder Push startet einen Trivy-Scan des Images, dessen Ergebnisse auf seiner Seite erscheinen.

Die Docker-Registry in der Dokumentation

Anmelden, ein Image pushen und ziehen
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

Die Regeln eines Repositorys

Was jedes Repository behält, ablehnt und prüft.

Drei Repository-Typen
Gehostet für Ihre eigenen Pakete, Proxy für einen Cache vor einer Upstream-Registry, Gruppe für mehrere Repositories desselben Formats hinter einer Adresse. Das Lesen über eine Gruppe erfordert read auf jedem ihrer Mitglieder.
Ein Kontingent pro Repository
Der Platz, den das Repository belegen darf. Eine Veröffentlichung, die ihn überschreiten würde, wird abgelehnt.
Eine Aufbewahrung pro Repository
Nur die letzten N Versionen oder Tags behalten. Die Bereinigung läuft alle 6 Stunden, und latest wird nie gelöscht. Eine zurückgezogene npm-Version erneut zu veröffentlichen wird abgelehnt.
Geprüfte Abhängigkeiten
Bei jeder Veröffentlichung prüft ArtiFerris die Abhängigkeiten des Pakets. npm audit funktioniert ebenfalls gegen ArtiFerris; die geprüften Namen und Versionen gehen dann an registry.npmjs.org.
Analysierte Images
Trivy, im ArtiFerris-Image enthalten, analysiert jedes gepushte Image. Ein Scan lässt sich auf der Seite des Images von Hand neu starten.
Öffentliche Repositories
Ein öffentliches Repository ist ohne Konto lesbar und erscheint im öffentlichen Katalog. Anonyme Lesezugriffe haben ein Budget pro Client und Minute, standardmäßig 1.200.

Repositories in der Dokumentation

Testen Sie ArtiFerris, dann betreiben Sie Ihre eigene Instanz.

Die öffentliche Instanz dient zum Kennenlernen. Ihre eigene Instanz verwahrt Ihre Pakete.

Den Stack mit Docker Compose starten
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