FerrisGitSeguridad

Seguridad y datos

Las medidas que protegen una instancia, descritas con precisión. Los datos nunca salen del servidor.

Lo que devuelve el servidor

Las cabeceras de seguridad, tal como las envía una instancia.

$ 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
Una instancia local, versión 0.1.2, consultada en /health. El servidor añade la política de contenido, X-Frame-Options, X-Content-Type-Options y Referrer-Policy a cada respuesta: páginas, API y Git.
La autenticación multifactor es obligatoria
Una cuenta sin ningún factor activo pasa por la configuración antes de poder hacer cualquier otra cosa. TOTP, passkeys y códigos de respaldo.
Contraseñas con hash Argon2
Una sal por contraseña. Un nombre de usuario desconocido cuesta tanto cálculo como una contraseña errónea, y recibe la misma respuesta.
Secretos cifrados con AES-256-GCM
Variables de CI, secretos de webhooks, contraseña SMTP y secretos TOTP, bajo SETTINGS_ENCRYPTION_KEY.
Tokens para Git, nunca contraseñas
Git sobre HTTPS se autentica con un token de acceso personal, guardado con hash: el servidor no puede volver a leerlo.
Un registro de auditoría
Inicios de sesión fallidos, accesos Git denegados, restablecimientos de contraseña, promociones y restablecimientos de MFA por un administrador se registran como eventos.
Sin cookies, cabeceras estrictas
Las sesiones son JWT. Cada respuesta lleva una Content-Security-Policy, X-Frame-Options: DENY, y las rutas de acceso tienen límite de peticiones por IP.
Sus datos, en su servidor
PostgreSQL y un directorio de repositorios, ambos a su cargo para las copias de seguridad. La imagen corre con un usuario sin privilegios sobre un sistema de archivos de solo lectura.

La página de seguridad de la documentación (en francés)

Evaluar FerrisGit y desplegar una instancia propia.

La instancia pública permite conocer el producto. Una instancia propia conserva el código.

Arrancar la pila con Docker Compose
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