Si vive y trabaja en algún lugar con Internet más lento y necesita actualizar varios sistemas Debian y / o Ubuntu, apt proxy te hará la vida mucho más fácil y rápida.

APT es el programa que utilizan las distribuciones Debian y Ubuntu Linux para instalar y actualizar su software. En su configuración lista para usar, cuando usa apt para instalar un programa, por ejemplo:

sudo apt install inkscape

APT descargará el archivo de software de los servidores del repositorio de distribución y lo instalará. Esto funciona muy bien cuando el paquete de software es pequeño, solo hay unos pocos archivos que necesitan descargar y su conexión a Internet es rápida.

Sin embargo, si tiene mucho software para instalar y tiene una oficina llena de máquinas que necesitan ser actualizadas y tiene una conexión a Internet lenta, puede llevar mucho tiempo descargar e instalar todo en cada máquina.

Un servidor proxy, específicamente un proxy de almacenamiento en caché, como apt-cacher-ng es un programa que se encuentra entre la computadora que está intentando actualizar y el servidor de repositorio que aloja el software que está descargando. La máquina que está actualizando solicitará el software del servidor proxy en lugar del repositorio, y el proxy enviará la solicitud al repositorio, descargará el software y lo devolverá a la máquina de actualización.

La parte inteligente es que el proxy mantendrá una copia de todos los archivos de software que descargó. Cuando otra máquina de la red local intenta descargar los mismos archivos, es decir, quiere instalar o actualizar el mismo software, el proxy ya tiene una copia que puede entregar a la máquina solicitante sin necesidad de descargarla.

Después de la primera descarga, todas las descargas posteriores se acelerarán a la velocidad de su red local.

Requirements

Para completar esta guía, necesitará lo siguiente:

  • Una pantalla y un teclado para conectar a su Raspberry Pi. Estos son opcionales si puede SSH en su Raspberry Pi.
  • Un usuario no root habilitado para sudo en su Raspberry Pi.
  • Un sistema Debian o Ubuntu en su red local.

Una vez que tenga todos estos requisitos, inicie sesión en una terminal en su Raspberry PI como usuario sudo y continúe con la siguiente sección.

Installing apt-cacher-ng

Antes de instalar cualquier paquete nuevo en Linux, siempre es una buena idea realizar una actualización del sistema. Esto asegurará que su sistema esté ejecutando las mismas versiones de paquetes que están disponibles en los repositorios de distribución y también que su lista local de versiones de paquetes esté actualizada. Hacer esto asegurará que no encuentre ningún error durante la instalación de apt-cacher-ng.

Los siguientes comandos actualizarán su sistema:

$ sudo apt update
$ sudo apt upgrade

Ahora que su Raspberry PI está actualizado, instale apt-cacher-ng :

$ sudo apt install apt-cacher-ng

El instalador le preguntará si desea habilitar los túneles HTTPS a través de apt-cacher-ng. Debe responder "No" a esta pregunta. Configuraremos APT para proxy HTTPS a través de apt-cacher-ng en lugar de necesitar túneles. Además, puede cambiar estas opciones en el apt-cacher-ng archivo de configuración más tarde si lo necesita.

De acuerdo con las convenciones de software modernas, un systemd El archivo de servicio se crea y habilita al instalar apt-cacher-ng. Esto significa que apt-cacher-ng se iniciará automáticamente en el arranque y también puede administrar apt-cacher-ng con los comandos de servicio normales de systemd:

$ sudo systemctl start apt-cacher-ng.service
$ sudo systemctl stop apt-cacher-ng.service
$ sudo systemctl restart apt-cacher-ng.service

apt-cacher-ng ahora se está ejecutando como un demonio del sistema escuchando en el puerto 3142 y listo para aceptar conexiones de apt.

Configuring apt on the Raspberry PI

El primer sistema que configuraremos para usar apt-cacher-ng proxy será apt en el Raspberry PI. La forma en que configuraremos apt utilizar el apt-cacher-ng proxy será volver a escribir las URL en aptarchivo de fuentes. El archivo de fuentes contiene una lista de URL de los repositorios donde el software de distribución está disponible para descargar.

Encontrará el archivo de fuentes principal de Raspbian en /etc/apt/sources.list y en una instalación nueva se ve así:

deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
# deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi

La única línea activa (sin comentarios) aquí es la primera, es decir:

deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi

Necesitamos modificar esta línea para abrir el archivo con un editor de texto, aquí usamos nano:

$ sudo nano /etc/apt/sources.list

Modifique la primera línea para que tenga el siguiente aspecto:

deb http://127.0.0.1:3142/raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi

Lo que hiciste aquí fue insertar 127.0.0.1:3142 en la URL.

La dirección IP 127.0.0.1 es siempre la IP de la computadora local, a menudo denominada "localhost". los :3142 parte indica el puerto.

Guardar y Salir nano presionando CTRL+o, ENTER, CTRL+x.

Ahora deberá realizar el mismo cambio en un archivo de fuentes en /etc/apt/sources.list.d/raspi.list.

apt y apt-cacher-ng ahora están listos para probar.

Testing apt with apt-cacher-ng

Siempre que corras apt almacenará en caché una copia de cualquier archivo que descargue. apt hace esto para no realizar descargas innecesarias y también para mantener una copia local de los archivos de instalación en caso de que sea necesario volver a instalar un paquete y no haya Internet.

Este almacenamiento en caché local significa que apt no se pondrá en contacto con el proxy cuando ejecute apt update or apt upgrade si el repositorio no ha cambiado. Por lo tanto, para probar el proxy, necesitaremos borrar apt caché manualmente. Los siguientes comandos borrarán todos aptpaquetes en caché:

$ sudo rm -rf /var/lib/apt/lists/
$ sudo rm -rf /var/cache/apt/*

Ahora prueba apt ejecutando una actualización y comprobando si hay errores:

$ sudo apt update

Debería ver varias líneas de salida que se parecen a:

Get:1 http://127.0.0.1:3142/raspbian.raspberrypi.org/raspbian buster InRelease [15.0 kB]

El comienzo de la URL http://127.0.0.1:3142/ indica que apt está recibiendo los archivos de actualización de apt-cacher-ng.

También puedes ver el apt-cacher-ng archivo de registro de errores ejecutando este comando:

$ tail -f /var/log/apt-cacher-ng/apt-cacher.log

en una segunda terminal. Si no encuentra ningún error, puede proceder a configurar un sistema Debian o Ubuntu en su red local.

Configuring an Ubuntu or Debian System to use apt-cacher-ng

Los sistemas Debian o Ubuntu de su red local que desea que se beneficien del proxy apt-cacher-ng no necesitan ningún software adicional instalado. Todo lo que necesita hacer es volver a escribir sus archivos de origen para que recopilen todas sus actualizaciones de apt-cacher-ng en lugar de contactar directamente con el repositorio.

El cambio que necesita para realizar los archivos de fuentes es exactamente el mismo que el que realizó en las fuentes en el Raspberry Pi excepto que necesita usar la dirección IP de Raspberry PI en lugar de 127.0.0.1.

Esto significa que primero deberá obtener la dirección IP de su Raspberry Pi. La forma más sencilla de obtener la dirección IP de Raspberry PI es ejecutar el siguiente comando en un terminal de Raspberry PI:

$ hostname -I

Esto imprimirá las direcciones IP que tiene Raspberry PI. Utilice la primera dirección IP IPv4. Aquí, usaré la dirección de ejemplo 192.168.0.2. Deberá sustituir la dirección IP de su Raspberry PI.

De vuelta en la máquina cliente, abra el archivo de fuentes principal usando un editor de texto, aquí usamos nano:

$ sudo nano /etc/apt/sources.list

El archivo contendrá líneas con el mismo formato que las de Raspberry PI. /etc/apt/sources.list. Aquí hay una línea de ejemplo de una instalación de Debian Buster:

deb http://ftp.debian.org/debian buster main

Debe editar estas líneas de la siguiente manera utilizando la IP de su Raspberry PI, por ejemplo:

deb http://192.168.0.2:3142/ftp.debian.org/debian buster main

Edite todas las líneas en /etc/apt/sources.list y cualquier otro archivo de fuentes bajo /etc/apt/sources.list.d/. Luego, elimine los archivos almacenados en caché local para realizar pruebas:

$ sudo rm -rf /var/lib/apt/lists/*
$ sudo rm -rf /var/cache/apt/*

Actualice el sistema nuevamente:

$ sudo apt update
$ sudo apt upgrade

La salida de apt debe indicar que los archivos de actualización provienen del apt-cacher-ng proxy imprimiendo líneas como las siguientes que contienen la IP del proxy:

Hit:1 http://192.168.0.2:3142/ftp.debian.org/debian buster InRelease

Esta máquina está ahora completamente configurada para utilizar su nuevo apt apoderado. Deberá editar cualquier archivo de origen nuevo que agregue a esta máquina en el futuro, incluidas las líneas nuevas que se agreguen para las actualizaciones de distribución.

APT over HTTPS

Todos los archivos fuente que hemos visto hasta ahora han utilizado conexiones HTTP. Esta es una decisión de diseño deliberada de Debian y Ubuntu porque los archivos de instalación tienen firmas criptográficas internas incorporadas que detienen la manipulación maliciosa. HTTPS, por lo tanto, no agrega mucha seguridad adicional al tiempo que aumenta considerablemente la carga de ingeniería de tener una gran cantidad de espejos geográficamente diversos.

Sin embargo, existen varias ventajas de usar HTTPS que significan que algunos repositorios no oficiales usan HTTPS. apt-cacher-ng admite dos métodos de manejo de repositorios HTTPS.

La primera es pasar las conexiones del cliente directamente al servidor del repositorio. Esto tiene la desafortunada consecuencia de que los paquetes no se almacenan en caché por apt-cacher-ng. Si quieres correr apt-cacher-ng en este modo entonces abre /etc/apt-cacher-ng/acng.conf con un editor de texto:

$ sudo nano /etc/apt-cacher-ng/acng.conf

Y agregue la siguiente línea:

PassThroughPattern: .*

Esto configura apt-cacher-ng para permitir que las conexiones HTTPS pasen del cliente al repositorio.

El segundo método consiste en modificar las líneas del repositorio en los archivos fuente del cliente para que el cliente se conecte a apt-cacher-ng a través de HTTP pero apt-cacher-ng luego se conectará al repositorio a través de HTTPS. Los paquetes se descargarán a apt-cacher-ng a través de HTTPS, luego se enviarán a la máquina cliente a través de HTTP. apt-cacher-ng es capaz de almacenar en caché los paquetes y no perdemos los beneficios de HTTPS.

La siguiente línea de fuentes es para acceder al Docker repositorio sobre HTTPS:

deb [arch=amd64] https://download.docker.com/linux/debian buster stable

Cuando editó líneas HTTP, agregó 192.168.0.2:3142 en la URL. Cuando edita líneas HTTPS, debe agregar 192.168.0.2:3142/HTTPS/// p.ej:

deb [arch=amd64] http://192.168.1.67:3142/HTTPS///download.docker.com/linux/debian buster stable

Ahora la máquina cliente solicitará el paquete a apt-cacher-ng a través de HTTP y apt-cacher-ng descargará y almacenará en caché los paquetes de Docker a través de HTTPS.

Administering apt-cacher-ng

Una GUI web está disponible para administrar apt-cacher-ng en su red local. Para acceder a esta GUI, debe apuntar su navegador a:

http://<Proxy IP>:3142/acng-report.html

Sustituyendo la IP de red local de ejemplo, 192.168.0.2, Nos da:

http://192.168.0.2:3142/acng-report.html

La primera y más importante sección de la GUI, "Estadísticas de transferencia", le proporciona información sobre la cantidad de datos descargados de los repositorios frente a los datos que se han servido desde la caché. La siguiente imagen muestra esta sección de la GUI:

La sección "Eficiencia de la caché" le informa cuántos archivos apt-cacher-ngSe sirve desde su caché Vs cuáles omitieron el caché. "Hits" indican archivos que el proxy sirvió desde la caché y "Misses" son archivos que la máquina proxy descargó del repositorio y agregó a la caché.

Managing the cache

Los archivos que apt-cacher-ng Las descargas y los servicios a las máquinas cliente en su red local se volverán obsoletos cuando los desarrolladores agreguen una nueva versión al repositorio. Cuando esto ocurre, estos rancios apt-cacher-ng debe eliminarlos de la caché, ya que ya no son necesarios y ocupan espacio en su disco. Raspberry PI revisa la caché y elimina los archivos obsoletos automáticamente.

Cuando instaló apt-cacher-ng también instalaste un cron archivar en:

/etc/cron.daily/apt-cacher-ng

Esto se ejecuta por cron cada día que borra el caché por ti.

Si desea revisar y borrar el caché manualmente, debe iniciar sesión en la GUI web y hacer clic en el botón "Iniciar análisis y / o caducidad". Por lo general, no es necesario hacerlo, pero es posible que deba hacerlo si está actualizando desde repositorios de actualización rápida.

Ahora tienes un eficiente apt proxy que aliviará la carga de la red de actualizaciones del sistema grandes y repetidas en su oficina u hogar.

Interesado en explorar Raspberry Pi, mira este curso en línea.