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.
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
Upstream
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.
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
readauf 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
latestwird 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 auditfunktioniert ebenfalls gegen ArtiFerris; die geprüften Namen und Versionen gehen dann anregistry.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.
Testen Sie ArtiFerris, dann betreiben Sie Ihre eigene Instanz.
Die öffentliche Instanz dient zum Kennenlernen. Ihre eigene Instanz verwahrt Ihre Pakete.
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