FerrisGitSicherheit

Sicherheit und Ihre Daten

Die Maßnahmen, die eine Instanz schützen, genau beschrieben. Die Daten verlassen den Server nie.

Was der Server zurücksendet

Die Sicherheits-Header, wie eine Instanz sie sendet.

$ curl -s -D - -o /dev/null http://localhost:8080/health
HTTP/1.1 200 OK
content-type: text/plain; charset=utf-8
content-security-policy: default-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; object-src 'none'; base-uri 'self'; frame-ancestors 'none'
x-frame-options: DENY
x-content-type-options: nosniff
referrer-policy: no-referrer
x-robots-tag: noindex, nofollow
content-length: 2
date: Sun, 04 Oct 2026 11:41:43 GMT
Eine lokale Instanz, Version 0.1.2, abgefragt unter /health. Der Server fügt jeder Antwort die Content-Policy, X-Frame-Options, X-Content-Type-Options und Referrer-Policy hinzu: Seiten, API und Git.
Mehr-Faktor-Authentifizierung ist Pflicht
Ein Konto ohne eingerichteten Faktor muss die Einrichtung durchlaufen, bevor es irgendetwas anderes tun kann. TOTP, Passkeys und Wiederherstellungscodes.
Passwörter mit Argon2 gehasht
Ein Salt pro Passwort. Ein unbekannter Benutzername kostet so viel Rechenzeit wie ein falsches Passwort und bekommt dieselbe Antwort.
Secrets mit AES-256-GCM verschlüsselt
CI-Variablen, Webhook-Secrets, das SMTP-Passwort und TOTP-Secrets, unter SETTINGS_ENCRYPTION_KEY.
Tokens für Git, nie Passwörter
Git über HTTPS authentifiziert sich mit einem persönlichen Zugriffstoken, gehasht gespeichert: der Server kann es nicht zurücklesen.
Ein Audit-Log
Fehlgeschlagene Anmeldungen, verweigerte Git-Zugriffe, Passwort-Resets, Beförderungen und MFA-Resets durch einen Administrator werden als Ereignisse aufgezeichnet.
Keine Cookies, strikte Header
Sitzungen sind JWTs. Jede Antwort trägt eine Content-Security-Policy, X-Frame-Options: DENY, und die Anmelderouten sind pro IP ratenbegrenzt.
Ihre Daten, auf Ihrem Server
PostgreSQL und ein Verzeichnis mit Repositories, beides von Ihnen zu sichern. Das Image läuft als unprivilegierter Benutzer auf einem schreibgeschützten Dateisystem.

Die Sicherheitsseite der Dokumentation (auf Französisch)

FerrisGit evaluieren und die eigene Instanz betreiben.

Die öffentliche Instanz zeigt das Produkt. Die eigene Instanz behält den Code.

Den Stack mit Docker Compose starten
git clone https://github.com/Masmarino/FerrisGit.git
cd FerrisGit
cp .env.example .env
# set POSTGRES_PASSWORD, JWT_SECRET, SETTINGS_ENCRYPTION_KEY and the admin password in .env
docker compose up -d --build