--- authors: - author: 'Jun Kuriyama' email: kuriyama@FreeBSD.org - author: 'Valentino Vaschetto' email: logo@FreeBSD.org - author: 'Daniel Lang' email: dl@leo.org - author: 'Ken Smith' email: kensmith@FreeBSD.org description: 'La guía todo en uno para crear réplicas de FreeBSD para el sitio web, los servidores FTP y más' tags: ["Mirroring", "FreeBSD", "Hub"] title: 'Crear réplicas de FreeBSD' trademarks: ["freebsd", "general"] --- = Crear réplicas de FreeBSD :doctype: article :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :source-highlighter: rouge :experimental: :images-path: articles/hubs/ ifdef::env-beastie[] ifdef::backend-html5[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] :imagesdir: ../../../images/{images-path} endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] include::../../../../../shared/asciidoctor.adoc[] endif::[] [.abstract-title] Resumen Un artículo en progreso sobre cómo crear una replica de FreeBSD, destinado a los administradores de hub. ''' toc::[] [NOTE] ==== No aceptamos nuevas réplicas en este momento. ==== [[mirror-contact]] == Información de contacto Se puede contactar con los Coordinadores del Sistema de Réplicas en el email mailto:mirror-admin@FreeBSD.org[mirror-admin@FreeBSD.org]. También existe {freebsd-hubs}. [[mirror-requirements]] == Requisitos para las réplicas de FreeBSD [[mirror-diskspace]] === Espacio en disco El espacio en disco es uno de los requisitos más importantes. Dependiendo del conjunto de releases, arquitecturas y cómo de completas quieres que sean tus réplicas, se podría consumir una enorme cantidad de espacio en disco. Ten en cuenta también que para las réplicas _oficiales_ se podría requerir que fueran completos. Las páginas web se tienen que duplicar en la réplica de forma completa. También ten en cuenta que los números utilizados aquí reflejan el estado actual (en {rel120-current}-RELEASE/{rel113-current}-RELEASE). Desarrollos posteriores y releases sólo pueden incrementar las cantidades requeridas. Asegúrate también de tener algo (un 10-20%) de espacio extra para estar seguro. Aquí hay algunos números aproximados: * Distribución FTP completa: 1.4 TB * Deltas de CTM: 10GB * Páginas web: 1GB El uso de disco actual de la Distribución FTP se puede encontrar en link:ftp://ftp.FreeBSD.org/pub/FreeBSD/dir.sizes[ftp://ftp.FreeBSD.org/pub/FreeBSD/dir.sizes]. [[mirror-bandwidth]] === Conexión de red/ancho de banda Por supuesto, necesitas estar conectado a internet. El ancho de banda requerido depende del uso previsto para la replica. Si solo deseas replicar algunas partes de FreeBSD para uso local en tu sitio/intranet, la demanda puede ser mucho menor que si quieres que los archivos estén disponibles públicamente. Si pretendes convertirte en una replica oficial, el ancho de banda requerido será aún mayor. Aquí solo podemos dar estimaciones aproximadas: * Sitio local, sin acceso público: básicamente, no hay un mínimo, pero con < 2 Mbps puede que la sincronización sea muy lenta. * Sitio público no oficial: 34 Mbps es probablemente un buen comienzo. * Sitio oficial: se recomiendan > 100 Mbps, y tu host debe estar conectado lo más cerca posible de tu border router. [[mirror-system]] === Requisitos del sistema, CPU, RAM Esto depende mucho del número de clientes esperado, que está determinado por la política del servidor. El tamaño también se ve afectado por el tipo de servicios que quieres ofrecer. Los servicios FTP o HTTP simples pueden no necesitar una gran cantidad de recursos. Ten cuidado si proporcionas rsync. Esto puede tener un gran impacto en los requisitos de CPU y memoria, ya que este servicio consume una gran cantidad de memoria. Los ejemplos siguientes tienen como objetivo darte una idea bastante aproximada. Para un sitio que ofrece rsync y que sea visitado con frecuencia moderada, podrías considerar una CPU con unos 800MHz - 1 GHz y al menos 512 MB RAM. Este es probablemente el mínimo que quieres para un sitio _oficial_. Si es un sitio con un número de visitas alto, definitivamente, necesita más RAM (2GB es un buen comienzo) y posiblemente más CPU, esto también significa la necesidad de ir hacia un sistema que disponga de SMP. También deberías de considerar un sistema rápido de discos. Las operaciones en el repositorio SVN requieren de un sistema de discos que sea rápido (se recomienda RAID). Un controlador SCSI que disponga de una caché propia también puede acelerar las cosas, ya que la mayoría de estos servicios realizan una gran cantidad de pequeñas modificaciones en el disco. [[mirror-services]] === Servicios a ofrecer Se require que cada replica tenga un conjunto de servicios centrales disponibles. Además de estos servicios que son requeridos, hay una serie de servicios opcionales que los administradores del servidor pueden escoger ofrecerlos o no. Esta sección explica qué servicios puedes proporcionar y cómo implementarlos. [[mirror-serv-ftp]] ==== FTP (requerido para el conjunto de archivos FTP) Este es uno de los servicios más básicos, y es requerido en cada réplica que ofrezca distribuciones FTP públicas. El acceso a FTP debe ser anónimo, y no se permite ningún control sobre las tasas de subida/descarga (de todas formas, es ridículo). La subida de archivos no es necesaria (y _nunca_ debe permitirse en el área donde se guardan los archivos de FreeBSD). Además, los archivos de FreeBSD deben estar disponibles en la ruta [.filename]#/pub/FreeBSD#. Existe una gran cantidad de software disponible que se puede configurar para permitir FTP anónimo (en orden alfabético). * `/usr/libexec/ftpd`: Se puede usar el propio ftpd de FreeBSD. Asegúrate de leer man:ftpd[8]. * package:ftp/ncftpd[]: Un paquete comercial, gratis para uso educativo. * package:ftp/oftpd[]: Un ftpd diseñado con la seguridad como principal objetivo. * package:ftp/proftpd[]: Un ftpd modular y muy flexible. * package:ftp/pure-ftpd[]: Otro ftpd desarrollado con la seguridad como principal objetivo. * package:ftp/twoftpd[]: Lo mismo que el anterior. * package:ftp/vsftpd[]: El ftpd "muy seguro" ("very secure"). `ftpd` de FreeBSD, `proftpd` y quizás `ncftpd` están entre los FTPds más usados. Los otros no tienen una base de usuarios tan grande entre los sitios de réplicas. Algo a considerar es que podrías necesitar flexibilidad para limitar el número de conexiones simultáneas que se permiten, limitando por tanto cuánto ancho de banda y recursos de sistema se consumen. [[mirror-serv-rsync]] ==== Rsync (opcional para el conjunto de archivos FTP) A menudo, se ofrece rsync para acceder a los contenidos del área FTP de FreeBSD, de esta forma, otras réplicas pueden usar tu sistema como su fuente. El protocolo es diferente de FTP en muchos aspectos. Es mucho más amigable con el ancho de banda, ya que solo se transfieren las diferencias entre los archivos en lugar del archivo completo. rsync requiere una cantidad significativa de memoria para cada instancia. El tamaño depende del tamaño del módulo que se vaya a sincronizar, en términos de cantidad de directorios y archivos. rsync puede usar `rsh` y `ssh` (por defecto) como transporte, o usar su propio protocolo para el acceso independiente (este es el método preferido para los servidores de rsync públicos). Se pueden aplicar autenticación, límites de conexión y otras restricciones. Solo hay un paquete de software disponible: * package:net/rsync[] [[mirror-serv-http]] ==== HTTP (requerido para las páginas web, opcional para el conjunto de archivos FTP) Si quieres ofrecer las páginas web de FreeBSD, necesitarás instalar un servidor web. Opcionalmente, puedes ofrecer el conjunto de archivos FTP a través de HTTP. La elección del software del servidor web se deja en manos del administrador de la réplica. Algunas de las opciones más populares son: * package:www/apache24[]: es todavía uno de los servidores web con más despliegues en Internet. Se usa de forma extensiva en el Proyecto FreeBSD. * package:www/boa[]: Boa es un servidor HTTP single-task. A diferencia de los servidores web tradicionales, su proceso no se divide por cada conexión entrante, ni crea varias copias de sí mismo para manejar múltiples conexiones. Aún así, debería proporcionar un rendimiento considerablemente grande para contenido puramente estático. * package:www/cherokee[]: Cherokee es un servidor web muy rápido, flexible y fácil de configurar. Es compatible con las tecnologías más extendidas en la actualidad: FastCGI, SCGI, PHP, CGI, conexiones cifradas SSL/TLS, vhosts, autenticación de usuarios, codificación on the fly y balanceo de carga. También genera archivos logs compatibles con Apache. * package:www/lighttpd[]: es un servidor web seguro, rápido, estándar y muy flexible que ha sido optimizado para entornos de alto rendimiento. Tiene unos requisitos de memoria muy bajos comparados con otros servidores web y se preocupa por la carga de la CPU. * package:www/nginx[]: nginx es un servidor web de alto rendimiento con bajo consumo de memoria y características clave para crear una infraestructura web moderna y eficiente. Las características incluyen, un servidor HTTP, proxy inverso de HTTP y correo electrónico, almacenamiento en caché, balanceo de carga, compresión, limitación de solicitudes, multiplexación y reutilización de conexiones, descarga de SSL y streaming de medios por HTTP. * package:www/thttpd[]: Si vas a ofrecer una gran cantidad de contenido estático, es posible que el uso de una aplicación como thttpd sea más eficiente que otras. También está optimizado para tener un rendimiento excelente en FreeBSD. [[mirror-howto]] == Cómo replicar FreeBSD Ok, ahora ya conoces los requisitos y cómo ofrecer los servicios, pero no cómo obtenerlos. :-) Esta sección explica cómo replicar las distintas partes de FreeBSD, qué herramientas usar y de dónde replicar. [[mirror-ftp-rsync]] === Replicar el sitio FTP El área FTP tiene la mayor cantidad de datos que deben ser replicados. Incluye los _conjuntos de la distribución_ (distribution sets) necesarios para la instalación en red, las _ramas_ (branches) que son snapshots de los árboles del código fuente, las _imagenes ISO_ para grabar CD-ROMs con la distribución de instalación, un sistema de archivos live y un snapshot del árbol de ports. Y claro, todo esto para las diversas versiones y arquitecturas de FreeBSD. La mejor forma de replicar el área de FTP es con rsync. Puedes instalar el port package:net/rsync[] y después utilizar rsync para sincronizar con el servidor origen. rsync ya se menciona en <>. Puesto que el acceso por rsync no es un requisito el sitio desde el que réplicas podrías no permitirlo. Podrías necesitar buscar un poco para encontrar un sitio que te permita acceso por rsync. [NOTE] ==== Dado que el número de clientes de rsync tendrá un impacto significativo en el rendimiento del servidor, la mayoría de los administradores imponen limitaciones en sus servidores. Para una réplica, debes preguntar al mantenedor del sitio con el que se está sincronizando sobre su política, y tal vez, pedir una excepción para tu host (ya que tú eres una réplica). ==== Un ejemplo en la línea de comandos para replicar FreeBSD podría ser de la siguiente forma: [source, shell] .... % rsync -vaHz --delete rsync://ftp4.de.FreeBSD.org/FreeBSD/ /pub/FreeBSD/ .... Consulta la documentación de rsync, que también está disponible en http://rsync.samba.org/[http://rsync.samba.org/], para conocer las distintas opciones que se pueden utilizar. Si sincronizas un módulo completo (a diferencia de subdirectorios), ten en cuenta que el directorio del módulo (aquí "FreeBSD") no se creará, por lo que no puedes omitir el directorio de destino. También podrías querer tener un script que llame a esos comandos via man:cron[8]. [[mirror-www]] === Replicando las páginas WWW [WARNING] ==== Desde la migración de documentos a Hugo/Asciidoctor en 2021-01-25, la replicación del sitio web mediante rsync ya no funciona. ==== Hay estudios en curso para implementar una réplica del sitio web con la extref:{handbook}mirrors/[infraestructura oficial]. Para las réplicas antiguas del sitio web, una forma de conseguir la replicación del sitio web a día de hoy es construir el sitio de forma local con la correspondiente dirección que lo albergará. [source, shell] .... % cd website && env HUGO_baseURL="https://www.XX.freebsd.org/" make .... Visita el libro extref:{fdp-primer}overview/[FreeBSD Documentation Project Primer for New Contributors, overview-quick-start] para más detalles acerca de las herramientas de construcción. //// [source,shell] .... % rsync -vaHz --delete rsync://bit0.us-west.freebsd.org/FreeBSD-www-data/ /usr/local/www/ .... //// [NOTE] ==== Ten en cuenta que el sitio web se ha dividido en www.FreeBSD.org y docs.FreeBSD.org y que hay enlaces entre ellos; además, en este momento la variable `HUGO_baseURL` no cubre todos los enlaces, desaconsejando por lo tanto la replicación del sitio web de esta forma. ==== [[mirror-pkgs]] === Replicando los paquetes El Proyecto FreeBSD ha decidido no permitir la replicación pública de paquetes debido a los altos requisitos de ancho de banda, almacenamiento y administración. Para sitios con muchas máquinas, podría ser una ventaja tener un proxy HTTP para el proceso de man:pkg[8]. De forma alternativa, se pueden descargar paquetes específicos junto con sus dependencias ejecutando algo como lo siguiente: [source, shell] .... % pkg fetch -d -o /usr/local/mirror vim .... Cuando estos paquetes se descarguen, los metadatos del repositorio se deben generar ejecutando: [source, shell] .... % pkg repo /usr/local/mirror .... Una vez que los paquetes se han descargado y que se ha generado la metadata del repositorio, puedes servir los paquetes hasta las máquinas cliente mediante HTTP. Para obtener información adicional, lee las páginas de manual para man:pkg[8], en concreto la página man:pkg-repo[8]. [[mirror-how-often]] === ¿Con qué frecuencia debo actualizar el contenido de mi replica? Cada réplica se debería actualizar como mínimo una vez al día. Seguramente para ejecutar un script desde man:cron[8] el script necesite bloqueos para evitar varias instancias ejecutándose al mismo tiempo. Puesto que prácticamente cada administrador hace esto de una forma distinta, no se pueden proporcionar instrucciones específicas. Podría funcionar algo como esto: [.procedure] ==== . Escribe el comando para ejecutar su réplica en un script. Se recomienda el uso de un script simple de `/bin/sh`. . Agrega algunas redirecciones de salida para que los mensajes de diagnóstico se registren en un archivo. . Comprueba si el script funciona. Comprueba los logs. . Usa man:crontab[1] para añadir el script al man:crontab[5] del usuario correspondiente. Este debería ser un usuario diferente del que utiliza tu demonio de FTP de forma que si los permisos de los ficheros dentro de tu área de FTP no son legibles para todo el mundo esos ficheros no pueden ser accedidos mediante un FTP anónimo. Esto es lo que se usa para "preparar" las releases - asegurarse de que todas las réplicas oficiales tienen todos los ficheros de release el día de la liberación de la misma. ==== Aquí hay algunas programaciones recomendadas: * Conjunto de archivos FTP: diario * Páginas WWW: diario [[mirror-where]] == De donde replicar Este es un punto importante. Así que en esta sección vamos a esforzarnos un poco para explicar los antecedentes. Lo diremos varias veces: bajo ninguna circunstancia deberías replicar desde `ftp.FreeBSD.org`. [[mirror-where-organization]] === Algunas palabras sobre la organización Las réplicas se organizan por país. Todas las réplicas oficiales tienen una entrada DNS de la forma `ftpN.CC.FreeBSD.org`. _CC_ (es decir, código de país o country code) es el _top level domain_ (TLD) del país donde se encuentra la réplica. _N_ es un número que indica que el host debería ser la réplica número _N_ en ese país. (Lo mismo se aplica a `wwwN.CC.FreeBSD.org`, etc.) Hay réplicas sin la parte _CC_. Estas son las réplicas que están bien conectadas y que soportan un gran número concurrente de usuarios. `ftp.FreeBSD.org` son en realidad dos máquinas, una situada actualmente en Dinamarca y la otra en los Estados Unidos. _NO_ es un sitio maestro y no debería utilizarse para replicar desde él. Muchos documentos online guían a los usuarios "interactivos" a `ftp.FreeBSD.org` por lo que lo sistemas automáticos de replicado deberían encontrar una máquina diferente desde la que replicar. Existe además una jerarquía de réplicas que se describe en base a niveles (__tiers__). Los sitios maestros no están referenciados pero se pueden describir como __Tier-0__. Los mirrors que replican de estos sitios se consideran __Tier-1__, réplicas de los __Tier-1__ son __Tier-2__, etc. Se recomienda que los sitios oficiales estén en un __tier__ bajo, pero cuanto más bajo el tier mayores son los requisitos en los términos descritos en <>. Además el acceso a las réplicas de tier bajos podría estar restringido y seguro que el acceso a los sitios maestros está restringido. La jerarquía basada en niveles no tiene relación con DNS y en general no está documentada excepto para los sitios maestros. Sin embargo, las réplicas oficiales con números bajos como 1-4 son normalmente _Tier-1_ (esto es sólo una aproximación, no hay una regla). [[mirror-where-where]] === Ok, pero, ¿de dónde debo descargar los archivos? Bajo ninguna circunstancia deberías replicar desde `ftp.FreeBSD.org`. La respuesta corta es: desde el sitio que está más próximo a ti en términos de Internet, o el que te proporciona el acceso más rápido. [[mirror-where-simple]] ==== ¡Solo quiero crear una réplica de algún sitio! Si no tienes ninguna intención o requisito especial, se aplica lo que se dice en <>. Esto significa: [.procedure] ==== . Comprueba aquellos que proporcionan un acceso rápido (número de saltos, tiempos de ida y vuelta) y que ofrecen servicios que tienes pensado usar (como rsync). . Ponte en contacto con los administradores del sitio elegido, indicando tu solicitud y preguntando acerca de sus términos y políticas. . Configura tu replica como se describe anteriormente. ==== [[mirror-where-official]] ==== Soy una replica oficial, ¿cuál es el sitio correcto para mí? En general la descripción en <> todavía es válida. Por supuesto que podrías darle importancia al hecho de que el servidor desde el que réplicas debería ser de un tier bajo. Hay otras consideraciones acerca de las réplicas _oficiales_ que se describen en <>. [[mirror-where-master]] ==== ¡Quiero acceder a los sitios maestros! Si tienes buenos motivos y prerequisitos podrías necesitar acceso a alguno de los sitios maestros. El acceso a estos sitios está restringido por lo general y hay ciertas políticas de acceso especiales. Si ya eres una réplica _oficial_ eso facilita que obtengas acceso. En cualquier otro caso asegúrate de que tu país realmente necesita otra réplica. Si ya tiene tres o más pregunta primero al "administrador de zona" (mailto:hostmaster@CC.FreeBSD.org[hostmaster@CC.FreeBSD.org]) o {freebsd-hubs}. Quienquiera que te haya ayudado a convertirte en una replica, un _oficial_ (official) debería de haberte ayudado a obtener acceso a un host upstream adecuado, ya sea uno de los sitios maestros o a un Tier-1 adecuado. De lo contrario, puedes enviar un correo electrónico solicitando ayuda a mailto:mirror-admin@FreeBSD.org[mirror-admin@FreeBSD.org]. Hay un sitio maestro para el conjunto de archivos FTP. [[mirror-where-master-ftp]] ===== ftp-master.FreeBSD.org Este es el sitio maestro para el conjunto de archivos FTP. `ftp-master.FreeBSD.org` proporciona acceso rsync, además de por FTP. Lee <>. Se alienta a las réplicas a ofrecer acceso rsync para el contenido de FTP puesto que son réplicas __Tier-1__. [[mirror-official]] == Replicas oficiales Las réplicas oficiales, son réplicas que * a) tienen una entrada DNS tipo `FreeBSD.org` (normalmente un CNAME). * b) son listados como una replica oficial en la documentación de FreeBSD (como el handbook). Hasta aquí cómo se distinguen las réplicas oficiales. Las réplicas oficiales no son necesariamente __Tier-1__. Sin embargo probablemente no encuentres una réplica __Tier-1__ que no sea también oficial. [[mirror-official-requirements]] === Requisitos específicos para las réplicas oficiales (tier-1) No es tan sencillo establecer los requisitos para todas las réplicas oficiales, ya que el proyecto es bastante tolerante al respecto. Es más sencillo decir qué se requiere de una _replica oficial tier-1_. El resto de réplicas oficiales deberían de considerar esto como algo que se _debe de cumplir_. Las réplicas tier-1 están obligadas a: * disponer del conjunto de archivos completo * permitir el acceso a otras réplicas * proporcionar acceso FTP y rsync Es más, los administradores deberían suscribirse a {freebsd-hubs}. Visita See extref:{handbook}[este enlace, eresources-mail] para los detalles sobre cómo suscribirse. [IMPORTANT] ==== Para un administrador de hub, especialmente de hubs Tier-1, es _muy_ importante comprobar la https://www.FreeBSD.org/releng/[release schedule] para la siguiente release. Es importante porque te dirá cuándo está planificada para salir la nueva versión y por lo tanto te da tiempo para prepararte para el pico de tráfico que le sigue. También es importante que los administradores de las réplicas intenten mantenerlas lo más actualizas posible (esto es crucial para las réplicas Tier-1). Si el Mirror1 no se actualiza durante un tiempo, las réplicas de tiers menores comenzarán a replicar los datos antiguos del Mirror1 y, por lo tanto, empezará una espiral descencente... ¡Mantén tus réplicas actualizadas! ==== [[mirror-official-become]] === ¿Entonces, cómo convertirse en una replica oficial? No estamos aceptando nuevas réplicas en este momento. [[mirror-statpages]] == Algunas estadísticas de las réplicas Aquí dispone de enlaces a las páginas de estadísticas de sus réplicas favoritas (también conocidas como las únicas que desean proporcionarlas). [[mirror-statpagesftp]] === Estadísticas de los sitios FTP * ftp.is.FreeBSD.org - mailto:hostmaster@is.FreeBSD.org[hostmaster@is.FreeBSD.org] - http://www.rhnet.is/status/draupnir/draupnir.html[ (Bandwidth)] http://www.rhnet.is/status/ftp/ftp-notendur.html[(FTP processes)] http://www.rhnet.is/status/ftp/http-notendur.html[(HTTP processes)] * ftp2.ru.FreeBSD.org - mailto:mirror@macomnet.ru[mirror@macomnet.ru] - http://mirror.macomnet.net/mrtg/mirror.macomnet.net_195.128.64.25.html[(Bandwidth)] http://mirror.macomnet.net/mrtg/mirror.macomnet.net_proc.html[(HTTP and FTP users)]