805 lines
		
	
	
	
		
			28 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			805 lines
		
	
	
	
		
			28 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <?xml version="1.0" encoding="iso-8859-1"?>
 | |
| <!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
 | |
| 	"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
 | |
| <article xmlns="http://docbook.org/ns/docbook"
 | |
|   xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
 | |
|   xml:lang="en">
 | |
|   <info>
 | |
|     <title>Mirroring FreeBSD</title>
 | |
| 
 | |
|     <authorgroup>
 | |
|       <author>
 | |
| 	<personname>
 | |
| 	  <firstname>Jun</firstname>
 | |
| 	  <surname>Kuriyama</surname>
 | |
| 	</personname>
 | |
| 	<affiliation>
 | |
| 	  <address>
 | |
| 	    <email>kuriyama@FreeBSD.org</email>
 | |
| 	  </address>
 | |
| 	</affiliation>
 | |
|       </author>
 | |
|       <author>
 | |
| 	<personname>
 | |
| 	  <firstname>Valentino</firstname>
 | |
| 	  <surname>Vaschetto</surname>
 | |
| 	</personname>
 | |
| 	<affiliation>
 | |
| 	  <address>
 | |
| 	    <email>logo@FreeBSD.org</email>
 | |
| 	  </address>
 | |
| 	</affiliation>
 | |
|       </author>
 | |
|       <author>
 | |
| 	<personname>
 | |
| 	  <firstname>Daniel</firstname>
 | |
| 	  <surname>Lang</surname>
 | |
| 	</personname>
 | |
| 	<affiliation>
 | |
| 	  <address>
 | |
| 	    <email>dl@leo.org</email>
 | |
| 	  </address>
 | |
| 	</affiliation>
 | |
|       </author>
 | |
|       <author>
 | |
| 	<personname>
 | |
| 	  <firstname>Ken</firstname>
 | |
| 	  <surname>Smith</surname>
 | |
| 	</personname>
 | |
| 	<affiliation>
 | |
| 	  <address>
 | |
| 	    <email>kensmith@FreeBSD.org</email>
 | |
| 	  </address>
 | |
| 	</affiliation>
 | |
|       </author>
 | |
|     </authorgroup>
 | |
| 
 | |
|     <legalnotice xml:id="trademarks" role="trademarks">
 | |
|       &tm-attrib.freebsd;
 | |
|       &tm-attrib.general;
 | |
|     </legalnotice>
 | |
| 
 | |
|     <pubdate>$FreeBSD$</pubdate>
 | |
| 
 | |
|     <releaseinfo>$FreeBSD$</releaseinfo>
 | |
| 
 | |
|     <abstract>
 | |
|       <para>An in-progress article on how to mirror FreeBSD, aimed at
 | |
| 	hub administrators.</para>
 | |
|     </abstract>
 | |
|   </info>
 | |
| 
 | |
|   <note>
 | |
|     <para>We are not accepting new mirrors at this time.</para>
 | |
|   </note>
 | |
| 
 | |
|   <sect1 xml:id="mirror-contact">
 | |
|     <title>Contact Information</title>
 | |
| 
 | |
|     <para>The Mirror System Coordinators can be reached through email
 | |
|       at <email>mirror-admin@FreeBSD.org</email>.  There is also
 | |
|       a &a.hubs;.</para>
 | |
|   </sect1>
 | |
| 
 | |
|   <sect1 xml:id="mirror-requirements">
 | |
|     <title>Requirements for FreeBSD Mirrors</title>
 | |
| 
 | |
|     <sect2 xml:id="mirror-diskspace">
 | |
|       <title>Disk Space</title>
 | |
| 
 | |
|       <para>Disk space is one of the most important requirements.
 | |
| 	Depending on the set of releases, architectures, and degree of
 | |
| 	completeness you want to mirror, a huge amount of disk space
 | |
| 	may be consumed.  Also keep in mind that
 | |
| 	<emphasis>official</emphasis> mirrors are probably required to
 | |
| 	be complete.  The web pages should always be mirrored
 | |
| 	completely.  Also note that the numbers stated here are
 | |
| 	reflecting the current state (at
 | |
| 	&rel.current;-RELEASE/&rel1.current;-RELEASE).  Further
 | |
| 	development and releases will only increase the required
 | |
| 	amount.  Also make sure to keep some (ca. 10-20%) extra space
 | |
| 	around just to be sure.  Here are some approximate
 | |
| 	figures:</para>
 | |
| 
 | |
|       <itemizedlist>
 | |
| 	<listitem>
 | |
| 	  <para>Full FTP Distribution: 1.4 TB</para>
 | |
| 	</listitem>
 | |
| 	<listitem>
 | |
| 	  <para>CTM deltas: 10 GB</para>
 | |
| 	</listitem>
 | |
| 	<listitem>
 | |
| 	  <para>Web pages: 1GB</para>
 | |
| 	</listitem>
 | |
|       </itemizedlist>
 | |
| 
 | |
|       <para>The current disk usage of FTP Distribution can be found at
 | |
| 	<link
 | |
| 	  xlink:href="ftp://ftp.FreeBSD.org/pub/FreeBSD/dir.sizes">ftp://ftp.FreeBSD.org/pub/FreeBSD/dir.sizes</link>.</para>
 | |
|     </sect2>
 | |
|     <sect2 xml:id="mirror-bandwidth">
 | |
|       <title>Network Connection/Bandwidth</title>
 | |
| 
 | |
|       <para>Of course, you need to be connected to the Internet.  The
 | |
| 	required bandwidth depends on your intended use of the mirror.
 | |
| 	If you just want to mirror some parts of FreeBSD for local use
 | |
| 	at your site/intranet, the demand may be much smaller than if
 | |
| 	you want to make the files publicly available.  If you intend
 | |
| 	to become an official mirror, the bandwidth required will be
 | |
| 	even higher.  We can only give rough estimates here:</para>
 | |
| 
 | |
|       <itemizedlist>
 | |
| 	<listitem>
 | |
| 	  <para>Local site, no public access: basically no minimum,
 | |
| 	    but < 2 Mbps could make syncing too
 | |
| 	    slow.</para>
 | |
| 	</listitem>
 | |
| 
 | |
| 	<listitem>
 | |
| 	  <para>Unofficial public site: 34 Mbps is probably a good
 | |
| 	    start.</para>
 | |
| 	</listitem>
 | |
| 
 | |
| 	<listitem>
 | |
| 	  <para>Official site: > 100 Mbps is recommended, and your
 | |
| 	    host should be connected as close as possible to your
 | |
| 	    border router.</para>
 | |
| 	</listitem>
 | |
|       </itemizedlist>
 | |
|     </sect2>
 | |
| 
 | |
|     <sect2 xml:id="mirror-system">
 | |
|       <title>System Requirements, CPU, RAM</title>
 | |
| 
 | |
|       <para>One thing this depends on the expected number of clients,
 | |
| 	which is determined by the server's policy.  It is also
 | |
| 	affected by the types of services you want to offer.  Plain
 | |
| 	FTP or HTTP services may not require a huge amount of
 | |
| 	resources.  Watch out if you provide rsync.  This can have a
 | |
| 	huge impact on CPU and memory requirements as it is considered
 | |
| 	a memory hog.  The following are just examples to give you a
 | |
| 	very rough hint.</para>
 | |
| 
 | |
|       <para>For a moderately visited site that offers
 | |
| 	<application>rsync</application>, you might consider a current
 | |
| 	CPU with around 800MHz - 1 GHz, and at least 512MB RAM. This
 | |
| 	is probably the minimum you want for an
 | |
| 	<emphasis>official</emphasis> site.</para>
 | |
| 
 | |
|       <para>For a frequently used site you definitely need more RAM
 | |
| 	(consider 2GB as a good start) and possibly more CPU, which
 | |
| 	could also mean that you need to go for a SMP system.</para>
 | |
| 
 | |
|       <para>You also want to consider a fast disk subsystem.
 | |
| 	Operations on the SVN repository require a fast disk subsystem
 | |
| 	(RAID is highly advised).  A SCSI controller that has a cache
 | |
| 	of its own can also speed up things since most of these
 | |
| 	services incur a large number of small modifications to the
 | |
| 	disk.</para>
 | |
|     </sect2>
 | |
| 
 | |
|     <sect2 xml:id="mirror-services">
 | |
|       <title>Services to Offer</title>
 | |
| 
 | |
|       <para>Every mirror site is required to have a set of core
 | |
| 	services available.  In addition to these required services,
 | |
| 	there are a number of optional services that server
 | |
| 	administrators may choose to offer.  This section explains
 | |
| 	which services you can provide and how to go about
 | |
| 	implementing them.</para>
 | |
| 
 | |
|       <sect3 xml:id="mirror-serv-ftp">
 | |
| 	<title>FTP (required for FTP Fileset)</title>
 | |
| 
 | |
| 	<para>This is one of the most basic services, and it is
 | |
| 	  required for each mirror offering public FTP distributions.
 | |
| 	  FTP access must be anonymous, and no upload/download ratios
 | |
| 	  are allowed (a ridiculous thing anyway).  Upload capability
 | |
| 	  is not required (and <emphasis>must</emphasis> never be
 | |
| 	  allowed for the FreeBSD file space).  Also the FreeBSD
 | |
| 	  archive should be available under the path
 | |
| 	  <filename>/pub/FreeBSD</filename>.</para>
 | |
| 
 | |
| 	<para>There is a lot of software available which can be set up
 | |
| 	  to allow anonymous FTP (in alphabetical order).</para>
 | |
| 
 | |
| 	<itemizedlist>
 | |
| 	  <listitem>
 | |
| 	    <para><command>/usr/libexec/ftpd</command>: FreeBSD's own
 | |
| 	      ftpd can be used.  Be sure to read &man.ftpd.8;.</para>
 | |
| 	  </listitem>
 | |
| 
 | |
| 	  <listitem>
 | |
| 	    <para><package>ftp/ncftpd</package>: A commercial package,
 | |
| 	      free for educational use.</para>
 | |
| 	  </listitem>
 | |
| 
 | |
| 	  <listitem>
 | |
| 	    <para><package>ftp/oftpd</package>: An ftpd designed with
 | |
| 	      security as a main focus.</para>
 | |
| 	  </listitem>
 | |
| 
 | |
| 	  <listitem>
 | |
| 	    <para><package>ftp/proftpd</package>: A modular and very
 | |
| 	      flexible ftpd.</para>
 | |
| 	  </listitem>
 | |
| 
 | |
| 	  <listitem>
 | |
| 	    <para><package>ftp/pure-ftpd</package>: Another ftpd
 | |
| 	      developed with security in mind.</para>
 | |
| 	  </listitem>
 | |
| 
 | |
| 	  <listitem>
 | |
| 	    <para><package>ftp/twoftpd</package>: As
 | |
| 	      above.</para>
 | |
| 	  </listitem>
 | |
| 
 | |
| 	  <listitem>
 | |
| 	    <para><package>ftp/vsftpd</package>: The <quote>very
 | |
| 		secure</quote> ftpd.</para>
 | |
| 	  </listitem>
 | |
| 	</itemizedlist>
 | |
| 
 | |
| 	<para>FreeBSD's <application>ftpd</application>,
 | |
| 	  <application>proftpd</application> and maybe
 | |
| 	  <application>ncftpd</application> are among the most
 | |
| 	  commonly used FTPds.  The others do not have a large
 | |
| 	  userbase among mirror sites.  One thing to consider is that
 | |
| 	  you may need flexibility in limiting how many simultaneous
 | |
| 	  connections are allowed, thus limiting how much network
 | |
| 	  bandwidth and system resources are consumed.</para>
 | |
|       </sect3>
 | |
| 
 | |
|       <sect3 xml:id="mirror-serv-rsync">
 | |
| 	<title>Rsync (optional for FTP Fileset)</title>
 | |
| 
 | |
| 	<para><application>Rsync</application> is often offered for
 | |
| 	  access to the contents of the FTP area of FreeBSD, so other
 | |
| 	  mirror sites can use your system as their source.  The
 | |
| 	  protocol is different from FTP in many ways.  It is much
 | |
| 	  more bandwidth friendly, as only differences between files
 | |
| 	  are transferred instead of whole files when they change.
 | |
| 	  <application>Rsync</application> does require a significant
 | |
| 	  amount of memory for each instance.  The size depends on the
 | |
| 	  size of the synced module in terms of the number of
 | |
| 	  directories and files.  <application>Rsync</application> can
 | |
| 	  use <command>rsh</command> and <command>ssh</command> (now
 | |
| 	  default) as a transport, or use its own protocol for
 | |
| 	  stand-alone access (this is the preferred method for public
 | |
| 	  rsync servers).  Authentication, connection limits, and
 | |
| 	  other restrictions may be applied.  There is just one
 | |
| 	  software package available:</para>
 | |
| 
 | |
| 	<itemizedlist>
 | |
| 	  <listitem>
 | |
| 	    <para><package>net/rsync</package></para>
 | |
| 	  </listitem>
 | |
| 	</itemizedlist>
 | |
|       </sect3>
 | |
| 
 | |
|       <sect3 xml:id="mirror-serv-http">
 | |
| 	<title>HTTP (required for Web Pages, Optional for FTP
 | |
| 	  Fileset)</title>
 | |
| 
 | |
| 	<para>If you want to offer the FreeBSD web pages, you will
 | |
| 	  need to install a web server.  You may optionally offer the
 | |
| 	  FTP fileset via HTTP.  The choice of web server software is
 | |
| 	  left up to the mirror administrator.  Some of the most
 | |
| 	  popular choices are:</para>
 | |
| 
 | |
| 	<itemizedlist>
 | |
| 	  <listitem>
 | |
| 	    <para><package>www/apache24</package>:
 | |
| 	      <application>Apache</application> is still one of the
 | |
| 	      most widely deployed web servers on the Internet.  It is
 | |
| 	      used extensively by the FreeBSD Project.</para>
 | |
| 	  </listitem>
 | |
| 
 | |
| 	  <listitem>
 | |
| 	    <para><package>www/boa</package>:
 | |
| 	      <application>Boa</application> is a single-tasking HTTP
 | |
| 	      server.  Unlike traditional web servers, it does not
 | |
| 	      fork for each incoming connection, nor does it fork many
 | |
| 	      copies of itself to handle multiple connections.
 | |
| 	      Although, it should provide considerably great
 | |
| 	      performance for purely static content.</para>
 | |
| 	  </listitem>
 | |
| 
 | |
| 	  <listitem>
 | |
| 	    <para><package>www/cherokee</package>:
 | |
| 	      <application>>Cherokee</application> is a very fast,
 | |
| 	      flexible and easy to configure web server.  It supports
 | |
| 	      the widespread technologies nowadays: FastCGI, SCGI,
 | |
| 	      PHP, CGI, SSL/TLS encrypted connections, vhosts, users
 | |
| 	      authentication, on the fly encoding and load balancing.
 | |
| 	      It also generates <application>Apache</application>
 | |
| 	      compatible log files.</para>
 | |
| 	  </listitem>
 | |
| 
 | |
| 	  <listitem>
 | |
| 	    <para><package>www/lighttpd</package>:
 | |
| 	      <application>lighttpd</application> is a secure, fast,
 | |
| 	      compliant and very flexible web server which has been
 | |
| 	      optimized for high-performance environments.  It has a
 | |
| 	      very low memory footprint compared to other web servers
 | |
| 	      and takes care of cpu-load.</para>
 | |
| 	  </listitem>
 | |
| 
 | |
| 	  <listitem>
 | |
| 	    <para><package>www/nginx</package>:
 | |
| 	      <application>nginx</application> is a high performance
 | |
| 	      edge web server with a low memory footprint and key
 | |
| 	      features to build a modern and efficient web
 | |
| 	      infrastructure.  Features include a HTTP server, HTTP
 | |
| 	      and mail reverse proxy, caching, load balancing,
 | |
| 	      compression, request throttling, connection multiplexing
 | |
| 	      and reuse, SSL offload and HTTP media streaming.</para>
 | |
| 	  </listitem>
 | |
| 
 | |
| 	  <listitem>
 | |
| 	    <para><package>www/thttpd</package>: If you are going to
 | |
| 	      be serving a large amount of static content you may find
 | |
| 	      that using an application such as
 | |
| 	      <application>thttpd</application> is more efficient than
 | |
| 	      others.  It is also optimized for excellent performance
 | |
| 	      on FreeBSD.</para>
 | |
| 	  </listitem>
 | |
| 	</itemizedlist>
 | |
|       </sect3>
 | |
|     </sect2>
 | |
|   </sect1>
 | |
| 
 | |
|   <sect1 xml:id="mirror-howto">
 | |
|     <title>How to Mirror FreeBSD</title>
 | |
| 
 | |
|     <para>Ok, now you know the requirements and how to offer the
 | |
|       services, but not how to get it.  :-) This section explains how
 | |
|       to actually mirror the various parts of FreeBSD, what tools to
 | |
|       use, and where to mirror from.</para>
 | |
| 
 | |
|     <sect2 xml:id="mirror-ftp-rsync">
 | |
|       <title>Mirroring the FTP Site</title>
 | |
| 
 | |
|       <para>The FTP area is the largest amount of data that needs to
 | |
| 	be mirrored.  It includes the <emphasis>distribution
 | |
| 	  sets</emphasis> required for network installation, the
 | |
| 	<emphasis>branches</emphasis> which are actually snapshots of
 | |
| 	checked-out source trees, the <emphasis>ISO Images</emphasis>
 | |
| 	to write CD-ROMs with the installation distribution, a live
 | |
| 	file system, and a snapshot of the ports tree.  All of course
 | |
| 	for various FreeBSD versions, and various
 | |
| 	architectures.</para>
 | |
| 
 | |
|       <para>The best way to mirror the FTP area is
 | |
| 	<application>rsync</application>.  You can install the port
 | |
| 	<package>net/rsync</package> and then use rsync to sync with
 | |
| 	your upstream host.  <application>rsync</application> is
 | |
| 	already mentioned in <xref linkend="mirror-serv-rsync"/>.
 | |
| 	Since <application>rsync</application> access is not required,
 | |
| 	your preferred upstream site may not allow it.  You may need
 | |
| 	to hunt around a little bit to find a site that allows
 | |
| 	<application>rsync</application> access.</para>
 | |
| 
 | |
|       <note>
 | |
| 	<para>Since the number of <application>rsync</application>
 | |
| 	  clients will have a significant impact on the server
 | |
| 	  machine, most admins impose limitations on their server.
 | |
| 	  For a mirror, you should ask the site maintainer you are
 | |
| 	  syncing from about their policy, and maybe an exception for
 | |
| 	  your host (since you are a mirror).</para>
 | |
|       </note>
 | |
| 
 | |
|       <para>A command line to mirror FreeBSD might look like:</para>
 | |
| 
 | |
|       <screen>&prompt.user; <userinput>rsync -vaHz --delete rsync://ftp4.de.FreeBSD.org/FreeBSD/ /pub/FreeBSD/</userinput></screen>
 | |
| 
 | |
|       <para>Consult the documentation for
 | |
| 	<application>rsync</application>, which is also available at
 | |
| 	<link
 | |
| 	  xlink:href="http://rsync.samba.org/">http://rsync.samba.org/</link>,
 | |
| 	about the various options to be used with rsync.  If you sync
 | |
| 	the whole module (unlike subdirectories), be aware that the
 | |
| 	module-directory (here "FreeBSD") will not be created, so you
 | |
| 	cannot omit the target directory.  Also you might want to set
 | |
| 	up a script framework that calls such a command via
 | |
| 	&man.cron.8;.</para>
 | |
|     </sect2>
 | |
| 
 | |
|     <sect2 xml:id="mirror-www">
 | |
|       <title>Mirroring the WWW Pages</title>
 | |
| 
 | |
|       <para>The FreeBSD website should only be mirrored via
 | |
| 	<application>rsync</application>.</para>
 | |
| 
 | |
|       <para>A command line to mirror the FreeBSD web site might look
 | |
| 	like:</para>
 | |
| 
 | |
|       <screen>&prompt.user; <userinput>rsync -vaHz --delete rsync://bit0.us-west.freebsd.org/FreeBSD-www-data/ /usr/local/www/</userinput></screen>
 | |
|     </sect2>
 | |
| 
 | |
|     <sect2 xml:id="mirror-pkgs">
 | |
|       <title>Mirroring Packages</title>
 | |
| 
 | |
|       <para>Due to very high requirements of bandwidth, storage and
 | |
| 	adminstration the &os; Project has decided not to allow public
 | |
| 	mirrors of packages.  For sites with lots of machines, it
 | |
| 	might be advantagous to run a caching HTTP proxy for the
 | |
| 	&man.pkg.8; process.  Alternatively specific packages and
 | |
| 	their dependencies can be fetched by running something like
 | |
| 	the following:</para>
 | |
| 
 | |
|       <screen>&prompt.user; <userinput>pkg fetch -d -o <replaceable>/usr/local/mirror</replaceable> <replaceable>vim</replaceable></userinput></screen>
 | |
| 
 | |
|       <para>Once those packages have been fetched, the repository
 | |
| 	metadata must be generated by running:</para>
 | |
| 
 | |
|       <screen>&prompt.user; <userinput>pkg repo <replaceable>/usr/local/mirror</replaceable></userinput></screen>
 | |
| 
 | |
|       <para>Once the packages have been fetched and the metadata for
 | |
| 	the repository has been generated, serve the packages up to
 | |
| 	the client machines via HTTP.  For additional information see
 | |
| 	the man pages for &man.pkg.8;, specifically the
 | |
| 	&man.pkg-repo.8; page.</para>
 | |
|     </sect2>
 | |
| 
 | |
|     <sect2 xml:id="mirror-how-often">
 | |
|       <title>How Often Should I Mirror?</title>
 | |
| 
 | |
|       <para>Every mirror should be updated at a minimum of once per
 | |
| 	day.  Certainly a script with locking to prevent multiple runs
 | |
| 	happening at the same time will be needed to run from
 | |
| 	&man.cron.8;.  Since nearly every admin does this in their own
 | |
| 	way, specific instructions cannot be provided.  It could work
 | |
| 	something like this:</para>
 | |
| 
 | |
|       <procedure>
 | |
| 	<step>
 | |
| 	  <para>Put the command to run your mirroring application in a
 | |
| 	    script.  Use of a plain <command>/bin/sh</command> script
 | |
| 	    is recommended.</para>
 | |
| 	</step>
 | |
| 
 | |
| 	<step>
 | |
| 	  <para>Add some output redirections so diagnostic messages
 | |
| 	    are logged to a file.</para>
 | |
| 	</step>
 | |
| 
 | |
| 	<step>
 | |
| 	  <para>Test if your script works.  Check the logs.</para>
 | |
| 	</step>
 | |
| 
 | |
| 	<step>
 | |
| 	  <para>Use &man.crontab.1; to add the script to the
 | |
| 	    appropriate user's &man.crontab.5;.  This should be a
 | |
| 	    different user than what your FTP daemon runs as so that
 | |
| 	    if file permissions inside your FTP area are not
 | |
| 	    world-readable those files cannot be accessed by anonymous
 | |
| 	    FTP.  This is used to <quote>stage</quote> releases
 | |
| 	    — making sure all of the official mirror sites have
 | |
| 	    all of the necessary release files on release day.</para>
 | |
| 	</step>
 | |
|       </procedure>
 | |
| 
 | |
|       <para>Here are some recommended schedules:</para>
 | |
| 
 | |
|       <itemizedlist>
 | |
| 	<listitem>
 | |
| 	  <para>FTP fileset: daily</para>
 | |
| 	</listitem>
 | |
| 	<listitem>
 | |
| 	  <para>WWW pages: daily</para>
 | |
| 	</listitem>
 | |
|       </itemizedlist>
 | |
|     </sect2>
 | |
|   </sect1>
 | |
| 
 | |
|   <sect1 xml:id="mirror-where">
 | |
|     <title>Where to Mirror From</title>
 | |
| 
 | |
|     <para>This is an important issue.  So this section will spend some
 | |
|       effort to explain the backgrounds.  We will say this several
 | |
|       times: under no circumstances should you mirror from <systemitem
 | |
| 	class="fqdomainname">ftp.FreeBSD.org</systemitem>.</para>
 | |
| 
 | |
|     <sect2 xml:id="mirror-where-organization">
 | |
|       <title>A few Words About the Organization</title>
 | |
| 
 | |
|       <para>Mirrors are organized by country.  All official mirrors
 | |
| 	have a DNS entry of the form <systemitem
 | |
| 	  class="fqdomainname">ftpN.CC.FreeBSD.org</systemitem>.
 | |
| 	<emphasis>CC</emphasis> (i.e., country code) is the
 | |
| 	<emphasis>top level domain</emphasis> (TLD) of the country
 | |
| 	where this mirror is located.  <emphasis>N</emphasis> is a
 | |
| 	number, telling that the host would be the
 | |
| 	<emphasis>Nth</emphasis> mirror in that country.  (Same
 | |
| 	applies to <systemitem>wwwN.CC.FreeBSD.org</systemitem>, etc.)
 | |
| 	There are mirrors with no <emphasis>CC</emphasis> part.  These
 | |
| 	are the mirror sites that are very well connected and allow a
 | |
| 	large number of concurrent users.  <systemitem
 | |
| 	  class="fqdomainname">ftp.FreeBSD.org</systemitem> is
 | |
| 	actually two machines, one currently located in Denmark and
 | |
| 	the other in the United States.  It is
 | |
| 	<emphasis>NOT</emphasis> a master site and should never be
 | |
| 	used to mirror from.  Lots of online documentation leads
 | |
| 	<quote>interactive</quote>users to <systemitem
 | |
| 	  class="fqdomainname">ftp.FreeBSD.org</systemitem> so
 | |
| 	automated mirroring systems should find a different machine to
 | |
| 	mirror from.</para>
 | |
| 
 | |
|       <para>Additionally there exists a hierarchy of mirrors, which is
 | |
| 	described in terms of <emphasis>tiers</emphasis>.  The master
 | |
| 	sites are not referred to but can be described as
 | |
| 	<emphasis>Tier-0</emphasis>.  Mirrors that mirror from these
 | |
| 	sites can be considered <emphasis>Tier-1</emphasis>, mirrors
 | |
| 	of <emphasis>Tier-1</emphasis>-mirrors, are
 | |
| 	<emphasis>Tier-2</emphasis>, etc.  Official sites are
 | |
| 	encouraged to be of a low <emphasis>tier</emphasis>, but the
 | |
| 	lower the tier the higher the requirements in terms as
 | |
| 	described in <xref linkend="mirror-requirements"/>.  Also
 | |
| 	access to low-tier-mirrors may be restricted, and access to
 | |
| 	master sites is definitely restricted.  The
 | |
| 	<emphasis>tier</emphasis>-hierarchy is not reflected by DNS
 | |
| 	and generally not documented anywhere except for the master
 | |
| 	sites.  However, official mirrors with low numbers like 1-4,
 | |
| 	are usually <emphasis>Tier-1</emphasis> (this is just a rough
 | |
| 	hint, and there is no rule).</para>
 | |
|     </sect2>
 | |
| 
 | |
|     <sect2 xml:id="mirror-where-where">
 | |
|       <title>Ok, but Where Should I get the Stuff Now?</title>
 | |
| 
 | |
|       <para>Under no circumstances should you mirror from <systemitem
 | |
| 	  class="fqdomainname">ftp.FreeBSD.org</systemitem>.  The
 | |
| 	short answer is: from the site that is closest to you in
 | |
| 	Internet terms, or gives you the fastest access.</para>
 | |
| 
 | |
|       <sect3 xml:id="mirror-where-simple">
 | |
| 	<title>I Just Want to Mirror from Somewhere!</title>
 | |
| 
 | |
| 	<para>If you have no special intentions or requirements, the
 | |
| 	  statement in <xref linkend="mirror-where-where"/> applies.
 | |
| 	  This means:</para>
 | |
| 
 | |
| 	<procedure>
 | |
| 	  <step>
 | |
| 	    <para>Check for those which provide fastest access (number
 | |
| 	      of hops, round-trip-times) and offer the services you
 | |
| 	      intend to use (like
 | |
| 	      <application>rsync</application>).</para>
 | |
| 	  </step>
 | |
| 
 | |
| 	  <step>
 | |
| 	    <para>Contact the administrators of your chosen site
 | |
| 	      stating your request, and asking about their terms and
 | |
| 	      policies.</para>
 | |
| 	  </step>
 | |
| 
 | |
| 	  <step>
 | |
| 	    <para>Set up your mirror as described above.</para>
 | |
| 	  </step>
 | |
| 	</procedure>
 | |
|       </sect3>
 | |
| 
 | |
|       <sect3 xml:id="mirror-where-official">
 | |
| 	<title>I am an Official Mirror, What is the Right Rite for
 | |
| 	  Me?</title>
 | |
| 
 | |
| 	<para>In general the description in <xref
 | |
| 	    linkend="mirror-where-simple"/> still applies.  Of course
 | |
| 	  you may want to put some weight on the fact that your
 | |
| 	  upstream should be of a low tier.  There are some other
 | |
| 	  considerations about <emphasis>official</emphasis> mirrors
 | |
| 	  that are described in <xref
 | |
| 	    linkend="mirror-official"/>.</para>
 | |
|       </sect3>
 | |
| 
 | |
|       <sect3 xml:id="mirror-where-master">
 | |
| 	<title>I Want to Access the Master Sites!</title>
 | |
| 
 | |
| 	<para>If you have good reasons and good prerequisites, you may
 | |
| 	  want and get access to one of the master sites.  Access to
 | |
| 	  these sites is generally restricted, and there are special
 | |
| 	  policies for access.  If you are already an
 | |
| 	  <emphasis>official</emphasis> mirror, this certainly helps
 | |
| 	  you getting access.  In any other case make sure your
 | |
| 	  country really needs another mirror.  If it already has
 | |
| 	  three or more, ask the <quote>zone administrator</quote>
 | |
| 	  (<email>hostmaster@CC.FreeBSD.org</email>) or &a.hubs;
 | |
| 	  first.</para>
 | |
| 
 | |
| 	<para>Whoever helped you become, an
 | |
| 	  <emphasis>official</emphasis> should have helped you gain
 | |
| 	  access to an appropriate upstream host, either one of the
 | |
| 	  master sites or a suitable Tier-1 site.  If not, you can
 | |
| 	  send email to <email>mirror-admin@FreeBSD.org</email> to
 | |
| 	  request help with that.</para>
 | |
| 
 | |
| 	<para>There is one master site for the FTP fileset.</para>
 | |
| 
 | |
| 	<sect4 xml:id="mirror-where-master-ftp">
 | |
| 	  <title>ftp-master.FreeBSD.org</title>
 | |
| 
 | |
| 	  <para>This is the master site for the FTP fileset.</para>
 | |
| 
 | |
| 	  <para><systemitem>ftp-master.FreeBSD.org</systemitem>
 | |
| 	    provides <application>rsync</application> access, in
 | |
| 	    addition to FTP.  Refer to <xref
 | |
| 	      linkend="mirror-ftp-rsync"/>.</para>
 | |
| 
 | |
| 	  <para>Mirrors are also encouraged to allow
 | |
| 	    <application>rsync</application> access for the FTP
 | |
| 	    contents, since they are
 | |
| 	    <emphasis>Tier-1</emphasis>-mirrors.</para>
 | |
| 	</sect4>
 | |
|       </sect3>
 | |
|     </sect2>
 | |
|   </sect1>
 | |
| 
 | |
|   <sect1 xml:id="mirror-official">
 | |
|     <title>Official Mirrors</title>
 | |
| 
 | |
|     <para>Official mirrors are mirrors that</para>
 | |
| 
 | |
|     <itemizedlist>
 | |
|       <listitem>
 | |
| 	<para>a) have a <systemitem>FreeBSD.org</systemitem> DNS entry
 | |
| 	  (usually a CNAME).</para>
 | |
|       </listitem>
 | |
| 
 | |
|       <listitem>
 | |
| 	<para>b) are listed as an official mirror in the FreeBSD
 | |
| 	  documentation (like handbook).</para>
 | |
|       </listitem>
 | |
|     </itemizedlist>
 | |
| 
 | |
|     <para>So far to distinguish official mirrors.  Official mirrors
 | |
|       are not necessarily <emphasis>Tier-1</emphasis>-mirrors.
 | |
|       However you probably will not find a
 | |
|       <emphasis>Tier-1</emphasis>-mirror, that is not also
 | |
|       official.</para>
 | |
| 
 | |
|     <sect2 xml:id="mirror-official-requirements">
 | |
|       <title>Special Requirements for Official (tier-1)
 | |
| 	Mirrors</title>
 | |
| 
 | |
|       <para>It is not so easy to state requirements for all official
 | |
| 	mirrors, since the project is sort of tolerant here.  It is
 | |
| 	more easy to say, what <emphasis>official tier-1
 | |
| 	  mirrors</emphasis> are required to.  All other official
 | |
| 	mirrors can consider this a big
 | |
| 	<emphasis>should</emphasis>.</para>
 | |
| 
 | |
|       <para>Tier-1 mirrors are required to:</para>
 | |
| 
 | |
|       <itemizedlist>
 | |
| 	<listitem>
 | |
| 	  <para>carry the complete fileset</para>
 | |
| 	</listitem>
 | |
| 
 | |
| 	<listitem>
 | |
| 	  <para>allow access to other mirror sites</para>
 | |
| 	</listitem>
 | |
| 
 | |
| 	<listitem>
 | |
| 	  <para>provide <application>FTP</application> and
 | |
| 	    <application>rsync</application> access</para>
 | |
| 	</listitem>
 | |
|       </itemizedlist>
 | |
| 
 | |
|       <para>Furthermore, admins should be subscribed to the &a.hubs;.
 | |
| 	See <link
 | |
| 	  xlink:href="https://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/eresources.html#ERESOURCES-MAIL">this
 | |
| 	  link</link> for details, how to subscribe.</para>
 | |
| 
 | |
|       <important>
 | |
| 	<para>It is <emphasis>very</emphasis> important for a hub
 | |
| 	  administrator, especially Tier-1 hub admins, to check the
 | |
| 	  <link xlink:href="https://www.FreeBSD.org/releng/">release
 | |
| 	    schedule</link> for the next FreeBSD release.  This is
 | |
| 	  important because it will tell you when the next release is
 | |
| 	  scheduled to come out, and thus giving you time to prepare
 | |
| 	  for the big spike of traffic which follows it.</para>
 | |
| 
 | |
| 	<para>It is also important that hub administrators try to keep
 | |
| 	  their mirrors as up-to-date as possible (again, even more
 | |
| 	  crucial for Tier-1 mirrors).  If Mirror1 does not update for
 | |
| 	  a while, lower tier mirrors will begin to mirror old data
 | |
| 	  from Mirror1 and thus begins a downward spiral... Keep your
 | |
| 	  mirrors up to date!</para>
 | |
|       </important>
 | |
|     </sect2>
 | |
| 
 | |
|     <sect2 xml:id="mirror-official-become">
 | |
|       <title>How to Become Official Then?</title>
 | |
| 
 | |
|       <!--
 | |
|       <para>An interesting question, especially, since the state of
 | |
| 	being official comes with some benefits, like a much higher
 | |
| 	bill from your ISP as more people will be using your site.
 | |
| 	Also it may be a key requirement to get access to a master
 | |
| 	site.</para>
 | |
| 
 | |
|       <para>Before applying, please consider (again) if another
 | |
| 	official mirror is really needed for your region. Check first
 | |
| 	with your zone administrator
 | |
| 	(<email>hostmaster@CC.FreeBSD.org</email>) or, if that fails,
 | |
| 	ask on the &a.hubs;.</para>
 | |
| 
 | |
|       <para>Ok, here is how to do it:</para>
 | |
| 
 | |
|       <procedure>
 | |
| 	<step>
 | |
| 	  <para>Get the mirror running in first place (maybe not using
 | |
| 	    a master site, yet).</para>
 | |
| 	</step>
 | |
| 
 | |
| 	<step>
 | |
| 	  <para><ulink
 | |
| 	      url="https://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/eresources.html#ERESOURCES-MAIL">Subscribe</ulink>
 | |
| 	    to the &a.hubs;.</para>
 | |
| 	</step>
 | |
| 
 | |
| 	<step>
 | |
| 	  <para>If everything works so far, contact the DNS
 | |
| 	    administrator responsible for your region/country, and ask
 | |
| 	    for a DNS entry for your site. The admin should able to be
 | |
| 	    contacted via <email>hostmaster@CC.FreeBSD.org</email>,
 | |
| 	    where <emphasis>CC</emphasis> is your country code/TLD.
 | |
| 	    Your DNS entry will be as described in <xref
 | |
| 	      linkend="mirror-where-organization"/>.</para>
 | |
| 
 | |
| 	  <para>If there is no subdomain set up for your country yet,
 | |
| 	    you should contact
 | |
| 	    <email>mirror-admin@FreeBSD.org</email>, or you can try
 | |
| 	    the &a.hubs; first.</para>
 | |
| 	</step>
 | |
| 
 | |
| 	<step>
 | |
| 	  <para>Whoever helps you get an official name should send
 | |
| 	    email to <email>mirror-admin@FreeBSD.org</email> so your
 | |
| 	    site will be added to the mirror list in the <ulink
 | |
| 	      url="https://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook">FreeBSD
 | |
| 	      Handbook</ulink>.</para>
 | |
| 	</step>
 | |
|       </procedure>
 | |
| 
 | |
|       <para>That is it.</para>
 | |
| -->
 | |
| 
 | |
|       <para>We are not accepting any new mirrors at this time.</para>
 | |
|     </sect2>
 | |
|   </sect1>
 | |
| 
 | |
|   <sect1 xml:id="mirror-statpages">
 | |
|     <title>Some Statistics from Mirror Sites</title>
 | |
| 
 | |
|     <para>Here are links to the stat pages of your favorite mirrors
 | |
|       (aka the only ones who feel like providing stats).</para>
 | |
| 
 | |
|     <sect2 xml:id="mirror-statpagesftp">
 | |
|       <title>FTP Site Statistics</title>
 | |
| 
 | |
|       <itemizedlist>
 | |
| 	<listitem>
 | |
| 	  <para>ftp.is.FreeBSD.org -
 | |
| 	    <email>hostmaster@is.FreeBSD.org</email> - <link
 | |
| 	      xlink:href="http://www.rhnet.is/status/draupnir/draupnir.html">
 | |
| 	      (Bandwidth)</link> <link
 | |
| 	      xlink:href="http://www.rhnet.is/status/ftp/ftp-notendur.html">(FTP
 | |
| 	      processes)</link> <link
 | |
| 	      xlink:href="http://www.rhnet.is/status/ftp/http-notendur.html">(HTTP
 | |
| 	      processes)</link></para>
 | |
| 	</listitem>
 | |
| 
 | |
| 	<listitem>
 | |
| 	  <para>ftp2.ru.FreeBSD.org -
 | |
| 	    <email>mirror@macomnet.ru</email> - <link
 | |
| 	      xlink:href="http://mirror.macomnet.net/mrtg/mirror.macomnet.net_195.128.64.25.html">(Bandwidth)</link>
 | |
| 	    <link
 | |
| 	      xlink:href="http://mirror.macomnet.net/mrtg/mirror.macomnet.net_proc.html">(HTTP
 | |
| 	      and FTP users)</link></para>
 | |
| 	</listitem>
 | |
|       </itemizedlist>
 | |
|     </sect2>
 | |
|   </sect1>
 | |
| </article>
 |