ArtiFerrisSécurité
Sécurité et vos données
Les mesures qui protègent une instance, décrites précisément. Les données restent sur votre serveur ; seuls les noms et versions des paquets audités partent vers registry.npmjs.org.
Ce que renvoie le serveur
Les en-têtes de sécurité, tels qu'une instance les envoie.
$ curl -s -D - -o /dev/null https://app.artiferris.pro/healthz
HTTP/2 200
content-security-policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: https:; font-src 'self' data:; connect-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'
content-type: text/plain; charset=utf-8
cross-origin-opener-policy: same-origin
cross-origin-resource-policy: same-origin
date: Tue, 06 Oct 2026 14:31:01 GMT
permissions-policy: accelerometer=(), autoplay=(), camera=(), display-capture=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), usb=(), xr-spatial-tracking=()
referrer-policy: same-origin
strict-transport-security: max-age=31536000; includeSubDomains; preload
vary: origin
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
content-length: 2- La double authentification est obligatoire
- Application d'authentification ou clé d'accès, avec dix codes de secours. Un jeton distinct et de courte durée représente « mot de passe vérifié, second facteur attendu » ; il ne sert pas de session.
- Mots de passe hachés avec Argon2
- Pour les comptes locaux. Les comptes LDAP et OIDC s'authentifient auprès de leur fournisseur, et les connexions échouées sont limitées.
- Des droits vérifiés sur chaque route
- Les droits d'un dépôt sont contrôlés par le serveur, pas seulement masqués dans l'interface. Les corps de requête ne sont lus qu'après ces contrôles.
- Secrets chiffrés en AES-256-GCM
- Mots de passe SMTP, LDAP et OIDC, identifiants des proxys et graines TOTP, sous
SECRETS_ENCRYPTION_KEY, qui se change sans perte par une rotation. - Des jetons, stockés hachés
- Les outils en ligne de commande s'authentifient avec un jeton API, que le serveur ne peut pas relire. Les jetons que Docker obtient après
docker logindurent 2 minutes. - Une mémoire bornée
- Les blobs Docker vont sur disque au fil de l'eau. Les documents gardés en mémoire puisent dans un budget de 1 Gio, et un client n'a que quatre corps en cours.
- Un budget pour le trafic anonyme
- Pages publiques, API publique et lectures npm et Docker ont un budget par client et par minute, partagé entre réplicas. La base ne reçoit que des empreintes, jamais une adresse.
- Des journaux d'audit et de sécurité
- Conservés 365 jours par défaut. Les connexions, les accès refusés et les actions d'administration y sont enregistrés.
- Des connexions sortantes contrôlées
- LDAP, SMTP, OIDC et les proxys ne joignent pas d'adresse privée, sauf les plages que vous autorisez. Un proxy n'envoie ses identifiants qu'au registre amont configuré, en
https. - Vos données, sur votre serveur
- PostgreSQL et un volume, tous deux à vous de sauvegarder. Avec le chart Helm, le pod tourne sans privilège, sur un système de fichiers en lecture seule.
Évaluez ArtiFerris, puis déployez votre propre instance.
L'instance publique permet de découvrir le produit. Votre instance conserve vos paquets.
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