Gitea y el Control Total del Código de tu Infraestructura

Gitea y el Control Total del Código de tu Infraestructura

por Raúl Unzué

GITEA en Entornos profesionales: Control y Soberanía del Código

Hay un momento en cualquier entorno de infraestructura crítica, de esos donde hablamos de switches core, routers o firewalls que separan la red corporativa de Internet, en el que alguien pregunta algo incómodo: “¿Dónde estamos guardando exactamente las configuraciones de red y quién tiene acceso real a eso?”

Y ahí empiezan los silencios.

Porque mientras las aplicaciones viven felices en repositorios SaaS, las configuraciones de dispositivos de red suelen estar dispersas, copias locales, backups automáticos, algún sistema de monitorización que guarda versiones…pero sin una estrategia clara de control, trazabilidad y soberanía.

En redes donde un cambio mal aplicado en un switch puede tumbar una planta industrial o dejar sin servicio a cientos de usuarios, el repositorio deja de ser un detalle operativo. Se convierte en un componente crítico.

Es en ese contexto donde Gitea empieza a tener mucho sentido.

Geeknetic Gitea y el Control Total del Código de tu Infraestructura 1

Infraestructura crítica no es un laboratorio

Cuando hablamos de infraestructuras críticas no estamos hablando de un homelab ni de un entorno de pruebas. Estamos hablando de dispositivos que gestionan tráfico real, que soportan procesos de negocio y que, en muchos casos, están sujetos a auditorías formales.

Un cambio en un firewall mal documentado puede generar una brecha de seguridad. Una ACL modificada sin trazabilidad puede romper comunicaciones críticas. Un firmware actualizado sin registro puede complicar cualquier análisis forense posterior.

Herramientas como Oxidized permiten extraer y versionar automáticamente configuraciones de red. Plataformas como LibreNMS ayudan a monitorizar el estado de los dispositivos. Incluso soluciones comerciales como SolarWinds Network Configuration Manager ofrecen gestión avanzada de configuraciones.

Pero hay una pregunta que muchas veces no se aborda con suficiente profundidad:

  • ¿Dónde vive ese versionado?
  • ¿Quién controla el repositorio donde se almacenan esas configuraciones?

Ahí es donde entra Gitea como servidor Git autoalojado y bajo tu control total.

Gitea como repositorio soberano de configuración

Gitea no es simplemente “otro Git web bonito”. Es un servicio Git ligero, autoalojado y extremadamente manejable, diseñado para integrarse en entornos donde el control importa más que el marketing.

En un entorno crítico, usar un SaaS externo para almacenar configuraciones de routers o firewalls puede ser perfectamente válido, hasta que deja de serlo. Requisitos regulatorios, políticas internas o simplemente criterios de seguridad pueden exigir que el código, y en este caso, las configuraciones, no salgan de tu perímetro.

Con Gitea:

  • El repositorio vive en tu CPD o en tu nube privada.
  • El acceso se integra con tu directorio corporativo.
  • El tráfico puede restringirse a redes internas o VPN.
  • Los backups siguen tu política corporativa.
  • La auditoría depende de tu stack, no del de un tercero.

Eso cambia radicalmente el nivel de control.

Integración real con Oxidized y gestión de cambios

El otro día os mostrábamos como uníamos Oxidized y LibreNMS en la misma infraestructura. Hoy queremos explicaros el valor al unir Gitea a la ecuación.

En escenarios prácticos, el patrón es bastante claro:

  1. Oxidized recoge automáticamente las configuraciones de switches, routers y firewalls.
  2. Cada cambio se convierte en un commit.
  3. Gitea actúa como repositorio central, gestionando historial, permisos y revisiones.

La diferencia respecto a usar un Git público es sutil pero clave, la superficie de exposición.

Cuando las configuraciones incluyen:

  • Direccionamientos internos.
  • Esquemas de VLAN.
  • Reglas de firewall.
  • Rutas estáticas o dinámicas.
  • Información sensible de arquitectura.

Tener eso en un repositorio bajo tu propio dominio reduce dependencias y simplifica el cumplimiento normativo.

Y además, te permite algo que muchas veces se pasa por alto, aplicar el mismo modelo de revisión que en desarrollo de software.

  • Puedes establecer pull requests para cambios de configuración críticos.
  • Puedes exigir doble validación antes de aplicar una modificación estructural.
  • Puedes mantener ramas diferenciadas para entornos productivos y de contingencia.

Eso es Git aplicado a infraestructura de red con disciplina real.

Geeknetic Gitea y el Control Total del Código de tu Infraestructura 2

Integración Gitea como Stack Docker

Os explico brevemente como sería la integración con Oxidized. Generemos una carpeta persistente para el contenedor (usaremos portainer instalado en un NAS donde ya está Oxidized) y una subcarpeta en Oxidized:

Geeknetic Gitea y el Control Total del Código de tu Infraestructura 3

Geeknetic Gitea y el Control Total del Código de tu Infraestructura 4

Usaremos la red que ya comparten con LibreNMS, una buena práctica sería segmentar en más redes.

El stack para Gitea sería:

version: "3.8"

services:

  gitea:

    image: gitea/gitea:latest

    container_name: gitea

    environment:

      - USER_UID=1000

      - USER_GID=1000

      - GITEA__webhook__ALLOWED_HOST_LIST=oxidized

    volumes:

      - /home/cgsi_seg/docker/apps/gitea/data:/data

    ports:

      - "3000:3000"

      - "2222:22"

    networks:

      - librenms_librenms_net

    restart: always

networks:

  librenms_librenms_net:

    external: true

Tendríamos que actualizar el stack de Oxidized:

version: "3.8"

services:

  oxidized:

    image: oxidized/oxidized:latest

    container_name: oxidized

    restart: unless-stopped

    ports:

      - "8888:8888"

    environment:

      - TZ=Europe/Madrid

    volumes:

      - /volume2/Docker/oxidized/config:/home/oxidized/.config/oxidized

      - /volume2/Docker/oxidized/repos:/home/oxidized/.config/oxidized/repos

      - /volume2/Docker/oxidized/ssh:/home/oxidized/.ssh

    networks:

      - librenms_librenms_net

networks:

  librenms_librenms_net:

    external: true

 

Geeknetic Gitea y el Control Total del Código de tu Infraestructura 5

Modificamos adicionalmente el fichero "config" de Oxidized para que use Gitea:

/volume2/Docker/oxidized/config/config

Modificamos la sección "output":

output:

  default: git

  git:

    user: oxidized

    email: oxidized@local

    repo: git@gitea:oxidized/network-configs.git

Configuración Gitea para trabajar con Oxidized

  1. Accedemos a Gitea:

    http://IP:3000

    Geeknetic Gitea y el Control Total del Código de tu Infraestructura 6

     

  2. Dejamos todo por defecto y pulsamos Instalar Gitea:

    Geeknetic Gitea y el Control Total del Código de tu Infraestructura 7

     

  3. Crear usuario: oxidized

    Geeknetic Gitea y el Control Total del Código de tu Infraestructura 8

     

  4. Crear repositorio vacío: network-configs

    Geeknetic Gitea y el Control Total del Código de tu Infraestructura 9

    Geeknetic Gitea y el Control Total del Código de tu Infraestructura 10

    Geeknetic Gitea y el Control Total del Código de tu Infraestructura 11

     

  5. Generar clave SSH en el contenedor Oxidized. La clave privada estará en el contenedor de Oxidized y la pública la subiremos a Gitea:

    docker exec -it oxidized sh -lc 'ssh-keygen -t ed25519 -f /volume2/Docker/oxidized/.ssh/id_ed25519 -N ""'

    O si lo hacéis en portainer como yo:

    ssh-keygen -t ed25519 -f /home/oxidized/.ssh/id_ed25519 -N ""

    Geeknetic Gitea y el Control Total del Código de tu Infraestructura 12

     

  6. Aseguros que los permisos son:

    chmod 700 /home/oxidized/.ssh

    chmod 600 /home/oxidized/.ssh/id_ed25519

    chmod 644 /home/oxidized/.ssh/id_ed25519.pub

    ssh-keyscan -p 22 gitea >> /home/oxidized/.ssh/known_hosts

    chmod 644 /home/oxidized/.ssh/known_hosts

  7. Copiar la clave pública a Gitea → Settings → SSH Keys

    Geeknetic Gitea y el Control Total del Código de tu Infraestructura 13

    Geeknetic Gitea y el Control Total del Código de tu Infraestructura 14

    Geeknetic Gitea y el Control Total del Código de tu Infraestructura 15

    Geeknetic Gitea y el Control Total del Código de tu Infraestructura 16

  8. Indicamos que Gitea usa la clave privada:

    git config --global core.sshCommand "ssh -i /home/oxidized/.ssh/id_ed25519 -o StrictHostKeyChecking=accept-new"

  9. Probar conexión:

    ssh -i /home/oxidized/.ssh/id_ed25519 git@gitea -p 22

    Geeknetic Gitea y el Control Total del Código de tu Infraestructura 17

  10. Clonamos un repositorio:

    cd /home/oxidized/.config/oxidized

    git clone git@gitea:oxidized/network-configs.git

    Geeknetic Gitea y el Control Total del Código de tu Infraestructura 18

Si responde correctamente, ya puedes hacer push. 

Si quieres ver qué pasa en la autenticación

ssh -vvv -i /home/oxidized/.ssh/id_ed25519 git@gitea -p 22

Completas el stack en donde:

  • LibreNMS: Monitoriza
  • Oxidized: Extrae configs
  • Gitea: Versiona y controla cambios

El valor estratégico de versionar red como código

Hay un cambio cultural importante cuando empiezas a tratar las configuraciones de red como código.

Dejas de depender del “administrador que sabe cómo está montado todo” y pasas a un modelo donde el conocimiento está documentado, versionado y trazable.

  • Si alguien modifica un firewall a las 02:00, queda registrado.
  • Si una ACL rompe un servicio, puedes comparar versiones y detectar qué cambió.
  • Si necesitas reconstruir un equipo tras un fallo físico, el histórico está disponible.

Gitea, en este contexto, no es una herramienta accesoria. Es el repositorio oficial del estado de tu red.

Y eso tiene implicaciones serias en continuidad de negocio.

En caso de incidente, disponer de un histórico íntegro, bajo control interno y alineado con tus políticas de backup, puede marcar la diferencia entre horas de diagnóstico o días.

Adicionalmente, en infraestructuras críticas, el servidor de repositorios puede:

  • Ubicarse en una zona de red segmentada.
  • Requerir autenticación multifactor.
  • Integrarse con SIEM corporativo.
  • Ser monitorizado como cualquier activo crítico.

Control Real en entornos donde no hay margen

Conviene ser realistas. Gitea no sustituye una plataforma completa de gestión de configuraciones empresariales. No trae análisis avanzado de compliance ni validación automática de políticas de red.

Su fortaleza es otra, ser un servidor Git fiable, ligero y completamente bajo tu dominio.

Si tu organización ya dispone de herramientas de monitorización como LibreNMS y automatización complementaria, Gitea encaja como pieza central del versionado. Si buscas una suite que lo haga absolutamente todo, quizá necesites combinarlo con otras soluciones.

Pero esa modularidad es precisamente lo que muchos equipos valoran.

En infraestructura crítica no hay margen para la improvisación. Los switches core no entienden de experimentos. Los firewalls no perdonan errores mal documentados. Y las auditorías no aceptan explicaciones vagas.

Adoptar Gitea como repositorio soberano para configuraciones de red no es una moda DevOps aplicada a networking. Es una decisión de gobierno técnico.

  • Significa asumir que el código, aunque sea código de red, es un activo estratégico.
  • Significa que su historial debe estar bajo tu control.
  • Significa que la trazabilidad no depende de terceros.

Puede parecer un detalle menor frente a routers de alto rendimiento o firewalls de última generación. Pero cuando algo falla y necesitas saber exactamente qué cambió, quién lo hizo y cuándo, el valor de tener ese histórico en tu propio servidor se vuelve incuestionable.

En entornos críticos, el control no es opcional. Y Gitea, bien implementado, es una forma pragmática y sólida de ejercerlo.

Fin del Artículo. ¡Cuéntanos algo en los Comentarios!

Redactor del Artículo: Raúl Unzué

Raúl Unzué

Soy un apasionado de la virtualización con más de 20 años de experiencia, especializado en soluciones como VMware(premio vExpert y vExpert Pro desde 2013), Proxmox e Hyper-V. Durante mi carrera, he ayudado a empresas a optimizar sus infraestructuras TI mientras comparto mis conocimientos como redactor IT. Mi objetivo es traducir lo complejo en algo práctico y accesible, combinando teoría con experiencia real. Si te interesa la virtualización, las herramientas TI o simplemente aprender algo nuevo, espero ayudarte con mis artículos.