ArtiFerrisProdotto

Cosa fa ArtiFerris oggi

Tutto ciò che figura in questa pagina esiste oggi. Ciò che è previsto si trova nella roadmap.

L'interfaccia dell'applicazione esiste in cinque lingue; la documentazione è in francese.

Repository

Repository npm e Docker, ordinati per organizzazione o sotto il proprio nome.

  • Tre tipi per formato: ospitato, proxy davanti a un registry a monte, e gruppo di più repository dietro un unico indirizzo
  • Permessi read, write e admin, concessi utente per utente
  • Una quota di archiviazione e una conservazione per repository; latest non viene mai eliminato
  • Repository pubblici, leggibili senza account, o privati
  • Un repository personale sotto /@utente, accanto ai repository dell'organizzazione

Pacchetti e immagini

Una pagina per pacchetto npm e per immagine Docker.

  • npm: publish, install, unpublish e dist-tags, con npm, pnpm o yarn
  • Docker/OCI: push, pull ed eliminazione dei manifest, con docker o podman
  • Il README di un pacchetto npm, convertito e ripulito lato server, e il suo comando di installazione
  • La dimensione di ogni etichetta di un'immagine, e i download degli ultimi sette giorni
  • Ripubblicare una versione npm ritirata viene rifiutato

Analisi degli artefatti

Cosa contengono i pacchetti e le immagini che si distribuiscono.

  • Audit delle dipendenze di un pacchetto npm a ogni pubblicazione
  • Scansione Trivy di ogni immagine Docker caricata, rilanciabile a mano
  • I risultati sulla pagina del pacchetto o dell'immagine, con la loro gravità

Organizzazioni

Più team o più clienti sulla stessa istanza.

  • Un'organizzazione per sottodominio, con i suoi repository e i suoi utenti
  • Il suo marchio: logo e favicon
  • Il suo provider di identità: account locali, LDAP o Active Directory, o OIDC
  • Amministratori di organizzazione che agiscono soltanto sulla propria; un'organizzazione pubblica predefinita per un'istanza con una sola organizzazione

Catalogo pubblico

Dare accesso ai pacchetti a persone senza account.

  • Un catalogo per formato, una ricerca che tollera gli errori di battitura e suggerimenti durante la digitazione
  • I profili /@utente e /o/organizzazione, e la pagina di ogni pacchetto pubblico
  • Indicizzazione da parte dei motori di ricerca, disattivata per impostazione predefinita e regolabile per organizzazione

Documentazione

Integrata nell'applicazione, all'indirizzo /docs.

  • Aperta a tutti, con o senza accesso
  • Primi passi, utilizzo (repository, npm, Docker, account e token, catalogo pubblico), amministrazione e API pubblica
  • In francese, con ricerca

Account, amministrazione, lingue e distribuzione

Account e accesso

L'autenticazione a due fattori è obbligatoria.

  • Obbligatoria per ogni account: app di autenticazione (TOTP) o passkey, e codici di riserva
  • Account locali, LDAP o Active Directory, e OIDC
  • Inviti via e-mail: l'amministratore inserisce soltanto l'indirizzo, la persona invitata sceglie il proprio nome utente
  • Token API personali, che gli amministratori possono elencare e revocare

Amministrazione

Cosa vede un amministratore.

  • Una dashboard, metriche di utilizzo e una pagina di stato
  • Un registro di audit e un registro di sicurezza
  • Gli utenti, il ripristino della loro password o della loro autenticazione a due fattori, e l'SMTP con un'e-mail di prova
  • L'esportazione e l'importazione della configurazione

Lingue

L'interfaccia in cinque lingue.

  • Francese, inglese, spagnolo, italiano e tedesco; la lingua dell'account prevale su quella del browser
  • Le e-mail e i titoli delle pagine pubbliche seguono la lingua di chi legge

Aspetti tecnici

Cosa si distribuisce e di cosa ha bisogno.

  • Un unico binario Rust (Axum) serve l'API, i due registry e l'applicazione web Angular
  • PostgreSQL 18 per i dati; gli archivi e i blob su un volume
  • Docker Compose o un chart Helm per Kubernetes; immagine masmarino/artiferris, Trivy incluso
  • Un'architettura esagonale, suddivisa in sei crate Cargo

Non ancora disponibile

Tutto questo figura nella roadmap. Niente di questo esiste oggi.

Vedere la roadmap

  • Altri formati: Maven e Gradle, PyPI, NuGet, Cargo, Go, Helm e i repository raw
  • Uno storage a oggetti compatibile S3, per far girare più repliche: oggi, un volume e una replica
  • L'alta disponibilità e la replica geografica
  • SAML
  • La firma e la provenienza dei pacchetti (Sigstore, npm provenance)

Provare ArtiFerris, poi distribuire la propria istanza.

L'istanza pubblica permette di scoprire il prodotto. La propria istanza conserva i propri pacchetti.

Avviare lo stack con 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