ArtiFerrisProduit

Ce qu'ArtiFerris fait aujourd'hui

Tout ce qui figure sur cette page existe aujourd'hui. Ce qui est prévu se trouve dans la feuille de route.

L'interface de l'application existe en cinq langues ; sa documentation est en français.

Dépôts

Des dépôts npm et Docker, rangés par organisation ou sous votre propre nom.

  • Trois types par format : hébergé, proxy devant un registre amont, et groupe de plusieurs dépôts derrière une seule adresse
  • Droits read, write et admin, accordés utilisateur par utilisateur
  • Un quota de stockage et une rétention par dépôt ; latest n'est jamais purgé
  • Des dépôts publics, lisibles sans compte, ou privés
  • Un dépôt personnel sous /@utilisateur, à côté des dépôts de l'organisation

Paquets et images

Une page par paquet npm et par image Docker.

  • npm : publish, install, unpublish et dist-tags, avec npm, pnpm ou yarn
  • Docker/OCI : push, pull et suppression de manifest, avec docker ou podman
  • Le README d'un paquet npm, converti et nettoyé côté serveur, et sa commande d'installation
  • La taille de chaque étiquette d'une image, et les téléchargements des sept derniers jours
  • Republier une version npm dépubliée est refusé

Analyse des artefacts

Ce que contiennent les paquets et les images que vous distribuez.

  • Audit des dépendances d'un paquet npm à chaque publication
  • Scan Trivy de chaque image Docker poussée, relançable à la main
  • Les résultats sur la page du paquet ou de l'image, avec leur sévérité

Organisations

Plusieurs équipes ou plusieurs clients sur une même instance.

  • Une organisation par sous-domaine, avec ses dépôts et ses utilisateurs
  • Sa marque : logo et favicon
  • Son fournisseur d'identité : comptes locaux, LDAP ou Active Directory, ou OIDC
  • Des administrateurs d'organisation qui n'agissent que sur la leur ; une organisation publique par défaut pour une instance mono-organisation

Catalogue public

Donnez accès à des paquets à des personnes qui n'ont pas de compte.

  • Un catalogue par format, une recherche qui tolère les fautes de frappe et des suggestions pendant la frappe
  • Les profils /@utilisateur et /o/organisation, et la page de chaque paquet public
  • Référencement par les moteurs de recherche, désactivé par défaut et réglable par organisation

Documentation

Intégrée à l'application, à l'adresse /docs.

  • Ouverte à tous, connectés ou non
  • Démarrer, utilisation (dépôts, npm, Docker, compte et jetons, catalogue public), administration et API publique
  • En français, avec une recherche

Comptes, administration, langues et déploiement

Comptes et accès

La double authentification est obligatoire.

  • Obligatoire pour tous les comptes : application d'authentification (TOTP) ou clé d'accès, et codes de secours
  • Comptes locaux, LDAP ou Active Directory, et OIDC
  • Invitations par e-mail : l'administrateur ne saisit que l'adresse, l'invité choisit son nom d'utilisateur
  • Jetons API personnels, que les administrateurs peuvent lister et révoquer

Administration

Ce que voit un administrateur.

  • Un tableau de bord, des métriques d'usage et une page de santé
  • Un journal d'audit et un journal de sécurité
  • Les utilisateurs, la réinitialisation de leur mot de passe ou de leur double authentification, et le SMTP avec un e-mail de test
  • L'export et l'import de la configuration

Langues

L'interface en cinq langues.

  • Français, anglais, espagnol, italien et allemand ; la langue du compte prime sur celle du navigateur
  • Les e-mails et les titres des pages publiques suivent la langue du lecteur

Aspects techniques

Ce que vous déployez et ce dont il a besoin.

  • Un seul binaire Rust (Axum) sert l'API, les deux registres et l'application web Angular
  • PostgreSQL 18 pour les données ; les archives et les blobs sur un volume
  • Docker Compose ou un chart Helm pour Kubernetes ; image masmarino/artiferris, Trivy inclus
  • Une architecture hexagonale, répartie sur six crates Cargo

Ce qui n'est pas encore disponible

Tout cela figure dans la feuille de route. Rien de cela n'existe aujourd'hui.

Voir la feuille de route

  • D'autres formats : Maven et Gradle, PyPI, NuGet, Cargo, Go, Helm et les dépôts bruts
  • Un stockage objet compatible S3, pour faire tourner plusieurs réplicas : aujourd'hui, un volume et un réplica
  • La haute disponibilité et la réplication géographique
  • SAML
  • La signature et la provenance des paquets (Sigstore, npm provenance)

Évaluez ArtiFerris, puis déployez votre propre instance.

L'instance publique permet de découvrir le produit. Votre instance conserve vos paquets.

Démarrer la pile avec 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