---
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: 'O guia completo para espelhar o site do FreeBSD, servidores FTP e muito mais'
tags: ["Mirroring", "FreeBSD", "Hub"]
title: 'Espelhando o FreeBSD'
trademarks: ["freebsd", "general"]
---

= Espelhando o 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]
Resumo

Um artigo em andamento sobre como espelhar o FreeBSD, destinado à administradores de hubs.

'''

toc::[]

[NOTE]
====
Não estamos aceitando novos espelhos da comunidade neste momento.
====

[[mirror-contact]]
== Informações de contato

Os coordenadores do Sistema de Espelhamento podem ser contatados por e-mail através de mailto:mirror-admin@FreeBSD.org[mirror-admin@FreeBSD.org]. Também existe a {freebsd-hubs}.

[[mirror-requirements]]
== Requisitos para um site espelho do FreeBSD

[[mirror-diskspace]]
=== Espaço em disco

O espaço em disco é um dos requisitos mais importantes. Dependendo do conjunto de versões, arquiteturas e grau de completude que você deseja espelhar, uma enorme quantidade de espaço em disco pode ser consumida. Além disso, espelhos _oficiais_ provavelmente precisam ser completos. As páginas da web devem sempre ser espelhadas completamente. Observe também que os números aqui declarados refletem o estado atual (em {rel120-current}-RELEASE/{rel113-current}-RELEASE). O desenvolvimento e os lançamentos futuros só aumentarão a quantidade necessária. Certifique-se também de manter cerca de 10-20% de espaço extra apenas para garantir. Aqui estão alguns números aproximados:

* Distribuição FTP completa: 1.4 TB
* Deltas do CTM: 10 GB
* Páginas Web: 1GB

O uso atual de disco da distribuição FTP pode ser encontrado em link:ftp://ftp.FreeBSD.org/pub/FreeBSD/dir.sizes[ftp://ftp.FreeBSD.org/pub/FreeBSD/dir.sizes].

[[mirror-bandwidth]]
=== Conexão de Rede/Largura de Banda

Claro, você precisa estar conectado à Internet. A largura de banda necessária depende do uso pretendido do site espelho. Se você quiser espelhar apenas algumas partes do FreeBSD para uso na sua rede local/intranet, a demanda pode ser muito menor do que se você quiser disponibilizar os arquivos publicamente. Se você pretende se tornar um site espelho oficial, a largura de banda necessária será ainda maior. Podemos apenas dar estimativas aproximadas aqui:

* Site local, sem acesso público: basicamente não há mínimo, mas menos de 2 Mbps pode tornar a sincronização muito lenta.
* Site público não oficial: 34 Mbps provavelmente é um bom começo.
* Site oficial: é recomendado ter mais de 100 Mbps, e seu host deve estar conectado o mais próximo possível do seu roteador de borda.

[[mirror-system]]
=== Requisitos de Sistema, CPU, RAM

Uma coisa que isso depende é o número esperado de clientes, que é determinado pela política do servidor. Também é afetado pelos tipos de serviços que você deseja oferecer. Serviços FTP ou HTTP simples podem não requerer uma quantidade enorme de recursos. Tenha cuidado se você fornecer o rsync. Isso pode ter um grande impacto nos requisitos de CPU e memória, pois ele é considerado um devorador de memória. Os dados seguintes são apenas exemplos para dar uma ideia aproximada.

Para um site moderadamente visitado que oferece rsync, você pode considerar uma CPU atual com cerca de 800 MHz - 1 GHz e pelo menos 512MB de RAM. Isso provavelmente é o mínimo que você deseja para um site _oficial_.

Para um site com visitação frequente, você definitivamente vai precisar de mais memória RAM (considere 2 GB como um bom ponto de partida) e possivelmente de mais poder de processamento (CPU), o que pode significar que você precisará ir para um sistema multiprocessado (SMP).

Você também deve considerar um subsistema de disco rápido. As operações no repositório SVN requerem um subsistema de disco rápido (RAID é altamente recomendado). Um controlador SCSI que tenha seu próprio cache também pode acelerar as coisas, uma vez que a maioria desses serviços incorre em um grande número de pequenas modificações no disco.

[[mirror-services]]
=== Serviços para oferecer

Cada site espelho deve ter um conjunto de serviços básicos disponíveis. Além desses serviços obrigatórios, há vários serviços opcionais que os administradores de servidor podem escolher oferecer. Esta seção explica quais serviços você pode fornecer e como implementá-los.

[[mirror-serv-ftp]]
==== FTP (necessário para o conjunto de arquivos do FTP)

Este é um dos serviços mais básicos e é necessário para cada espelho que oferece distribuições por meio de FTP publico. O acesso FTP deve ser anônimo e não são permitidas proporções de upload/download (algo ridículo de qualquer maneira). A capacidade de upload não é necessária (e _nunca_ deve ser permitida para o espaço de arquivos do FreeBSD). Além disso, os arquivos do FreeBSD devem estar disponíveis sob o caminho [.filename]#/pub/FreeBSD#.

Existem diversos softwares disponíveis que podem ser configurados para operar como um servidor de FTP anônimo. Por exemplo (em ordem alfabética).

* `/usr/libexec/ftpd`: O próprio ftpd do FreeBSD pode ser usado. Certifique-se de ler man:ftpd[8].
* package:ftp/ncftpd[] Um pacote comercial, gratuito para uso educacional.
* package:ftp/oftpd[]: Um servidor FTP projetado com segurança como foco principal.
* package:ftp/proftpd[]: Um ftpd modular e muito flexível.
* package:ftp/pure-ftpd[]: Outro servidor FTP desenvolvido com segurança em mente.
* package:ftp/twoftpd[]: Como acima.
* package:ftp/vsftpd[]: O ftpd "muito seguro".

O `ftpd` do FreeBSD, o `proftpd` e talvez o `ncftpd` estão entre os FTPds mais comumente usados. Os outros não têm uma grande base de usuários entre os sites espelho. Uma coisa a considerar é que você pode precisar de flexibilidade para limitar quantas conexões simultâneas são permitidas, limitando assim quanto de largura de banda de rede e recursos do sistema são consumidos.

[[mirror-serv-rsync]]
==== Rsync (opcional para o conjunto de arquivos do FTP)

O Rsync é frequentemente oferecido para acesso ao conteúdo da área FTP do FreeBSD, para que outros sites espelho possam usar seu sistema como fonte. O protocolo é diferente do FTP de muitas maneiras. É muito mais amigável para a largura de banda, pois apenas as diferenças entre os arquivos são transferidas em vez de arquivos inteiros quando são alterados. O Rsync requer uma quantidade significativa de memória para cada instância. O tamanho depende do tamanho do módulo sincronizado em termos do número de diretórios e arquivos. O Rsync pode usar `rsh` e `ssh` (agora padrão) como transporte ou usar seu próprio protocolo para acesso autônomo (este é o método preferido para servidores Rsync públicos). A autenticação, limites de conexão e outras restrições podem ser aplicadas. Há apenas um pacote de software disponível:

* package:net/rsync[]

[[mirror-serv-http]]
==== HTTP (necessário para as páginas web, opcional para o conjunto de arquivos do FTP)

Se você deseja oferecer as páginas web do FreeBSD, precisará instalar um servidor web. Você pode opcionalmente oferecer o conjunto de arquivos FTP via HTTP. A escolha do software do servidor web é deixada a critério do administrador do espelho. Algumas das opções mais populares são:

* package:www/apache24[]: O Apache ainda é um dos servidores da Web mais amplamente implantados na Internet. Ele é usado extensivamente pelo Projeto FreeBSD.
* package:www/boa[]: O Boa é um servidor HTTP de single-task. Ao contrário dos servidores web tradicionais, ele não faz um fork para cada conexão recebida, nem faz muitas cópias de si mesmo para lidar com várias conexões. contudo, ele deve fornecer um desempenho consideravelmente melhor para conteúdo puramente estático.
* package:www/cherokee[]: O Cherokee é um servidor web muito rápido, flexível e fácil de configurar. Ele suporta as tecnologias amplamente utilizadas hoje em dia: FastCGI, SCGI, PHP, CGI, conexões criptografadas SSL/TLS, vhosts, autenticação de usuários, codificação on the fly e balanceamento de carga. Ele também gera arquivos de log compatíveis com o Apache.
* package:www/lighttpd[]: O lighttpd é um servidor web seguro, rápido, compatível com os padrões e muito flexível o qual foi otimizado para ambientes de alto desempenho. Tem um consumo de memória muito baixo em comparação com outros servidores Web, bem como um baixo consumo de CPU.
* package:www/nginx[]: O nginx é um servidor web de borda de alta performance com uma pegada de memória baixa e recursos importantes para construir uma infraestrutura web moderna e eficiente. Os recursos incluem um servidor HTTP, proxy reverso HTTP e de e-mail, cache, balanceamento de carga, compressão, limitação de solicitações, multiplexação e reutilização de conexões, offload SSL e streaming de mídia HTTP.
* package:www/thttpd[]: Se você vai servir uma grande quantidade de conteúdo estático, pode descobrir que usar um aplicativo como o thttpd é mais eficiente do que outros. Ele também é otimizado para ter um excelente desempenho no FreeBSD.

[[mirror-howto]]
== Como espelhar o FreeBSD

Ok, agora você conhece os requisitos e sabe como oferecer os serviços, mas não sabe como obtê-los. :-) Esta seção explica como realmente espelhar as várias partes do FreeBSD, quais ferramentas utilizar e de onde espelhar.

[[mirror-ftp-rsync]]
=== Espelhando o site FTP

A área FTP possui a maior quantidade de dados que precisa ser espelhada. Inclui os _conjuntos de distribuição_ necessários para instalação via rede, os _branches_, que são na verdade snapshots dos diretórios de código fonte, as _imagens ISO_ para gravar CD-ROMs com a distribuição de instalação, um sistema de arquivos live (ao vivo) e um snapshot da árvore de ports. Tudo, é claro, para várias versões do FreeBSD e várias arquiteturas.

A melhor maneira de espelhar a área FTP é com o rsync. Você pode instalar o pacote pelo port: net/rsync[] e, em seguida, usar o rsync para sincronizar com seu host upstream. O rsync já foi mencionado em <<mirror-serv-rsync>>. Como o acesso rsync não é obrigatório, seu site upstream preferido pode não permiti-lo. Você pode precisar procurar um pouco para encontrar um site que permita o acesso rsync.

[NOTE]
====
Como o número de clientes rsync terá um impacto significativo no processamento do servidor, a maioria dos administradores impõe limitações em seu servidor. Para um espelho, você deve perguntar ao mantenedor do site de onde está sincronizando sobre sua política e talvez pedir uma exceção para seu host (já que você é um espelho).
====

Um exemplo de linha de comando para espelhar o FreeBSD pode ser verificada abaixo:

[source, shell]
....
% rsync -vaHz --delete rsync://ftp4.de.FreeBSD.org/FreeBSD/ /pub/FreeBSD/
....

Consulte a documentação do rsync, que também está disponível em http://rsync.samba.org/[http://rsync.samba.org/], sobre as várias opções a serem usadas com o rsync. Se você sincronizar o módulo inteiro (ao contrário de subdiretórios), esteja ciente de que o diretório do módulo (aqui "FreeBSD") não será criado, portanto, você não pode omitir o diretório de destino. Além disso, você pode querer configurar um framework de script que chame esse comando via man:cron[8].

[[mirror-www]]
=== Espelhando as páginas WWW

[WARNING]
====
Desde a migração da documentação para Hugo/Asciidoctor em 25/01/2021, a sincronização do site com rsync não funciona mais.
====

Existem estudos em andamento para implementar um espelho do website com extref:{handbook}mirrors/[infraestrutura oficial].

Para os antigos espelhos do website, uma maneira de obter o espelhamento hoje em dia é construir o site localmente com o endereço correspondente em que será hospedado.

[source, shell]
....
% cd website && env HUGO_baseURL="https://www.XX.freebsd.org/" make
....

Verifique mais detalhes sobre as ferramentas de construção no livro extref:{fdp-primer}overview/[Primer do Projeto de Documentação do FreeBSD para Novos Contribuidores, overview-quick-start].

////
[source,shell]
....
% rsync -vaHz --delete rsync://bit0.us-west.freebsd.org/FreeBSD-www-data/ /usr/local/www/
....
////

[NOTE]
====
Observe que o site foi dividido em www.FreeBSD.org e docs.FreeBSD.org, e existem links entre eles; além disso, no momento, a variável `HUGO_baseURL` não cobrirá todos os links, dessa forma, o espelhamento do site não é encorajado.
====

[[mirror-pkgs]]
=== Espelhando os Pacotes

Devido aos requisitos muito altos de largura de banda, armazenamento e administração, o Projeto FreeBSD decidiu não permitir espelhos públicos de pacotes pré compilados. Para sites com muitas máquinas, pode ser vantajoso executar um proxy HTTP com cache habilitado para o processo man:pkg[8]. Alternativamente, pacotes específicos e suas dependências podem ser baixados executando algo como o seguinte:

[source, shell]
....
% pkg fetch -d -o /usr/local/mirror vim
....

Quando esses pacotes forem baixados, os metadados do repositório devem ser gerados executando:

[source, shell]
....
% pkg repo /usr/local/mirror
....

Depois que os pacotes forem baixados e os metadados do repositório forem gerados, sirva os pacotes para as máquinas clientes via HTTP. Para obter informações adicionais, consulte as páginas man do man:pkg[8], especificamente a página man:pkg-repo[8].

[[mirror-how-often]]
=== Com que frequência eu devo atualizar o conteúdo do meu site espelho?

Todo espelho deve ser atualizado pelo menos uma vez por dia. Certamente, um script com bloqueio para evitar que várias execuções ocorram ao mesmo tempo será necessário para ser executado pelo man:cron[8]. Como cada administrador faz isso de sua própria maneira, instruções específicas não podem ser fornecidas. Este processo poderia funcionar , por exemplo, desta forma:

[.procedure]
====
. Coloque o comando para executar sua aplicação de espelhamento em um script. O uso de um script `/bin/sh` simples é recomendado.
. Adicione alguns redirecionamentos de saída para que as mensagens de diagnóstico sejam registradas em um arquivo.
. Teste se o seu script funciona. Verifique os logs.
. Use o man:crontab[1] para adicionar o script ao man:crontab[5] do usuário apropriado. Este deve ser um usuário diferente do que seu daemon FTP é executado, para que, se as permissões de arquivo dentro de sua área FTP não forem legíveis por todo o mundo, esses arquivos não possam ser acessados pelo FTP anônimo. Isso é usado para "preparar" as releases - garantindo que todos os sites de espelho oficiais tenham todos os arquivos da release necessários no dia do seu lançamento.
====

Aqui estão alguns agendamentos recomendados:

* Conjunto de arquivos FTP: diariamente
* Páginas WWW: diariamente

[[mirror-where]]
== De onde fazer o espelhamento

Esta é uma questão importante. Portanto, esta seção dedicará algum esforço para explicar o os motivos que estão por trás desta orientação. Diremos isso várias vezes: em nenhuma circunstância você deve espelhar a partir de `ftp.FreeBSD.org`.

[[mirror-where-organization]]
=== Algumas palavras sobre a organização

Os espelhos são organizados por país. Todos os espelhos oficiais têm uma entrada DNS com a forma `ftpN.CC.FreeBSD.org`. _CC_ (ou seja, código do país) é o _domínio de nível superior_ (TLD) do país onde esse espelho está localizado. _N_ é um número, indicando que o host seria o _N-ésimo_ espelho nesse país. (O mesmo se aplica a `wwwN.CC.FreeBSD.org`, etc.) Existem espelhos sem a parte _CC_. Esses são os sites de espelho que estão muito bem conectados e permitem um grande número de usuários simultâneos. O `ftp.FreeBSD.org` na verdade são duas máquinas, uma atualmente localizada na Dinamarca e outra nos Estados Unidos. Não é um site principal e nunca deve ser usado para se espelhar a partir dele. Muita documentação online direciona usuários "interativos" para `ftp.FreeBSD.org`, portanto, sistemas automatizados de espelhamento devem encontrar um servidor diferente para espelhar.

Além disso, existe uma hierarquia de espelhos, que é descrita em termos de __níveis__. Os sites principais não são mencionados, mas podem ser descritos como __Nível-0__. Espelhos que espelham a partir desses sites podem ser considerados __Nível-1__, espelhos de espelhos __Nível-1__ são __Nível-2__, etc. Sites oficiais são incentivados a ter um nível baixo, mas quanto mais baixo o nível, maiores os requisitos como descrito em <<mirror-requirements>>. O acesso a espelhos de baixo nível pode ser restrito e o acesso a sites principais é definitivamente restrito. A hierarquia de __nível__ não é refletida pelo DNS e geralmente não é documentada em nenhum lugar, exceto para os sites principais. No entanto, espelhos oficiais com números baixos como 1-4, geralmente são __Nível-1__ (isso é apenas uma dica aproximada e não há regra).

[[mirror-where-where]]
=== Ok, mas de onde devo baixar os arquivos agora?

Em nenhuma circunstância você deve espelhar a partir de `ftp.FreeBSD.org`. A resposta curta é: a partir do site que estiver mais próximo de você em termos de Internet ou que oferecer o acesso mais rápido.

[[mirror-where-simple]]
==== Eu só quero espelhar de algum lugar!

Se você não tem intenções ou requisitos especiais, a afirmação em <<mirror-where-where>> se aplica. Isso significa:

[.procedure]
====
. Verifique quais sites oferecem o acesso mais rápido (número de saltos, tempos de ida e volta) e oferecem os serviços que você pretende usar (como rsync).
. Entre em contato com os administradores do site escolhido, informando sua solicitação e perguntando sobre seus termos e políticas.
. Configure o seu site espelho conforme descrito acima.
====

[[mirror-where-official]]
==== Sou um site espelho oficial, qual é o site certo para mim?

Em geral, a descrição em <<mirror-where-simple>> ainda se aplica. Claro, você pode querer dar mais importância ao fato de que o site upstream deve ter um nível baixo. Existem algumas outras considerações sobre espelhos _oficiais_ que são descritas em <<mirror-official>>.

[[mirror-where-master]]
==== Eu quero acessar os sites principais!

Se você tiver bons motivos e bons pré-requisitos, poderá querer e obter acesso a um dos sites principais. O acesso a esses sites geralmente é restrito e existem políticas especiais para acesso. Se você já é um espelho _oficial_, certamente isso ajuda a obter acesso. Em qualquer outro caso, certifique-se de que seu país realmente precisa de outro espelho. Se já tiver três ou mais, pergunte ao "administrador de zona" (mailto:hostmaster@CC.FreeBSD.org[hostmaster@CC.FreeBSD.org]) ou na {freebsd-hubs} primeiro.

Quem o ajudou a se tornar um espelho _oficial_ deve ter lhe ajudado a obter acesso a um host upstream apropriado, seja um dos sites principais ou um site Tier-1 adequado. Se não, você pode enviar um e-mail para mailto:mirror-admin@FreeBSD.org[mirror-admin@FreeBSD.org] para solicitar ajuda com isso.

Existe um site principal para o conjunto de arquivos FTP.

[[mirror-where-master-ftp]]
===== ftp-master.FreeBSD.org

Este é o site principal do conjunto de arquivos FTP.

O `ftp-master.FreeBSD.org` disponibiliza acesso via rsync, além do FTP. Consulte <<mirror-ftp-rsync>> para obter mais informações.

Também é encorajado que os espelhos permitam o acesso ao rsync para o conteúdo FTP, já que eles são espelhos __Tier-1__.

[[mirror-official]]
== Espelhos Oficiais

Espelhos oficiais são os espelhos que

* a) ter uma entrada DNS `FreeBSD.org` (geralmente um CNAME).
* b) são listados como um espelho oficial na documentação do FreeBSD (como no Handbook).

Até agora, para distinguir espelhos oficiais. Espelhos oficiais não necessariamente são espelhos __Tier-1__. No entanto, provavelmente você não encontrará um espelho __Tier-1__ que não seja oficial.

[[mirror-official-requirements]]
=== Requisitos especiais para sites espelhos oficiais (Tier-1)

Não é tão fácil estabelecer requisitos para todos os espelhos oficiais, já que o projeto é bastante tolerante nesse aspecto. É mais fácil dizer o que é exigido dos _espelhos oficiais de nível 1_. Todos os outros espelhos oficiais devem considerar isso uma grande __recomendação__.

Os sites espelhos Tier-1 precisam:

* ter o conjunto completo de arquivos
* permitir acesso a outros sites espelho
* fornecer acesso FTP e rsync

Além disso, os administradores devem se inscrever no {freebsd-hubs}. Consulte extref:{handbook}[este link, eresources-mail] para obter detalhes sobre como se inscrever.

[IMPORTANT]
====
É _muito_ importante para um administrador de um site espelho, especialmente administradores de espelhos Tier-1, verificar o https://www.FreeBSD.org/releng/[calendário de lançamento] para o próximo release do FreeBSD. Isso é importante porque informará quando o próximo release está programado para sair, dando tempo para se preparar para o grande aumento de tráfego que o segue.

É importante também que os administradores dos hubs tentem manter seus espelhos atualizados o máximo possível (novamente, ainda mais crucial para os espelhos Tier-1). Se o Mirror1 não atualizar por um tempo, os espelhos de nível inferior começarão a espelhar dados antigos do Mirror1 e, assim, começa uma espiral descendente... Mantenha seus espelhos atualizados!
====

[[mirror-official-become]]
=== Como se tornar um site espelho oficial?

Por favor, entre em contato com os Administradores do Cluster conforme documentado em https://www.FreeBSD.org/administration/#t-clusteradm.

[[mirror-statpages]]
== Algumas estatísticas dos sites espelho

Aqui estão os links para as páginas de estatísticas dos seus sites espelho favoritos (também conhecidos como os únicos que têm a boa vontade de fornecer as estatísticas).

[[mirror-statpagesftp]]
=== Estatísticas do site FTP

* ftp.is.FreeBSD.org - mailto:hostmaster@is.FreeBSD.org[hostmaster@is.FreeBSD.org] - http://www.rhnet.is/status/draupnir/draupnir.html[ (Largura de banda)] http://www.rhnet.is/status/ftp/ftp-notendur.html[(Processos FTP)] http://www.rhnet.is/status/ftp/http-notendur.html[(Processos HTTP)]
* ftp2.ru.FreeBSD.org - mailto:mirror@macomnet.ru[mirror@macomnet.ru] - http://mirror.macomnet.net/mrtg/mirror.macomnet.net_195.128.64.25.html[(Largura de banda)] http://mirror.macomnet.net/mrtg/mirror.macomnet.net_proc.html[(Usuários de HTTP e FTP)]
