Red de Espejos Comunitarios de Software Libre sobre IPFS
Infraestructura de distribución soberana, descentralizada y de alta
resiliencia para distribuciones Linux de la familia RPM, operada por la
Fundación MxOS bajo el dominio canónico
mirrors.mx-os.mx.
Propósito y Misión
Históricamente, los usuarios e instituciones en México y Latinoamérica han dependido de espejos universitarios aislados o enlaces transfronterizos hacia redes de entrega de contenido comerciales en Estados Unidos. Esta dependencia genera latencia, costos recurrentes de transferencia y vulnerabilidad ante caídas de enlaces internacionales.
La red de espejos de MxOS replantea la entrega de paquetes utilizando el Sistema de Archivos Interplanetario IPFS. Al emplear direccionamiento por contenido y distribución entre pares P2P, el espejo se convierte en una red colaborativa donde cualquier integrante de la comunidad o institución académica puede donar almacenamiento y ancho de banda local, deduplicando transferencias y acelerando descargas dentro de redes locales o nacionales.
Aviso de Fase Experimental
Este proyecto se encuentra actualmente en fase de experimentación activa y prueba de concepto. Operamos bajo una arquitectura de guerrilla diseñada para maximizar la soberanía sin requerir grandes presupuestos de infraestructura:
- La ingesta inicial y el almacenamiento de paquetes residen en estaciones de trabajo y nodos comunitarios locales.
- El gateway público oficial reside en HOBOPS.IO bajo el dominio
ipfs.mx-os.mx, accesible también mediantegateway.ipfs.mx-os.mx; opera estrictamente como un punto de acceso efímero y proxy inverso sin almacenamiento permanente ni pineo. - Convocamos a la comunidad técnica a probar las descargas, reportar anomalías y sumarse como nodos guardianes pioneros para evaluar el rendimiento real de Bitswap en conexiones residenciales y académicas.
Servicios y Puntos de Acceso Canónicos
Fundación MxOS opera servicios web públicos con responsabilidades y alcances claramente delimitados:
Catálogo de Software Libre: mirrors.mx-os.mx
El dominio mirrors.mx-os.mx es el portal web
canónico y catálogo curado de distribución de paquetes y medios
de instalación de software libre de Fundación MxOS.
- Propósito: Alojar el árbol oficial de paquetes, proveer instrucciones para configurar gestores de paquetes DNF y DNF5, ofrecer guías de enclavillado granular para operadores voluntarios y enlazar el observatorio en tiempo real Vigía.
- Contenido alojado en el espejo:
- Repositorios completos de Fedora Linux para
versiones 43, 44 y 45 en arquitectura
x86_64, abarcando imágenes ISO netinst, paquetería Everything y actualizaciones continuas. - Repositorios completos de CentOS Stream 10, incluyendo BaseOS, AppStream, CRB, HighAvailability, NFV, RT y repositorios SIG como extras-common, virtualización, almacenamiento, módulos de kernel e hyperscale.
- Herramientas de automatización para operadores del nodo en
nodo/. - Tablero interactivo de observabilidad y cartografía territorial P2P
en
vigia/. - Especificaciones y manuales técnicos en
docs/.
- Repositorios completos de Fedora Linux para
versiones 43, 44 y 45 en arquitectura
- Acceso multimodal:
- Vía Web estándar: Accesible en cualquier navegador mediante https://mirrors.mx-os.mx.
- Vía IPFS nativo: Accesible mediante el protocolo
descentralizado en
ipfs://mirrors.mx-os.mxo la ruta UnixFS/ipns/mirrors.mx-os.mx.
Pasarela Pública Universal: ipfs.mx-os.mx y gateway.mx-os.mx
El dominio ipfs.mx-os.mx, junto con su alias
gateway.mx-os.mx, constituye la pasarela pública y
abierta de IPFS de Fundación MxOS, alojada sobre la
infraestructura soberana de HOBOPS.IO.
- Propósito: Ofrecer a cualquier usuario, estudiante, desarrollador, colectivo o proyecto un punto de acceso HTTP/HTTPS neutral, abierto y sin costo para resolver y descargar cualquier contenido publicado en la red global IPFS, pertenezca o no a Fundación MxOS.
- Resolución universal de contenido:
- Por identificador de contenido (CID):
https://ipfs.mx-os.mx/ipfs/<CID>permite descargar cualquier bloque, archivo o directorio UnixFS existente en el enjambre global. - Por sistema de nombres interplanetario (IPNS):
https://ipfs.mx-os.mx/ipns/<nombre-o-llave>resuelve registros mutables basados en llaves Ed25519 o registros DNSLink.
- Por identificador de contenido (CID):
- Casos de uso e integración:
Extensión IPFS Companion: Configura
ipfs.mx-os.mxcomo tu pasarela pública preferida en Firefox, Chromium, Chrome o Brave para navegar contenidos descentralizados de forma transparente.Descargas directas en consola: Utiliza
curlowgetpara obtener paquetes o artefactos de la red IPFS sin necesidad de instalar software adicional localmente:curl -sL https://ipfs.mx-os.mx/ipfs/bafybeicg2abb... -o paquete.tar.gz
- Naturaleza operativa: Opera estrictamente como un proxy inverso de alta velocidad y acceso efímero. No enclavilla (pin) contenido de terceros ni ofrece almacenamiento persistente; actúa como pasarela de tránsito entre la web convencional y el enjambre de Bitswap.
Observatorio Vigía: Cartografía y Salud del Enjambre P2P
La salud, redundancia territorial y disponibilidad de los repositorios no es una caja negra: es auditable abiertamente por cualquier integrante de la comunidad en tiempo real mediante el tablero oficial Vigía:
- Acceso web interactivo: mirrors.mx-os.mx/vigia/
- Directorio estructurado de custodios: Tabla responsiva con columnas canónicas: rol, custodio, módulos custodiados, ubicación territorial y afiliación.
- Copiado de identidad criptográfica con un clic: Cada identificador de par (PeerID) incluye un botón de copiado directo con confirmación visual instantánea.
- Filtrado reactivo por módulos: Pulsar sobre cualquier etiqueta de módulo en la tabla filtra los custodios en tiempo real, activa un indicador destacado en la cabecera y muestra una barra de filtrado con botón de limpieza inmediata.
- Cartografía soberana: Muestra el número de guardianes por módulo (BaseOS, AppStream, Everything, Updates, ISOs), ubicación geográfica aproximada y organizaciones de red.
- Interfaces de integración y telemetría:
- Instantánea estática en el catálogo: https://mirrors.mx-os.mx/vigia/telemetry.json
- API REST en tiempo real del demonio Vigía:
/api/v1/telemetry - Exportador de métricas en formato estándar de Prometheus:
/metrics
Estructura del Catálogo Canónico
El árbol publicado bajo /ipns/mirrors.mx-os.mx respeta
rigurosamente las convenciones de rutas de Fedora y CentOS Stream,
organizando el herramental y los portales en niveles específicos:
mirrors.mx-os.mx/
├── index.html <- Portal principal de bienvenida y módulos
├── README.html <- Manual de operación responsivo
├── bitacora-cids.json <- Registro histórico de instantáneas y CIDs raíz
├── docs/ <- Especificaciones técnicas y manuales en Sphinx
├── vigia/ <- Tablero de telemetría y cartografía P2P
│ ├── index.html <- Aplicación web autocontenida
│ ├── guardianes.json <- Directorio comunitario de nodos custodios
│ └── telemetry.json <- Instantánea JSON de nodos guardianes
├── nodo/ <- Herramientas de operador, scripts y configuraciones
│ ├── bin/ <- Scripts de automatización y sincronización
│ └── config/ <- Configuraciones de servicios (caddy, nginx, systemd)
├── fedora/
│ ├── iso/ <- Imágenes de instalación de Fedora
│ ├── releases/ <- Árbol Everything por versión y arquitectura
│ └── updates/ <- Repositorios de actualizaciones continuas
└── centos-stream/
├── iso/ <- Medios de instalación de CentOS Stream
├── 10-stream/
│ ├── BaseOS/ <- Paquetes base y núcleo del sistema
│ ├── AppStream/ <- Módulos y aplicaciones adicionales
│ ├── CRB/ <- CodeReady Linux Builder
│ ├── HighAvailability/ <- Paquetes para clústeres de alta disponibilidad
│ ├── NFV/ <- Virtualización de funciones de red
│ └── RT/ <- Núcleo y herramientas en tiempo real
└── SIGs/
└── 10-stream/
└── extras/ <- Paquetería complementaria de SIGs (extras-common)
Módulos de Enclavillado Comunitario
No necesitas descargar el catálogo completo. Puedes seleccionar y enclavillar únicamente la distribución o versión que requieras para tu infraestructura:
| Módulo | Comando de Enclavillado | Tamaño en Red | Estimado Final |
|---|---|---|---|
| Fedora 43 Everything | ipfs pin add /ipns/mirrors.mx-os.mx/fedora/releases/43/Everything |
118G | ~125 GB |
| Fedora 43 Updates | ipfs pin add /ipns/mirrors.mx-os.mx/fedora/updates/43 |
61G | ~65 GB |
| Fedora 44 Everything | ipfs pin add /ipns/mirrors.mx-os.mx/fedora/releases/44/Everything |
114G | ~125 GB |
| Fedora 44 Updates | ipfs pin add /ipns/mirrors.mx-os.mx/fedora/updates/44 |
53G | ~60 GB |
| Fedora 45 Everything | ipfs pin add /ipns/mirrors.mx-os.mx/fedora/releases/45/Everything |
116G | ~125 GB |
| CentOS Stream 10 | ipfs pin add /ipns/mirrors.mx-os.mx/centos-stream/10-stream |
82G | ~80 GB |
| CentOS Stream 10 SIGs | ipfs pin add /ipns/mirrors.mx-os.mx/centos-stream/SIGs/10-stream |
19G | ~25 GB |
| Catálogo Completo | ipfs pin add /ipns/mirrors.mx-os.mx |
563G | ~600 GB |
Consumo del Espejo desde Clientes DNF
Si deseas actualizar tus equipos locales consumiendo paquetes desde la red comunitaria, configura DNF de la siguiente manera:
Opción recomendada: Conexión mediante nodo IPFS local
Al contar con Kubo activo en tu equipo (escuchando en
127.0.0.1:8080), los paquetes se descargan por la red P2P.
Si otro equipo en tu misma red local ya descargó una actualización, tu
máquina la obtendrá a la velocidad de la red interna sin salir a
internet.
Para Fedora 43, 44, 45 o Rawhide
Crea el archivo /etc/yum.repos.d/fedora-mxos-ipfs.repo
con privilegios administrativos:
[fedora-mxos-ipfs]
name=Fedora $releasever - $basearch (Espejo MxOS IPFS)
baseurl=http://127.0.0.1:8080/ipns/mirrors.mx-os.mx/fedora/releases/$releasever/Everything/$basearch/os/
enabled=1
metadata_expire=6h
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
[fedora-updates-mxos-ipfs]
name=Fedora $releasever Updates - $basearch (Espejo MxOS IPFS)
baseurl=http://127.0.0.1:8080/ipns/mirrors.mx-os.mx/fedora/updates/$releasever/$basearch/
enabled=1
metadata_expire=6h
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearchPara CentOS Stream 10
Crea el archivo
/etc/yum.repos.d/centos-stream-mxos-ipfs.repo:
[cs10-baseos-mxos-ipfs]
name=CentOS Stream 10 - BaseOS (Espejo MxOS IPFS)
baseurl=http://127.0.0.1:8080/ipns/mirrors.mx-os.mx/centos-stream/10-stream/BaseOS/$basearch/os/
enabled=1
metadata_expire=6h
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[cs10-appstream-mxos-ipfs]
name=CentOS Stream 10 - AppStream (Espejo MxOS IPFS)
baseurl=http://127.0.0.1:8080/ipns/mirrors.mx-os.mx/centos-stream/10-stream/AppStream/$basearch/os/
enabled=1
metadata_expire=6h
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[cs10-crb-mxos-ipfs]
name=CentOS Stream 10 - CRB (Espejo MxOS IPFS)
baseurl=http://127.0.0.1:8080/ipns/mirrors.mx-os.mx/centos-stream/10-stream/CRB/$basearch/os/
enabled=1
metadata_expire=6h
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[cs10-highavailability-mxos-ipfs]
name=CentOS Stream 10 - HighAvailability (Espejo MxOS IPFS)
baseurl=http://127.0.0.1:8080/ipns/mirrors.mx-os.mx/centos-stream/10-stream/HighAvailability/$basearch/os/
enabled=0
metadata_expire=6h
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[cs10-rt-mxos-ipfs]
name=CentOS Stream 10 - Real Time (Espejo MxOS IPFS)
baseurl=http://127.0.0.1:8080/ipns/mirrors.mx-os.mx/centos-stream/10-stream/RT/$basearch/os/
enabled=0
metadata_expire=6h
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[cs10-extras-mxos-ipfs]
name=CentOS Stream 10 - Extras Comunes (Espejo MxOS IPFS)
baseurl=http://127.0.0.1:8080/ipns/mirrors.mx-os.mx/centos-stream/SIGs/10-stream/extras/$basearch/extras-common/
enabled=1
metadata_expire=6h
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficialOpción estándar: Conexión HTTPS directa
Si tu equipo no ejecuta un demonio IPFS, puedes configurar tus repositorios apuntando directamente al punto de entrada HTTPS:
[fedora-mxos-https]
name=Fedora $releasever - $basearch (MxOS HTTPS)
baseurl=https://mirrors.mx-os.mx/fedora/releases/$releasever/Everything/$basearch/os/
enabled=1
metadata_expire=6h
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearchOpción inmutable: Congelamiento temporal y regresión histórica
Una de las mayores ventajas del direccionamiento por contenido con IPFS es la posibilidad de fijar tus repositorios a una instantánea exacta en el tiempo. Esto garantiza entornos de compilación deterministas, imágenes de contenedor reproducibles o la posibilidad de regresar a un estado previo si una actualización introdujo regresiones.
Consulta la bitácora pública de instantáneas en bitacora-cids.json
o utiliza en tu terminal
nodo/bin/mxos-bitacora.bash list.
Ejemplo de configuración DNF anclada a una instantánea específica
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Para
anclar tu sistema a la instantánea más reciente del 10 de octubre de
2026, identificador
bafybeihrgn2vcjduc7muabvjsipuqazx6bxjbkwaqjojtn2bq6u47u64yy,
crea el archivo /etc/yum.repos.d/fedora-snapshot.repo:
[fedora-snapshot]
name=Fedora $releasever - Everything fecha 2026-10-10
baseurl=https://mirrors.mx-os.mx/ipfs/bafybeihrgn2vcjduc7muabvjsipuqazx6bxjbkwaqjojtn2bq6u47u64yy/fedora/releases/$releasever/Everything/$basearch/os/
enabled=1
metadata_expire=never
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
[fedora-updates-snapshot]
name=Fedora $releasever - Updates fecha 2026-10-10
baseurl=https://mirrors.mx-os.mx/ipfs/bafybeihrgn2vcjduc7muabvjsipuqazx6bxjbkwaqjojtn2bq6u47u64yy/fedora/updates/$releasever/Everything/$basearch/os/
enabled=1
metadata_expire=never
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearchAl emplear la ruta inmutable /ipfs/<CID_RAÍZ>/ en
lugar de DNSLink o IPNS, DNF nunca descargará paquetes posteriores a
dicha fecha, protegiendo tus sistemas contra cambios no deseados.
Guía del Operador: Nodos Guardianes y Colaboración P2P
El objetivo fundamental de la red de espejos de MxOS es la soberanía y la resiliencia comunitaria: la infraestructura no depende de servidores centrales, sino del enclavillado colaborativo. Cada usuario, institución o laboratorio aloja localmente los repositorios que mejor le parezca y comparte bloques con su red local e internet mediante intercambio entre pares P2P.
Sigue estos pasos directos para configurar tu equipo como nodo guardián:
Paso 1: Instalación de Kubo
Kubo se encuentra empaquetado para Fedora y CentOS Stream en el repositorio Copr de MxOS:
# Habilitar repositorio Copr e instalar paquete
sudo dnf copr enable renich/kubo
sudo dnf install kuboPaso 2: Inicialización y servicio systemd
Se recomienda operar Kubo en modo de usuario sin privilegios administrativos:
# Inicializar almacén en ~/.ipfs
ipfs init
# Habilitar e iniciar servicio persistente de usuario
systemctl --user enable --now ipfs.servicePaso 3: Apertura de puerto del enjambre libp2p
Para permitir que otros nodos descarguen bloques desde tu equipo, abre el puerto 4001:
# Abrir puerto de enjambre libp2p en TCP y UDP
sudo firewall-cmd --permanent --add-port=4001/tcp
sudo firewall-cmd --permanent --add-port=4001/udp
sudo firewall-cmd --reloadPaso 4: Enlace Directo con el Nodo Semilla: Bootstrap y Peering
Para que tu nodo descubra y transfiera bloques de inmediato desde el
nodo maestro de la Fundación MxOS, web0.mx-os.mx, sin
demoras en la DHT global, agrégalo a tu lista de arranque y configúralo
como par permanente:
# 1. Agregar web0 a la lista de bootstrap inicial
ipfs bootstrap add /ip4/38.58.139.30/tcp/4001/p2p/12D3KooWHJxzs8eArvUWLZGJJEowxXVVjbCK5MwZtDqECsGhjFjD
ipfs bootstrap add /ip4/38.58.139.30/udp/4001/quic-v1/p2p/12D3KooWHJxzs8eArvUWLZGJJEowxXVVjbCK5MwZtDqECsGhjFjD
# 2. Conectar de inmediato en vivo
ipfs swarm connect /ip4/38.58.139.30/tcp/4001/p2p/12D3KooWHJxzs8eArvUWLZGJJEowxXVVjbCK5MwZtDqECsGhjFjD
# 3. Configurar enlace permanente (Peering) para reconexión automática agresiva
ipfs config --json Peering.Peers '[{
"ID": "12D3KooWHJxzs8eArvUWLZGJJEowxXVVjbCK5MwZtDqECsGhjFjD",
"Addrs": [
"/ip4/38.58.139.30/tcp/4001",
"/ip4/38.58.139.30/udp/4001/quic-v1"
]
}]'
# Reiniciar servicio para persistir la configuración
systemctl --user restart ipfs.servicePaso 5: Configuración de resolución DNSLink sin desfase de caché
Los enrutadores residenciales y de campus suelen almacenar en caché
los registros TXT de DNSLink por tiempos prolongados. Para que tu nodo
resuelva los identificadores de contenido recién publicados sin esperar
vencimientos de caché local, configura Kubo para consultar directamente
el punto de resolución DoH de Cloudflare para el dominio
mx-os.mx:
# Delegar resolución DNSLink de mx-os.mx a Cloudflare DoH (FQDN estricto)
ipfs config --json DNS.Resolvers '{"mx-os.mx.": "https://cloudflare-dns.com/dns-query", ".": "auto"}'
systemctl --user restart ipfs.servicePaso 6: Explora y enclavilla tus módulos
Antes de enclavillar, puedes consultar directamente la estructura y
los módulos publicados en el catálogo maestro ejecutando
ipfs ls:
# 1. Explorar la raíz completa del catálogo comunitario
ipfs ls /ipns/mirrors.mx-os.mx
# 2. Listar las ramas de Fedora disponibles
ipfs ls /ipns/mirrors.mx-os.mx/fedora/releases
ipfs ls /ipns/mirrors.mx-os.mx/fedora/updates
# 3. Enclavillar el módulo deseado
ipfs pin add /ipns/mirrors.mx-os.mx/fedora/releases/43/EverythingPaso 7: Gestión eficiente de almacenamiento con Btrfs y CoW
Para los operadores de nodos guardianes que sincronizan o almacenan paquetes localmente, la infraestructura de espejos de MxOS aprovecha las capacidades nativas de Btrfs y la copia en escritura denominada CoW:
Eliminación atómica e instantánea de módulos enteros: En lugar de ejecutar borrados recursivos ordinarios con
rm -rfque tardan minutos en recorrer y desvincular decenas de miles de archivos individuales sobrecargando la cola de entrada y salida, cada módulo del catálogo puede residir en un subvolumen Btrfs independiente. Borrar un repositorio completo de más de 100 GB se efectúa de forma instantánea a nivel de metadatos mediantebtrfs subvolume delete.Instantáneas de respaldo con costo cero de almacenamiento: Antes de sincronizar o depurar un repositorio, es posible generar una instantánea de solo lectura del módulo en milisegundos con
btrfs subvolume snapshot -r. La instantánea no consume espacio adicional en disco gracias a CoW; únicamente requiere almacenamiento nuevo conforme upstream añade o sobrescribe bloques.Clonación y ramificación instantánea: La duplicación de repositorios o la preparación de versiones de prueba se realiza con enlaces de referencia mediante
cp -a --reflink=always, compartiendo los mismos bloques físicos de disco de forma transparente.Permisos para operadores no privilegiados: Al habilitar la opción de montaje
user_subvol_rm_alloweden/etc/fstabpara el punto de montaje de IPFS, los operadores pueden crear, tomar instantáneas y eliminar subvolúmenes de módulos sin necesidad de privilegios de superusuario root.Herramienta de gestión integrada: El repositorio incluye la herramienta nodo/bin/mxos-btrfs.bash para automatizar estas operaciones:
# 1. Consultar estado de subvolúmenes e instantáneas por módulo ./nodo/bin/mxos-btrfs.bash list # 2. Inicializar o migrar módulos a subvolúmenes Btrfs ./nodo/bin/mxos-btrfs.bash init all # 3. Crear una instantánea de respaldo previa a sincronización ./nodo/bin/mxos-btrfs.bash snapshot centos-baseos pre-sync # 4. Eliminar un módulo entero de forma instantánea y atómica ./nodo/bin/mxos-btrfs.bash delete fedora-everything-43 # 5. Restaurar un módulo a partir de una instantánea previa ./nodo/bin/mxos-btrfs.bash rollback centos-baseos centos-baseos-pre-sync
Para consultar procedimientos de dimensionamiento, políticas de recolección de basura y administración avanzada de almacenamiento, consulta la Guía Completa para Operadores de Nodos Guardianes en la documentación técnica.
Reconocimiento y Directorio Comunitario de Custodios
La participación en el enjambre de MxOS es voluntaria, descentralizada y respetuosa de la privacidad por diseño. No existe registro forzoso, telemetría intrusiva ni recopilación obligatoria de datos.
Custodia Anónima: Participación Plena y Soberana
En la Red de Espejos Comunitarios de Fundación MxOS, la custodia anónima es totalmente válida, bienvenida y considerada de primera clase.
- Sin registros ni trámites: No necesitas registrarte, crear cuentas ni proporcionar nombres, correos ni datos personales.
- Operación natural entre pares: Al levantar tu demonio Kubo y enclavillar cualquier módulo, tu nodo intercambia paquetes y bloques de forma nativa a través de la DHT de libp2p y el protocolo Bitswap.
- Identidad criptográfica pura: En la red pública, tu
nodo se anuncia únicamente mediante su
PeerIDcriptográfico, por ejemplo12D3KooWBVZfAQ..., derivado de tu par de llaves Ed25519. - Mismo peso y soberanía: Los bloques servidos por un guardián anónimo tienen exactamente la misma validez, velocidad y prioridad para la comunidad que los de un nodo registrado; fortalecen la resiliencia colectiva y alimentan a los clientes locales sin dejar registro de identidad civil.
Registro Voluntario de tu Nodo a tu Nombre
Si como operador individual, colectivo tecnológico, universidad, centro de cómputo o empresa privada deseas vincular públicamente tu nodo a tu nombre, organización o proyecto, puedes solicitar tu inclusión en el Directorio de Custodios.
Al registrarte, tu nodo aparecerá formalmente en el radar de Vigía con tus datos verificados:
- Alias o distintivo: Tu usuario o identificador
comunitario; por ejemplo,
@tu_usuariooudg-sistemas. - Nombre completo o entidad: Nombre civil o denominación institucional formal.
- Afiliación u organización: Colectivo, empresa o
universidad que respalda el nodo; por ejemplo,
EVALinuxoHOBOPS.IO. - Ubicación: Ciudad, estado y país en texto canónico;
por ejemplo,
Ixtlahuacán de los Membrillos, Jalisco, México; sin abreviaturas. - Sitio web: Portal institucional o página personal
verificada bajo HTTPS; por ejemplo,
https://evalinux.com. - Insignia honorífica: Distintivo asignado en el tablero de Vigía; por ejemplo, Guardián Pionero, Espejo Académico o Gateway Oficial.
Procedimiento para Registrar tu Nodo
Para añadir tu nodo al archivo vigia/guardianes.json y
figurar formalmente con tu identidad en el espejo comunitario, sigue
estos pasos:
Obtén el identificador PeerID de tu nodo:
ipfs id -f="<id>\n"Asegúrate de estar compartiendo al menos un módulo o el catálogo:
ipfs pin add /ipns/mirrors.mx-os.mx/fedora/isoEdita el archivo ``vigia/guardianes.json`` en tu copia del repositorio: Agrega una entrada dentro del objeto
"guardianes"utilizando tu PeerID como clave:"12D3KooWBVZfAQyPExhScDpiG4Hahh3e6QmwRZRVopib1ThgUo2g": { "alias": "renich", "nombre": "Rénich Bon Ćirić", "organizacion": "EVALinux", "ubicacion": "Ixtlahuacán de los Membrillos, Jalisco, México", "sitio": "https://evalinux.com", "contacto": "renich@evalinux.com", "rol": "guardian", "insignia": "🛡️ Guardián Pionero", "verificacion": "gitlab" }Reglas para el registro:
- Utiliza el nombre completo del estado, por ejemplo
JaliscooQuerétaro, nunca abreviado. - Evita espacios alrededor de diagonales; utiliza redacción directa con comas o conjunciones.
- Proporciona un enlace HTTPS funcional en el campo
sitio.
- Utiliza el nombre completo del estado, por ejemplo
Envía tu solicitud: Crea una rama con tu cambio y abre un Merge Request en nuestro repositorio de Git (git.mx-os.mx/MxOS/mirrors o gitlab.com/mxos/mirrors). Una vez aprobado, tu nodo aparecerá automáticamente vinculado en vigia.mx-os.mx y en el espejo comunitario.
Arquitectura y Seguridad Criptográfica
La seguridad y confiabilidad en la red de espejos descansa en tres barreras independientes e infranqueables:
- Integridad de bloques por direccionamiento: Cada archivo, paquete RPM y metadato se divide en bloques criptográficos referenciados por su identificador de contenido CID. La naturaleza inmutable de IPFS garantiza que ningún bit pueda alterarse en tránsito; si un bloque difiere de su hash, el cliente lo descarta automáticamente.
- Firmas GPG oficiales del proyecto upstream: El
gestor DNF valida cada RPM contra la llave pública oficial de Fedora o
CentOS Stream, ubicada en
/etc/pki/rpm-gpg/. Ni los operadores de nodos ni atacantes intermedios pueden inyectar código no firmado o adulterado. - Identidad soberana Ed25519 en IPNS: El catálogo
maestro se firma con la llave criptográfica dedicada
mxos-mirrors, identificadork51qzi5uqu5di6ed3qtnwrdlvpmfil07ib6qfzb1t259nux49jenn8my4dtg0v, permitiendo la verificación independiente de DNS mediante la ruta/ipns/k51qzi5uqu5di6ed3qtnwrdlvpmfil07ib6qfzb1t259nux49jenn8my4dtg0v. - Puntero canónico con DNSLink: Para evitar lidiar
con hashes cambiantes en cada sincronización, el dominio
mirrors.mx-os.mxcuenta con registros TXT DNSLink bajo el subdominio_dnslink.mirrors.mx-os.mxque apuntan al CID raíz más reciente con una propagación controlada de 300 segundos.
Herramientas y Automatización en este Repositorio
Todas las herramientas operativas y plantillas de configuración
residen encapsuladas en el directorio nodo/:
Herramientas de sincronización y mantenimiento: nodo/bin/
- nodo/bin/mxos-btrfs.bash: Gestión de subvolúmenes Btrfs, instantáneas CoW y borrado atómico de módulos.
- nodo/bin/mxos-sync-fedora-updates.bash: Sincronización concurrente de repositorios updates para Fedora 43, 44 y 45 con DNF5 (10 descargas simultáneas).
- nodo/bin/mxos-repo-sync.bash: Sincronización completa de paquetería Everything y CentOS Stream con bloqueo exclusivo de concurrencia e ingesta integral.
- nodo/bin/mxos-mirror-sync.bash: Sincronización diferencial upstream mediante rsync preservando metadatos.
- nodo/bin/mxos-tmux-sync.bash: Gestión de sesiones de sincronización persistentes en segundo plano mediante tmux.
- nodo/bin/mxos-mirror-ingest.bash:
Ingesta UnixFS en Kubo con soporte de filestore
(
--nocopy). - nodo/bin/mxos-ipns-publish.bash: Firma y publicación en IPNS con la llave Ed25519 del proyecto.
- nodo/bin/mxos-key-backup.bash: Exportación, respaldo cifrado (age/gpg) y restauración de la llave Ed25519.
- nodo/bin/mxos-bitacora.bash: Bitácora cronológica de instantáneas, registro de CIDs y generador de repositorios DNF.
- nodo/bin/mxos-dnslink-update.bash: Actualización desatendida del registro DNSLink en Cloudflare mediante API REST.
- nodo/bin/mxos-build-html.bash: Generación y compilación responsiva de portales HTML (README.html e index.html) con depuración automática de la raíz de staging.
- nodo/bin/mxos-sizes.bash: Auditoría y medición de tamaños en disco y estimaciones de red.
- nodo/bin/mxos-mirror.bash: Orquestador integral del ciclo completo (sincronizar, ingerir, firmar, publicar y replicar).
Configuraciones de servicios: nodo/config/
- nodo/config/etc/mirrors.env: Archivo centralizado de variables de entorno (rutas, llaves IPNS, concurrencia de descarga).
- nodo/config/etc/caddy/Caddyfile: Plantilla de proxy inverso para Caddy con compresión y terminación TLS.
- nodo/config/etc/nginx/mirrors.mx-os.mx.conf: Plantilla de configuración para Nginx con cabeceras de seguridad y proxy hacia Kubo.
- nodo/config/systemd/: Unidades de
servicio (
mxos-mirror.service) y temporizadores (mxos-mirror.timer) para sincronización automática cuatridiaria (00:00, 06:00, 12:00 y 18:00).
Documentación Técnica Detallada
Para profundizar en las especificaciones arquitectónicas y manuales de procedimiento, consulta el directorio docs/:
- docs/index.html: Índice general de la documentación técnica en Sphinx.
- docs/business/spec.html: Modelo estratégico, justificación e incentivos comunitarios.
- docs/functional/spec.html: Especificación de catálogo modular, enclavillado y telemetría pasiva.
- docs/technical/spec.html: Arquitectura de red, resolución DNSLink y puente MirrorManager.
- docs/guides/index.html: Manuales paso a paso para operadores, clientes y replicación autónoma.
- docs/guides/procedimiento-despliegue.html: Procedimiento generalizado y estandarizado de despliegue y operación.
- docs/project/roadmap.html: Fases de ejecución y seguimiento del proyecto.
Canales de Comunidad y Contacto
- Canal oficial de Telegram: @mx_os_mx
- Sitio web institucional: mx-os.mx
- Repositorios de código Git: git.mx-os.mx y gitlab.com/mxos/mirrors
Licenciamiento
Este proyecto opera bajo un modelo de licenciamiento libre y comunitario:
- Documentación y especificaciones: Licenciadas bajo GNU Free Documentation License v1.3 o posterior (GNU FDL v1.3+) sin secciones invariantes, sin textos de portada y sin textos de contraportada, en modelo dual con Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC-BY-SA-4.0).
- Herramientas, scripts y configuraciones: Licenciadas bajo la Licencia Pública General de GNU v3.0 o posterior (GNU GPLv3+).