ArtiFerrisSicherheit

Sicherheit und Ihre Daten

Die Maßnahmen, die eine Instanz schützen, genau beschrieben. Die Daten bleiben auf Ihrem Server; nur Namen und Versionen geprüfter Pakete gehen an registry.npmjs.org.

Was der Server zurückschickt

Die Sicherheits-Header, wie eine Instanz sie sendet.

$ 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
Die Produktivinstanz, Version 0.6.1, am 6. Oktober 2026 nach /healthz gefragt. Der Server setzt die Content-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy und die Cross-Origin-Richtlinien; Strict-Transport-Security und X-XSS-Protection stammen hier vom Reverse Proxy.
Zwei-Faktor-Authentifizierung ist verpflichtend
Authenticator-App oder Passkey, mit zehn Backup-Codes. Ein eigenes, kurzlebiges Token steht für „Passwort geprüft, zweiter Faktor erwartet“; es dient nicht als Sitzung.
Mit Argon2 gehashte Passwörter
Für lokale Konten. LDAP- und OIDC-Konten authentifizieren sich bei ihrem Anbieter, und fehlgeschlagene Anmeldungen werden begrenzt.
Auf jeder Route geprüfte Rechte
Die Rechte eines Repositorys setzt der Server durch, sie sind nicht nur in der Oberfläche ausgeblendet. Anfragekörper werden erst nach diesen Prüfungen gelesen.
Mit AES-256-GCM verschlüsselte Geheimnisse
SMTP-, LDAP- und OIDC-Passwörter, Zugangsdaten der Proxys und TOTP-Seeds, unter SECRETS_ENCRYPTION_KEY, der sich per Rotation ohne Verlust wechseln lässt.
Tokens, gehasht gespeichert
Kommandozeilenwerkzeuge authentifizieren sich mit einem API-Token, das der Server nicht zurücklesen kann. Die Tokens, die Docker nach docker login erhält, gelten 2 Minuten.
Begrenzter Arbeitsspeicher
Docker-Blobs gehen beim Eintreffen direkt auf die Festplatte. Im Arbeitsspeicher gehaltene Dokumente schöpfen aus einem Budget von 1 GiB, und ein Client hat höchstens vier Anfragekörper gleichzeitig in Arbeit.
Ein Budget für anonymen Verkehr
Öffentliche Seiten, die öffentliche API und npm- und Docker-Lesezugriffe haben ein Budget pro Client und Minute, zwischen Replikas geteilt. Die Datenbank erhält nur Fingerabdrücke, nie eine Adresse.
Audit- und Sicherheitsprotokolle
Standardmäßig 365 Tage aufbewahrt. Anmeldungen, verweigerte Zugriffe und administrative Aktionen werden dort festgehalten.
Kontrollierte ausgehende Verbindungen
LDAP, SMTP, OIDC und Proxys erreichen keine private Adresse, außer den von Ihnen erlaubten Bereichen. Ein Proxy sendet seine Zugangsdaten nur an die konfigurierte Upstream-Registry, über https.
Ihre Daten, auf Ihrem Server
PostgreSQL und ein Volume, beide von Ihnen zu sichern. Mit dem Helm-Chart läuft der Pod ohne Privilegien, auf einem schreibgeschützten Dateisystem.

Der Abschnitt Sicherheit im README

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