Commit graph

103 commits

Author SHA256 Message Date
78fb60f6bf
feat(repo): deploy DNF mxos.repo configuration file on repo server
Provide a downloadable DNF repo configuration file at
http://cs10-repo.mx-os/mxos.repo that points to our CentOS Stream 10
BaseOS structured layout (binary, debug, and source packages).

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 21:40:14 -06:00
8ca23088f4
feat(build): fix lookaside cache fallback and organize repository structure
- Add fallback to official CentOS Stream lookaside cache in SCM get-sources script
- Update documentation to reflect CentOS-style structured repositories on cs10-repo
- Update project journal with progress and decisions

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 21:34:34 -06:00
1b2509b079
feat(theme): make Koji Web layout fully responsive and full-width
Remove the centered max-width #wrap layout on desktop viewport widths
and clear default #innerwrap margins to allow Koji Web tables to utilize
the full screen width, preventing layout cramming.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 21:24:58 -06:00
b7c28ade88
refactor: change repository path to /srv/www/repo for SELinux compliance
- Update Caddy tasks and templates to serve from /srv/www/repo.
- Update Koji Hub export script to target /srv/www/repo/.
- Redeploy Caddy config via Ansible.
- Update ADR-05 and package compilation documentation.
- Log progress in the project journal.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 16:52:29 -06:00
c290878c96
feat: deploy Caddy repository server for BaseOS packages
- Provision cs10-repo.mx-os VM with 500 GB system disk using OpenTofu.
- Create and apply Ansible role to install and configure Caddy to serve /srv/repo/.
- Update Koji Hub export script to rsync signed binary RPMs to the repo server and trigger createrepo_c.
- Record ADR-05 detailing this design decision and update package compilation guide.
- Log progress in the project journal.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 16:10:32 -06:00
06e8edfc4f
docs: add bootstrap order and Forgejo export details
- Record ADR-05 detailing the topological sorting and cyclic group resolution.
- Update package compilation guide with instructions for running the bootstrap daemon and the Forgejo package exporter.
- Log agent progress in the project journal.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 15:47:16 -06:00
7ab7d80bd2
docs: add package compilation and symlinks configuration
Add Koji package compilation documentation outlining SCM, lookaside cache, and repository priority configuration. Fix Apache configuration to follow symlinks in /mnt/koji.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>

Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 15:33:57 -06:00
be9438afdf
feat: automate CentOS Stream 10 repository mirroring setup
Add configurations to playbooks and templates for local repository mirroring.
This exports and mounts the CentOS Stream 10 local mirror directory (/srv/nfs/cs10),
deploys the Apache configuration serving it from the Hub, and parameters the Koji
external repository bootstrap tasks to synchronize target URLs with local mirrors.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 13:48:55 -06:00
bafaa0e840
fix(sign): corregir rpmsign con GnuPG PKCS11 y firma en spooler
- Configurar GnuPG con gnupg-pkcs11-scd y libsiguldry_pkcs11.so para el usuario root.
- Importar clave pública de firma de Siguldry al llavero GPG de root automáticamente.
- Modificar el spooler para usar rpmsign con la macro _gpg_name en lugar de Sequoia (_openpgp_sign).
- Remover el argumento keyword no soportado 'sigkey' de add_rpm_sig().
- Definir variables de entorno SIGULDRY_SOCKET y CREDENTIALS_DIRECTORY en el servicio systemd del spooler.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 12:32:02 -06:00
4b27db4529
docs(readme): document Koji Web SSL authentication and client cert setup
- Clarify FQDN usage to avoid hostname mismatch.

- Document CA trust installation and PKCS#12 client certificate browser import steps.

- Describe TLS handshake failure warning when accessing login without certs.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>

Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 12:25:12 -06:00
18f7c93ea8
fix(sign): construct RPM path using build directory in sign spooler
Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>

Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 12:22:21 -06:00
de7ec8d165
fix(web): fix proxy authentication DN format and server CA option in web.conf
- Use loop-specific owner/group variables for copying certificates in roles/koji_hub/tasks/main.yaml so group: apache is actually applied.

- Update roles/koji_hub/templates/hub.conf.j2 to specify both slash-separated and RFC 2253 comma-separated formats in ProxyDNs.

- Update roles/koji_hub/templates/web.conf.j2 to use KojiHubCA instead of serverca for the web config block.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>

Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 12:22:19 -06:00
7f6d539ac5
feat(makefile): add targets to install and remove CA cert on local PC
- Add install-ca and remove-ca targets to GNUmakefile.

- Allows local installation/removal of certs/koji_ca_cert.crt into the system CA trust anchors.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>

Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 12:18:00 -06:00
08882ba0fe
fix(web): disable TLS 1.3 to support SSL client cert renegotiation without PHA
- Set SSLProtocol to disable TLS 1.3 in ssl.conf on Apache, enabling standard TLS 1.2 client certificate renegotiation.

- Revert the temporary global SSLVerifyClient/Depth optional configuration at VirtualHost level.

- Save DB connection to kojihub.context.cnx in sign spooler.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>

Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 12:15:03 -06:00
3140508cfb
fix(sign): read DB options from hub config files in sign spooler
Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>

Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 12:11:10 -06:00
60a6827c3c
fix(web): make SSLVerifyClient configurable and document staging workaround
- Define koji_hub_ssl_verify_client in vars/default.yaml with a warning comment.

- Update roles/koji_hub/tasks/main.yaml to use the new variable.

- Helps document why it is optional in dev/staging (avoid TLS 1.3 PHA) and require in production.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>

Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 12:11:08 -06:00
99169ec07e
fix(web): add VirtualHost SSLVerifyClient optional to prevent post-handshake failures
- Add SSLVerifyClient optional and SSLVerifyDepth 10 to the loop configuring ssl.conf in roles/koji_hub/tasks/main.yaml.

- This forces the client certificate request to happen during the initial TLS handshake, bypassing TLS 1.3 Post-Handshake Authentication (PHA) failures.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>

Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 12:08:42 -06:00
bf4676281a
fix(web): enable SSL client certificate authentication for koji-web login
- Add Apache configuration block in roles/koji_hub/tasks/main.yaml to require SSL client certificate authentication for /koji/login inside kojiweb.conf.

- Fixes the koji.AuthError: could not verify client: None error during Koji Web login.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>

Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 12:06:30 -06:00
d8e1f642d0
fix(branding): evitar envoltura de texto en pestañas de navegación con espacios
* Se agrega white-space: nowrap a las pestañas del menú de navegación para asegurar que textos con múltiples palabras como \"Build Targets\" se mantengan en una sola línea.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 11:45:52 -06:00
3629ed78ed
fix(branding): enforce nowrap on navigation bar and optimize scaling
Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 11:38:59 -06:00
1cc42aa500
fix(branding): optimize navigation padding and clean up nested info tables
Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 11:34:41 -06:00
bfaddec442
fix(branding): set full width layout and synchronize CSS to local tasks
- Remove wrap max-width to allow the content to use 100% width on ultra-wide screens.
- Clean up duplicate and old CSS blocks from the tasks file.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 11:25:00 -06:00
7f148e269d
fix(branding): improve desktop wrap, card tables, and enlarge elements
- Set #wrap background to transparent and remove its box shadow to prevent the header and nav from looking boxed and cut off.
- Convert tables to self-contained visual cards with white backgrounds, border-radii, and shadows.
- Enlarge body font size to 16px, table text to 15px, and nav/search elements to improve readability.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 11:23:20 -06:00
f30e5f9e03
fix(branding): improve table width, page font sizes, and buildinfo alignment
- Scope table responsiveness (display: block) strictly within the mobile media query. This restores table widths back to 100% on desktop layout.
- Refine table styles by differentiating layout tables (table.data-list, table.list) from vertical key-value information tables (table th), giving them a clean layout with right-aligned headers and Slate 100 background.
- Increase page font-size base, padding, and add a drop-shadowed white container wrapper for a modern, clean visual presentation.
- Theme h4 table headers with Slate 900 and a 4px Emerald border accent to override Koji's default blue.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 11:19:42 -06:00
2babe284e9
fix(branding): add viewport template injection and mobile CSS rules
- Add a task to check and inject the viewport meta tag inside Koji's Cheetah header template.
- Add CSS media queries to reorganize the header and navigation bar elements vertically on narrow screens.
- Implement inline horizontal scroll on table tags to prevent viewports from expanding beyond mobile screen widths.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 11:03:01 -06:00
99ac10a870
fix(branding): restore round logo and fix mainNav stylesheet import
- Correct the relative stylesheet import path to '../../koji.css' in the theme file to restore base styles and resolve the unstyled vertical navigation menu list.
- Restore the round logo layout scaled to 50px of height.
- Style the mainNav tabs menu with Slate/Emerald colors to match the theme.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 11:02:06 -06:00
96c7d426e5
fix(branding,siguldry): deploy Forgejo DNF repo and fix local tool check
- Configure mxos-packages DNF repository to allow siguldry-pkcs11 package resolution.
- Verify if rsvg-convert exists on localhost to bypass become/dnf installation check when passwordless sudo is unavailable.
- Align PKCS#11 module path to /usr/lib64/pkcs11/libsiguldry_pkcs11.so in spooler and docs.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 10:53:43 -06:00
d30b0959ee
feat: Implementación de Branding y Tema de MxOS en Koji Web
* Conversión automática de logotipos SVG a PNG mediante librsvg2-tools en localhost
* Despliegue de los assets gráficos en el directorio de temas de Koji Web
* Creación de la hoja de estilos koji.css con overrides de color corporativo (Verde Esmeralda #10b981)
* Activación del tema mxos en web.conf de Koji Web

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 10:34:09 -06:00
9efc2d8d4e
doc: Guía de integración del Package Registry de Forgejo
* Explicación de la carga de RPMs a través del API de Forgejo
* Configuración del repositorio local DNF
* Ejemplo de workflow en YAML para Forgejo Actions

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 10:27:48 -06:00
89d6f66be8
feat: Integración de Siguldry PKCS#11 y spooler de firmas
* Implementación del rol de Ansible 'siguldry' para CentOS Stream 10
* Migración del plugin de firmas de Koji Hub a un spooler asíncrono
* Modificación de roles para utilizar empaquetamiento RPM nativo de siguldry-pkcs11
* Documentación de decisiones (ADRs) y roadmap en docs/technical/
* Limpieza de binarios locales pesados de PKCS#11 en Ansible

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 10:06:44 -06:00
d1203ba555
refactor(opentofu): Modernize VM config, fix timeout and script name
Modernized HCL syntax with object notation

Increased SSH timeout from 1m to 2m for first boot

Fixed script name typo: dnf-config.bash → dnf-conf.bash

Simplified VM configuration (removed rngs, serials, tpms, graphics)

Tested and working

Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-02-21 15:05:52 -06:00
f6a353d507
fix(koji): Corregir configuración SSL y seguridad del Hub
- Cambiar URLs de HTTP a HTTPS en koji.conf.j2 para consistencia SSL
- Agregar WebCert en web.conf.j2 para autenticación proxy SSL
- Generar y desplegar certificado kojiweb.pem
- Configurar MaxConnectionsPerChild=100 en httpd para prevenir fugas de memoria

Co-authored-by: Assistant <renich+assistant@evalinux.com>
2026-02-21 14:18:33 -06:00
fa97cba322
feat: Configurar Dist-Git como Lookaside Cache y corregir bootstrap
- Configurar rol dist_git como Lookaside Cache únicamente (sin git-daemon).
- Actualizar estructura de caché a 'rpms/pkg/file/algo/hash/file' compatible con upstream.
- Añadir scripts bin/sync-sources.bash y bin/sync-all-sources.bash para sincronizar fuentes desde CentOS Stream.
- Eliminar bin/import-srpm.bash obsoleto.
- Actualizar script mxos-get-sources.bash en kojid para usar la nueva estructura de URL.
- Corregir lógica de 'add-host' en koji_bootstrap para manejar reintentos limpiamente.
- Actualizar documentación (README.rst, docs/instalación.rst) reflejando los cambios.
- Correcciones menores en rutas de configuración y nombres de grupos en deploy.yaml.
2025-11-23 01:11:31 -06:00
3aec0d2e01
docs: Actualizar docs/instalación.rst con pasos para Dist-Git y mejoras de redacción 2025-11-22 12:05:36 -06:00
326ad04c46
docs: Corregir rama de ejemplo en README.rst a #c10s 2025-11-22 12:02:14 -06:00
156a8bb314
docs: Actualizar README.rst con instrucciones de Dist-Git 2025-11-22 12:01:17 -06:00
f03de33643
docs: Actualizar TODO.rst con tareas pendientes 2025-11-22 11:58:44 -06:00
f14c01da0b
feat: Mejorar la configuración y seguridad de Koji
Este commit introduce varias mejoras en los roles de Ansible para Koji:

- **Rol koji_hub:**
  - Se reemplazó `lineinfile` con una plantilla completa para `hub.conf` para mejorar la legibilidad y mantenibilidad.
  - Se aseguró la instalación del paquete `python3-koji-hub-plugins` para soportar el plugin `echo`.
  - Se eliminó una tarea `blockinfile` redundante que duplicaba la configuración de la base de datos en `hub.conf`.
  - Se rehabilitó el plugin `echo` en `hub.conf` después de asegurar su disponibilidad.

- **Rol postgresql:**
  - Se modificó la configuración de `pg_hba.conf` para iterar correctamente sobre todos los hosts en el grupo `kojihub`, asegurando que todas las instancias del hub puedan conectarse a la base de datos.

- **Rol dist_git:**
  - Se implementó el etiquetado persistente de contextos SELinux para los directorios de `dist-git` usando `semanage fcontext` y `restorecon`, asegurando que los contextos persistan tras reetiquetados del sistema de archivos.

- **Rol common:**
  - Se mejoró la seguridad en la generación de claves GPG usando un archivo temporal para el script por lotes, el cual se elimina de forma segura después de la generación de la clave.

- **Configuración Global:**
  - Se introdujo la variable `koji_source_script_path` en `vars/default.yaml` para centralizar la ruta del script `mxos-get-sources.bash`, eliminando rutas hardcodeadas en `kojid_allowed_scms` y las tareas de `kojid`.

- **Documentación:**
  - Se actualizó `docs/instalación.rst` para reflejar los cambios en la configuración de Dist-Git, plugins y variables.
2025-11-22 11:52:50 -06:00
39aeb2d6b6
refactor(ansible): Estandariza nombres de roles y actualiza Koji
Se estandarizan los nombres de los directorios de roles, cambiando guiones por guiones bajos.

Se añaden nuevos scripts para limpieza y callbacks en Koji Hub. Además, se actualizan las configuraciones de Kojid, Kojira y PostgreSQL, incluyendo la instalación de paquetes, ajustes de mock y la gestión de variables.
2025-11-15 20:08:24 -06:00
08c38d3d56
feat(common): Arreglo de known_hosts 2025-11-15 20:00:05 -06:00
b2ba568cfa
Ignore test scripts in repo 2025-11-12 21:55:30 -06:00
93d8680c76
Remove test scripts from repo 2025-11-12 21:54:56 -06:00
1f301725db
Secure Koji setup: add koji user, fix NFS/SELinux, use CentOS Stream 10 repos 2025-11-12 21:54:15 -06:00
8b9fd80a0d
Mejorar idempotencia: usar copy para PEM, agregar changed_when a GPG export 2025-11-12 01:44:36 -06:00
f55a621a01
Hacer configurable la ruta de la imagen base, remover valor por defecto y agregarla a terraform.tfvars 2025-11-12 01:39:06 -06:00
c68ec7647b
Estandarizar extensiones de archivos YAML a .yaml, corregir dominio SMTP a cs10, plantillar URL del servidor Sigul 2025-11-12 01:36:52 -06:00
ac48dd3db6
make: mejores recetas 2025-08-06 06:23:38 -06:00
a4968434c7
readme: agregué más referencias 2025-08-06 06:23:02 -06:00
d1085bca17
readme: agregué instrucciones para el despliegue 2025-08-06 06:19:45 -06:00
7d4cf5b1ad
ignore: limpieza 2025-08-06 05:56:11 -06:00