- LICENSE: texto integro de la GPL-3.0 - docs/publicacion-anonima.md: politica de publicacion sin datos reales (nombres, rutas con usuario, dominios, IPs, credenciales) y checklist - tools/verificar-anonimato.sh: chequeo automatico de PII y archivos sensibles trackeados, con salida por codigo (0 limpio / 1 con hallazgos) - README: seccion 'Publicacion anonima' y licencia GPL-3.0 - .env.global: ruta base sin nombre de usuario - README ejemplo: nombres de proyecto genericos (miapp) en lugar de reales
3.6 KiB
Política de publicación anonimizada
Todo proyecto del laboratorio que se publica en un repositorio público o compartido debe estar anonimizado. Esto aplica tanto a la infraestructura como al código fuente de las aplicaciones.
Motivo: el laboratorio investiga Software Libre y comparte su producción técnica. Los repositorios no deben exponer datos del servidor de trabajo, dominios, credenciales ni la identidad de las personas que despliegan.
1. Qué se anonimiza
| Categoría | En el servidor real | En el repositorio |
|---|---|---|
| Nombre de persona | nombre.apellido |
$USER, usuario-local |
| Ruta de home | /home/<usuario>/srv |
~/srv |
<nombre>@<universidad>.edu.ar |
usuario@localhost |
|
| Nombre de proyecto | <nombre-del-cliente> |
miapp, ejemplo, demo |
| Dominio real | <dominio-real>.com.ar |
example.com, midominio.com, miapp.local |
| IP de servidor | <ip-publica-del-servidor> |
203.0.113.45 (RFC 5737, reservada para docs) |
| Credenciales | <clave-en-claro> |
${DB_PASSWORD} |
| Ruta interna | /var/lib/<aplicacion>/produccion |
/var/lib/miapp |
2. Checklist antes de publicar
# 1. Verificar datos sensibles en el índice
./tools/verificar-anonimato.sh
# 2. Confirmar que lo excluido NO está trackeado
git status --ignored --short | grep -E '\.env|\.key|\.crt|acme\.json'
# 3. Revisar el historial de commits
git log --format='%an <%ae>' | sort -u
# 4. Confirmar el tamaño del repo (sin datos ni dependencias)
git count-objects -vH
du -sh .git
- No hay
.env,*.key,*.crt,acme.json,.sql,.dump,.zip - No hay
vendor/ninode_modules/(se regeneran concomposer/npm) - Nombres de proyecto genéricos en compose,
.env, scripts y documentación - Dominios de ejemplo, nunca los reales
- Sin direcciones IP públicas ni internas reales
- Sin rutas con nombre de usuario
- Sin datos de negocio en migraciones, seeders o fixtures
git logrevisadoLICENSE(GPL-3.0) presente.gitignoreactualizado con los patrones del proyecto
3. Herramientas de apoyo
# Buscar patrones sospechosos en el contenido versionado
git grep -nEi "password|secret|api[_-]?key|token|[0-9]{1,3}(\.[0-9]{1,3}){3}"
# Historial de autores
git shortlog -sne
# Buscar en TODO el historial, no solo en el HEAD
git log -p --all | grep -Ei "password|secret|api[_-]?key"
Si un secreto se subió por error, no alcanza con borrarlo: queda en el historial. Hay que rotar el secreto y reescribir el historial (
git filter-repo) o reiniciar el repositorio.
4. Patrón recomendado para proyectos
Separar siempre en dos repositories:
~/srv/projects/<proyecto>/
├── app/ → código fuente, en su propio repo público y anonimizado
└── (resto) → .env, data/, backups/ → NUNCA versionados
La infraestructura (proxy, Traefik, generador de proyectos) se publica una
sola vez desde este repositorio; los proyectos solo aportan su app/.
Al crear el proyecto, se usan nombres de ejemplo desde el inicio para que el anonimizado no sea un paso posterior olvidado:
./init_project.sh miapp midominio.com 80
5. Licencia
Todo el material se publica bajo GPL-3.0. Si un proyecto incluye código de terceros, se conserva su licencia original y se acredita en el README y en los encabezados de los archivos afectados.
6. Denuncias
Si se detecta un dato sensible publicado, reportarlo a quien mantiene el repositorio para la rotación inmediata del secreto y la limpieza del historial.