Watch
1
0
Fork
You've already forked mirrors
0
forked from MxOS/mirrors

feat(mirrors): initial architecture, specifications, automation tools, and canonical guide

Establish community mirror network on IPFS for Fedora and CentOS Stream 10:
- Modular documentation and specifications under docs/
- Master canonical guide under README.rst with client and node operator workflows
- Ingestion, upstream sync, and Cloudflare DNSLink automation scripts in bin/
- Reverse proxy configs (Nginx/Caddy) and systemd timer units in etc/ and systemd/

Signed-off-by: Rénich Bon Ćirić <renich@evalinux.com>
Co-authored-by: Gemini AI <renich+gemini@evalinux.com>
This commit is contained in:
Rénich Bon Ćirić 2026-10-08 22:17:27 -06:00
commit 0397fc8cc4
Signed by: renich
GPG key ID: AB2A9F49384FE324
32 changed files with 1700 additions and 0 deletions

38
docs/project/roadmap.rst Normal file
View file

@ -0,0 +1,38 @@
====================================
Hoja de Ruta del Proyecto de Espejos
====================================
Visión General
==============
Esta hoja de ruta establece la secuencia cronológica de ejecución para implementar, validar, publicar y federar la red comunitaria de espejos sobre IPFS de la Fundación MxOS.
El plan se divide en tres fases secuenciales regidas por dependencias estrictas y trazabilidad directa hacia las especificaciones funcionales y técnicas del proyecto.
Fases de Ejecución
==================
.. toctree::
:maxdepth: 1
roadmaps/fase-1-poc
roadmaps/fase-2-tablero
roadmaps/fase-3-federacion-upstream
Matriz de Fases y Entregables
=============================
.. table:: Resumen de fases del proyecto
:widths: auto
+-------+------------------------------------+--------------------------+-----------------------+
| Fase | Denominación | Entregable Principal | Dependencia Crítica |
+=======+====================================+==========================+=======================+
| 1 | Prueba de Concepto y Publicación | Nodo servidor operativo, | Dominio DNSLink y |
| | Canónica | DNSLink y sync inicial | paquete Copr de Kubo |
+-------+------------------------------------+--------------------------+-----------------------+
| 2 | Tablero de Métricas del Enjambre | Portal público web con | Nodos proveedores |
| | | mapa y conteo de nodos | activos en la DHT |
+-------+------------------------------------+--------------------------+-----------------------+
| 3 | Federacion e Integración Upstream | Registro en MirrorManager| Estabilidad de Fase 1 |
| | | y RFC en listas upstream | y Fase 2 demostrada |
+-------+------------------------------------+--------------------------+-----------------------+

View file

@ -0,0 +1,45 @@
=================================================
Fase 1: Prueba de Concepto y Publicación Canónica
=================================================
Objetivo
========
Validar de punta a punta la ingesta, generación de DAGs UnixFS, actualización de registros DNSLink y resolución de subrutas para Fedora y CentOS Stream 10 bajo ``mirrors.mx-os.mx``.
Trazabilidad: [FUNC-001], [FUNC-002], [FUNC-003], [TECH-001], [TECH-002], [TECH-003]
Hitos de la Fase
================
Hito 1.1: Aprovisionamiento del Nodo Cabecera de MxOS
-----------------------------------------------------
Poner en marcha el entorno de almacenamiento y el demonio Kubo en la infraestructura de servidores de la Fundación MxOS.
* **Tarea 1.1.1 [TECH-001]:** Configurar el directorio de staging en el servidor y habilitar la extensión filestore en Kubo.
* *Bloqueado por:* Ninguno.
* *Desbloquea:* Tarea 1.1.2.
* **Tarea 1.1.2 [TECH-001]:** Ejecutar la sincronización rsync inicial de imágenes ISO de Fedora y el repositorio BaseOS de CentOS Stream 10.
* *Bloqueado por:* Tarea 1.1.1.
* *Desbloquea:* Tarea 1.1.3.
* **Tarea 1.1.3 [TECH-001]:** Realizar la ingesta por referencia con ``ipfs add -r --nocopy`` y verificar la integridad de los CIDs generados.
* *Bloqueado por:* Tarea 1.1.2.
* *Desbloquea:* Tarea 1.2.1.
Hito 1.2: Configuración de DNSLink y Validación de Subrutas
-----------------------------------------------------------
Establecer la delegación DNS inmutable y verificar la granularidad del enjambre.
* **Tarea 1.2.1 [TECH-003]:** Crear el registro TXT ``_dnslink.mirrors.mx-os.mx`` con el CID raíz de la ingesta.
* *Bloqueado por:* Tarea 1.1.3.
* *Desbloquea:* Tarea 1.2.2.
* **Tarea 1.2.2 [TECH-002]:** Validar la resolución y pineo recursivo exclusivo de subrutas (ejemplo: ``/ipns/mirrors.mx-os.mx/centos-stream/10-stream/BaseOS``) desde un nodo cliente externo.
* *Bloqueado por:* Tarea 1.2.1.
* *Desbloquea:* Hito 1.3.
Hito 1.3: Redacción del Post Inicial en el Sitio de MxOS
--------------------------------------------------------
Publicar el artículo de presentación en ``mx-os.mx`` y convocar a los primeros operadores guardianes.
* **Tarea 1.3.1 [FUNC-003]:** Redactar y publicar el artículo de lanzamiento en la web de MxOS enlazando al manual de operadores.
* *Bloqueado por:* Tarea 1.2.2.
* *Desbloquea:* Fase 2.

View file

@ -0,0 +1,42 @@
========================================
Fase 2: Tablero de Métricas del Enjambre
========================================
Objetivo
========
Desarrollar, empaquetar y desplegar el portal web público de estadísticas en tiempo real y mapa de nodos distribuido, publicado como software libre en el repositorio de Git de MxOS.
Trazabilidad: [FUNC-004], [TECH-004]
Hitos de la Fase
================
Hito 2.1: Motor de Recolección Descentralizada
----------------------------------------------
Crear el servicio en segundo plano que sondea la DHT para identificar los nodos activos.
* **Tarea 2.1.1 [TECH-004]:** Implementar el colector pasivo que consulta periódicamente ``ipfs dht findprovs`` para los CIDs activos del espejo.
* *Bloqueado por:* Fase 1 (Tarea 1.2.2).
* *Desbloquea:* Tarea 2.1.2.
* **Tarea 2.1.2 [TECH-004]:** Integrar la base de datos local MaxMind GeoLite2 para resolver la geolocalización aproximada (país y estado) sin almacenar direcciones IP completas.
* *Bloqueado por:* Tarea 2.1.1.
* *Desbloquea:* Hito 2.2.
Hito 2.2: Interfaz Web Pública Reactiva
---------------------------------------
Construir el portal web ligero de visualización para la comunidad.
* **Tarea 2.2.1 [FUNC-004]:** Diseñar la interfaz con mapa interactivo y contador de nodos activos.
* *Bloqueado por:* Tarea 2.1.2.
* *Desbloquea:* Tarea 2.2.2.
* **Tarea 2.2.2 [FUNC-004]:** Integrar el tablero en la infraestructura web de MxOS bajo ``mirrors.mx-os.mx``.
* *Bloqueado por:* Tarea 2.2.1.
* *Desbloquea:* Hito 2.3.
Hito 2.3: Publicación del Repositorio de Código Abierto
-------------------------------------------------------
Liberar el código del tablero para auditoría comunitaria.
* **Tarea 2.3.1 [FUNC-004]:** Documentar las instrucciones de despliegue y publicar el repositorio bajo licencia libre en el Git de la Fundación MxOS.
* *Bloqueado por:* Tarea 2.2.2.
* *Desbloquea:* Fase 3.

View file

@ -0,0 +1,37 @@
=========================================
Fase 3: Federación e Integración Upstream
=========================================
Objetivo
========
Consolidar el puente HTTP para registrar a MxOS formalmente ante MirrorManager de Fedora, y presentar la propuesta técnica oficial ante las listas de desarrollo de Fedora y CentOS para fomentar la adopción nativa de IPFS.
Trazabilidad: [FUNC-005], [TECH-005]
Hitos de la Fase
================
Hito 3.1: Despliegue del Puente Inverso HTTP y Validación MirrorManager
-----------------------------------------------------------------------
Habilitar la fachada web pública para clientes DNF tradicionales.
* **Tarea 3.1.1 [TECH-005]:** Configurar el proxy inverso (Caddy/Nginx) en ``mirrors.mx-os.mx`` apuntando al gateway local de Kubo.
* *Bloqueado por:* Fase 1 (Tarea 1.2.2).
* *Desbloquea:* Tarea 3.1.2.
* **Tarea 3.1.2 [TECH-005]:** Implementar el protocolo de sondeo y verificación de sincronización requerido por MirrorManager (archivo ``report_mirror``).
* *Bloqueado por:* Tarea 3.1.1.
* *Desbloquea:* Tarea 3.1.3.
* **Tarea 3.1.3 [FUNC-005]:** Dar de alta el espejo de MxOS en la base de datos de MirrorManager de Fedora como espejo oficial para México.
* *Bloqueado por:* Tarea 3.1.2.
* *Desbloquea:* Hito 3.2.
Hito 3.2: Propuesta Técnica Upstream (RFC)
------------------------------------------
Presentar la arquitectura a los equipos de infraestructura de Fedora y CentOS.
* **Tarea 3.2.1 [FUNC-005]:** Redactar el documento de propuesta (RFC) detallando los beneficios de ahorro de transferencia para upstream, mitigación de caídas y modelo de distribución comunitaria.
* *Bloqueado por:* Tarea 3.1.3 y Fase 2 (Tarea 2.2.2).
* *Desbloquea:* Tarea 3.2.2.
* **Tarea 3.2.2 [FUNC-005]:** Publicar la propuesta en los foros de discusión de Fedora (categoría Infrastructure) y en la lista de correo ``centos-devel`` para abrir el diálogo sobre soporte nativo en DNF.
* *Bloqueado por:* Tarea 3.2.1.
* *Desbloquea:* Proyecto completado.