Ihre npm-Pakete und Docker-Images, auf einer Registry, die Sie selbst hosten.

Gehostete Repositories, Proxys und Gruppen, Kontingente, Aufbewahrung, Abhängigkeitsprüfung und Image-Scans: ein Rust-Binary und ein PostgreSQL. Im Produktivbetrieb belegen Server und Datenbank zusammen rund fünfzig MiB Arbeitsspeicher.

ArtiFerris öffnen
$docker compose up -d --build

Kein Konto bei Dritten, keine Telemetrie. Zur Architektur.

$ kubectl top pod -n artiferris --containers
POD                                    NAME             CPU(cores)   MEMORY(bytes)
artiferris-7f497fb86-pcft9             artiferris-api   2m           5Mi
artiferris-postgres-7f7784f89f-rcd4s   postgres         9m           48Mi
Die Produktivinstanz, Version 0.6.1, auf einem Kubernetes-Cluster (amd64), gemessen am 6. Oktober 2026, wenige Minuten nach dem Neustart des Servers.

Einsatzszenarien

Vier typische Situationen und die Antwort von ArtiFerris darauf.

Ihre Builds laden ihre Abhängigkeiten jedes Mal aus einer öffentlichen Registry.
Ein Proxy-Repository steht vor registry.npmjs.org oder Docker Hub: Die erste Anfrage holt das Paket aus dem Upstream, die folgenden liefert ArtiFerris selbst. Eine Gruppe vereint diesen Proxy und Ihre Pakete hinter einer einzigen Adresse.
Sie hosten die Pakete mehrerer Teams oder mehrerer Kunden auf derselben Instanz.
Jede Organisation hat ihre Subdomain, ihre Repositories, ihre Benutzer, ihr Branding und ihren Identitätsanbieter. Ihre Administratoren handeln nur in ihr; ein Super-Administrator sieht alle.
Sie möchten wissen, was die Images und Pakete enthalten, die Sie verteilen.
Trivy analysiert jedes gepushte Image, und der Scan lässt sich von Hand neu starten. Die Abhängigkeiten eines npm-Pakets werden bei jeder Veröffentlichung geprüft. Die Ergebnisse erscheinen auf der Seite des Images oder Pakets.
Die Zwei-Faktor-Authentifizierung soll nicht von der Sorgfalt jedes Einzelnen abhängen.
Sie ist für jedes Konto verpflichtend, ob lokal oder aus LDAP oder OIDC. Kommandozeilenwerkzeuge authentifizieren sich mit einem API-Token, das die Administration auflisten und widerrufen kann.

Produktüberblick

Ausschnitte der echten Oberfläche, keine Entwürfe. Die Oberfläche gibt es auf Französisch, Englisch, Spanisch, Italienisch und Deutsch.

Die vollständige Liste der Funktionen

Architektur

Ein Prozess, sechs Crates, eine hexagonale Architektur: Die Domäne weiß nichts von der Datenbank, und jedes Registry-Protokoll hat sein eigenes Crate.

Der Quellcode auf GitHub

Architektur einer ArtiFerris-InstanzIsometrische Zeichnung. Ein npm- oder Docker-Client und ein Browser sprechen mit einem einzigen Rust-Binary, artiferris-api, aus den Crates api, npm, docker, application, domain und infrastructure. Das Binary legt seine Daten in PostgreSQL und seine Archive und Blobs auf der Festplatte ab, fragt LDAP- und OIDC-Verzeichnisse und den SMTP-Server ab, und seine Proxys beziehen Pakete aus Upstream-Registries. Eine orange Linie folgt einer Installation bis zur Upstream-Registry. Sieben nummerierte Kreise führen zu den Kacheln der Seite.api npm docker application domain infrastructure artiferris-api: ein einziges Binary npm- oder Docker-Client HTTPS, API-Token npm, pnpm, yarn, docker, podman Browser Konsole mit Konto oder öffentlicher Katalog api, npm, docker REST-API, Protokolle der Registries, Weboberfläche domain Entitäten und Ports, ohne E/A application Anwendungsfälle infrastructure Adapter: PostgreSQL, Dateien, SMTP, LDAP, OIDC, Trivy, Proxys PostgreSQL Konten, Repositories, Rechte, Audit; Migrationen beim Start Speicher npm-Archive und Docker-Blobs, auf Festplatte Upstream-Registries registry.npmjs.org, Docker Hub…: ein Proxy bezieht und behält Verzeichnisse und E-Mail LDAP, OIDC, SMTP npm install Gruppe, dann Proxy Upstream

Abb. 1 Eine Instanz. Die orange Linie folgt einer Installation, vom Client bis zur Upstream-Registry, die ein Proxy abfragt.

  • Anfrage oder Speicherung
  • eine Installation, bis zum Upstream
  • Verzeichnis bei der Anmeldung abgefragt
  • eine nummerierte Kachel dieser Seite
  1. artiferris-domainEntitäten, Wertobjekte und die Ports, von denen der Rest abhängt. Keine Ein- oder Ausgabe.
  2. artiferris-applicationDie Anwendungsfälle. Hängt nur von der Domäne ab.
  3. artiferris-infrastructureAdapter: PostgreSQL (SQLx), Dateien, SMTP, LDAP, OIDC, Trivy, Argon2, JWT.
  4. artiferris-apiDer Axum-Server: Routen, Verdrahtung und das Angular-Frontend. Er ist das Binary.
  5. artiferris-npmDas Protokoll der npm-Registry.
  6. artiferris-dockerDas Protokoll der Docker/OCI-Registry.

Was heute fehlt

Vor dem Einsatz zu beachten.

Nur zwei Formate
npm und Docker/OCI. Maven, PyPI, NuGet, Cargo, Go, Helm und Raw-Repositories stehen auf der Roadmap.
Ein einziges Replikat
Der Speicher ist ein lokales Dateisystem: ein Volume, ein Replikat. S3-kompatibler Speicher ist geplant.
Kein SAML
Konten stammen aus ArtiFerris, aus LDAP oder Active Directory oder von einem OIDC-Anbieter.
Keine Signatur von Paketen
Signatur und Herkunftsnachweis (Sigstore, npm provenance) stehen auf der Roadmap.

Ausblick

Was geplant ist, noch ohne Version. Ein Punkt wird erst abgehakt, wenn er ausgeliefert ist.

  1. FormateMaven, PyPI, NuGet, Cargo, Go, Helm und Raw-RepositoriesGeplant
  2. SpeicherS3-kompatibler Objektspeicher, für mehrere ReplikasGeplant
  3. BetriebHochverfügbarkeit und geografische ReplikationGeplant
  4. HerkunftSignatur und Herkunftsnachweis von PaketenGeplant
  5. IdentitätSAMLGeplant

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