Home » Crear mirror de Ubuntu
mirrors de ubuntu

Crear mirror de Ubuntu

La configuración de un mirror de Ubuntu es un procedimiento sencillo de unos pocos pasos. Aquí te vas a enterar de cómo hacerlo sin mucho esfuerzo.

¿Te has preguntado cómo crear un mirror de Ubuntu para descarga local y rápida de paquetes en tu empresa? Yo sí, recientemente, y aquí te contaré cómo lo hice.

Conceptos

Qué es un mirror de Ubuntu

Algunos lo conocen simplemente como repositorio. Un mirror de Ubuntu es un servidor que aloja copias de los archivos de los repositorios del sistema operativo Ubuntu.

Estos repositorios incluyen paquetes de software, actualizaciones y otros archivos esenciales para el funcionamiento y mantenimiento del sistema Ubuntu. Los mirrors están distribuidos geográficamente para mejorar la velocidad de acceso y la fiabilidad para los usuarios en todo el mundo.

Contenido

  • Paquetes: Archivos binarios precompilados para aplicaciones de software.
  • Actualizaciones: Parches de seguridad, correcciones de errores y actualizaciones de versión para el software existente.
  • Código Fuente: El código fuente original de los paquetes de software, disponible para los usuarios que prefieren compilar el software ellos mismos.
  • Archivos de Instalación: Imágenes ISO y otros archivos necesarios para instalar Ubuntu.

Tipos de Mirrors

  • Mirrors Oficiales: Mantenidos por Canonical, la empresa detrás de Ubuntu, o sus socios de confianza.
  • Mirrors No Oficiales: Mantenidos por voluntarios u organizaciones que eligen apoyar a la comunidad de Ubuntu.

Estructura

  • Repositorio Principal (Main): Contiene los paquetes del sistema core esenciales para el funcionamiento de Ubuntu.
  • Repositorio Universe: Incluye una gran colección de software adicional mantenido por la comunidad de Ubuntu.
  • Repositorio Restricted: Contiene controladores y firmware propietarios necesarios para cierto hardware.
  • Repositorio Multiverse: Contiene software que no es libre o tiene restricciones legales.

Configuración

Para crear un mirror de Ubuntu debemos seguir estos pasos:

1. Preparar un servidor dedicado

Las características de hardware pueden depender mucho de cada entorno, según la cantidad de versiones de Ubuntu a replicar, según cantidad de equipos cliente a servir, entre otros. Pero estos podrían ser unas características mínimas bastante conservadoras:

  • Ubuntu Server 22.04 o superior
  • 2 GB de RAM
  • 2 vCPUs
  • 1 TB de disco (redundante, montado en /mirror)

El directorio bajo el cual se almacenará el contenido del mirror es /mirror y en esa ruta debería estar montado un disco de gran capacidad, preferentemente redundante con RAID o alguna alternativa equivalente.

2. Instalar dependencias

La creación de un mirror de Ubuntu se puede realizar con distintas opciones de software. En mi caso, opté hacerlo con Debmirror porque parece estar bien documentada, soportada y vigente.

Así es como instalo debmirror y otros paquetes necesarios:

sudo apt-get install -y apache2 debmirror gnupg xz-utils rsync

3. Ajustes previos

Es necesario crear la estructura de directorios para debmirror de este modo:

sudo mkdir -p \
  /mirror/debmirror/amd64 \
  /mirror/debmirror/mirrorkeyring \
  /mirror/scripts

cd /var/www/html
sudo ln -s /mirror/debmirror/amd64 ubuntu

Los comandos anteriores deberían crear una estructura como se muestra en las siguientes imágenes:

Estructura de directorios bajo /mirror
Estructura de directorios bajo /var/www/html

Ahora es momento de instalar la llave GPG de Ubuntu:

sudo gpg --no-default-keyring \
  --keyring /mirror/debmirror/mirrorkeyring/trustedkeys.gpg \
  --import /usr/share/keyrings/ubuntu-archive-keyring.gpg

4. Script de ayuda

Existe un script que nos simplifica el uso de debmirror y el cual lo debemos descargar como sigue:

cd /mirror/scripts

sudo curl -o debmirroramd64.sh \
  https://louwrentius.com/files/debmirroramd64.sh.txt

sudo chmod +x debmirroramd64.sh

Este script está bastante bien documentado con comentarios. Yo le hice algunos ajustes mínimos como estos:

# Distintos repositorios por cada release deseado: jammy y noble
release=jammy,jammy-security,jammy-updates,jammy-backports,noble,noble-security,noble-updates,noble-backports

# Replica cercana a mi zona geográfica que deseo usar para descargar paquetes
server=pe.archive.ubuntu.com

# Parámetros de debmirror: quitar algunos comentarios y modificar parámetros
# para que quede como se muestra debajo
debmirror       -a $arch \
                --no-source \
                --rsync-options "-aIL --partial" \
                -s $section \
                -h $server \
                -d $release \
                -r $inPath \
                --progress \
                --method=$proto \
                $outPath

5. Descarga inicial

Ahora toca ejecutar el script debmirroramd64.sh y esperar que termine toda la descarga. Esto puede tomar horas, dependiendo de la velocidad a Internet.

Aquí recomiendo el uso de un gestor de sesiones de shell como tmux el cual permite dejar una sesión corriendo en segundo plano en nuestro servidor. De este modo, podemos desconectarnos y dejar que tmux mantenga activos los procesos de shell que posteriormente podemos reanudar.

El script se ejecuta sin ningún parámetro, como sigue:

cd /mirror/scripts
sudo bash debmirroramd64.sh

6. Descarga automática periódica

Una tarea programada cron es indispensable para que debmirror constantemente descargue los nuevos paquetes de actualizaciones.

Una línea como la siguiente debería ser agregada al final del archivo /etc/crontab:

15 */12 * * * root /mirror/scripts/debmirroramd64.sh

Esto hará que se ejecute el script cada 12 horas en el minuto 15.

7. Configuración de clientes

Una vez que nuestro mirror privado de Ubuntu ya está listo, tenemos que realizar una configuración de Virtual Host de Apache y DNS para que se sirva la ruta /var/www/html/ubuntu que apunta a /mirror/debmirror/amd64. Por ejemplo, esto se haría con un nombre como mirror.miempresa.com

De este modo, ahora los clientes Ubuntu que están dentro de nuestra organización pueden configurar sus fuentes de repositorio de paquetes en /etc/apt/sources.list como sigue:

deb http://mirror.miempresa.com/ubuntu noble main restricted universe multiverse
deb http://mirror.miempresa.com/ubuntu noble-security main restricted universe multiverse
deb http://mirror.miempresa.com/ubuntu noble-updates main restricted universe multiverse

Conclusión

Este tutorial ha mostrado paso a paso cómo crear tu propio mirror de Ubuntu. He limitado las opciones de configuración al mínimo posible para hacerlo práctico y fácil de entender.

Si te surge la duda sobre el espacio necesario para hospedar más de un release de Ubuntu, aquí te dejo unos datos:

Estos pesos fueron obtenidos en Junio del 2024, pero conforme avance el tiempo el espacio de disco irá aumentando conforme se añadan más actualizaciones.

Naturalmente, Ubuntu jammy, al ser un release más antiguo, seguirá aumentando de tamaño pero a un ritmo algo más lento que Ubuntu noble. Al cabo de unos años, Ubuntu jammy no recibirá más actualizaciones y su espacio en disco ya no crecerá, mientras que Ubuntu noble sí lo seguirá haciendo.

Espero este artículo te haya sido de utilidad. Nos encontramos en una próxima oportunidad.

Post navigation

Deja un comentario

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *