Git · CI/CD (integración y despliegue continuo) · Repositorio · Acciones
Forgejo — Fuente única de verdad y CI/CD¶
Sustituiría a GitHub y GitLab. El repositorio central donde vive todo el código de SmallCountry. Cada cambio en el sistema nace aquí como un commit. Forgejo Actions ejecuta el CI/CD que planifica, verifica y despliega cada cambio. También es el buzón oficial de incidencias y sugerencias.
Como usuario¶
Para todos los usuarios del país¶
| Funcionalidad | Navegador | Ubuntu | Android | FireTV |
|---|---|---|---|---|
| Reportar problemas o sugerir mejoras (Forgejo Issues) | ✅ | ✅ | ✅ | ❌ |
| Seguir el historial de cambios del sistema | ✅ | ✅ | ✅ | ❌ |
| Acceder a documentación versionada | ✅ | ✅ | ✅ | ❌ |
Para el administrador y arquitecto¶
| Funcionalidad | Navegador | Ubuntu | Android | FireTV |
|---|---|---|---|---|
| Repositorios Git con todo el código de infraestructura | ✅ | ✅ | ❌ | ❌ |
| CI/CD con Forgejo Actions para despliegues automáticos | ✅ | ✅ | ❌ | ❌ |
| Registro OCI de imágenes Docker | ✅ | ✅ | ❌ | ❌ |
| Issues y milestones para seguimiento de tareas | ✅ | ✅ | ✅ | ❌ |
| Wiki para documentación colaborativa | ✅ | ✅ | ✅ | ❌ |
| Git CLI (push, pull, clone) | ❌ | ✅ | ❌ | ❌ |
Primeros pasos: Accede a https://forgejo.sc. Inicia sesión con tu cuenta de Authentik. Navega a Explorar para ver todos los repositorios públicos. Usa Issues desde el panel de inicio para reportar cualquier problema técnico o sugerir una mejora.
Integración con otros servicios de SmallCountry¶
| Servicio | Cómo se integra |
|---|---|
| Ansible | Repositorio de playbooks de infraestructura |
| OpenTofu | Módulos de infraestructura como código |
| Semaphore | Dispara playbooks desde Forgejo Actions |
| MkDocs | Documentación versionada del sistema |
| code-server | Entorno de desarrollo integrado |
| Todos los servicios | Cada cambio en el sistema pasa por Forgejo |
| ntfy | Notificaciones de estado de CI/CD |
| Matrix | Notificaciones de despliegues |
| InvenioRDM | Backend de scripts de ciencia abierta. InvenioRDM es el frontend público de publicación; Forgejo aloja el código científico |
Servicios que lo hacen posible¶
- Forgejo — Git hosting y CI/CD
- PostgreSQL — Base de datos
- Forgejo Runner — Ejecutores de Actions
Para el administrador (diseño previsto)
LXC (contenedor ligero de Proxmox): 140
IP: 10.10.10.140
Tier: 2
Impacto: 🔴 Crítico — Sin Forgejo no hay fuente de verdad ni CI/CD
ZFS (sistema de archivos con integridad de datos) persistente: rpool/datos/forgejo → /opt/forgejo/
Docker compose: Forgejo + PostgreSQL
Healthcheck: curl https://forgejo.sc
Logs: docker logs forgejo en el LXC 140
Backup manual: PBS (sistema de copias de seguridad de Proxmox) diario + mirrors de repos en Horus (servidor secundario con GPU para IA) y Thoth (Raspberry Pi árbitro del clúster y backup offsite)
Registry OCI local: Todas las imágenes Docker se cachean aquí. Los nodos nunca descargan imágenes de internet directamente.
Cuarentena de software: Nuevas versiones pasan 60/14/7 días según Tier antes de producción.
Problemas comunes:
- "CI/CD no se ejecuta" → verificar runners de Forgejo Actions
- "No puedo hacer push" → verificar permisos y clave SSH
- "Registry lleno" → limpiar imágenes antiguas con garbage collection
Para el arquitecto (diseño previsto)
graph TD
A[Usuario] -->|git push| B[Forgejo LXC 140]
B -->|webhook| C[Forgejo Actions Runner]
C -->|plan| D[OpenTofu]
D -->|snapshot| E[ZFS]
D -->|apply| F[Proxmox]
C -->|verify| G[Healthchecks]
B -->|OCI pull| H[Nodos Docker]
H -->|nunca| I((Internet))
B -->|notify| J[ntfy / Matrix]
Bridge: vmbr1
Puertos: 3000 (web), 2222 (SSH git)
Pi-hole: forgejo.sc → 10.10.10.140
Caddy: forward_auth + reverse_proxy (necesita WebSocket para Actions)
Authentik: Provider OAuth2, grupos admin y arquitecto
Pipeline de CI/CD:
1. Push a Forgejo
2. Forgejo Actions ejecuta
3. Plan de OpenTofu
4. Snapshot ZFS
5. Apply
6. Verify
7. Commit
Si hay drift, se crea commit forense y se detiene.
Orquestación:
- Playbook: deploy-forgejo.yml
- Rol Ansible: roles/forgejo/
- Tofu: modules/forgejo/
- Semaphore, Forgejo Actions
- Repo: sc-infra/forgejo