<!--#include virtual="/server/header.html" --> <!-- Parent-Version:1.961.98 --> <!-- This page is derived from /server/standards/boilerplate.html --> <title>Using and Running Mirrors - GNU Project - Free Software Foundation</title> <!--#include virtual="/server/po/mirror.translist" --> <!--#include virtual="/server/banner.html" --> <div class="reduced-width" style="width:55em"> <h2>Using and running mirrors</h2> <div class="thin"></div> <h3>Downloading from mirrors</h3> <p>First, for users/downloaders: the address <a href="http://ftpmirror.gnu.org/">http://ftpmirror.gnu.org/</a> multiplexes between the mirrors, trying to choose one that is nearby and up to date. E.g., <a href="http://ftpmirror.gnu.org/emacs/">http://ftpmirror.gnu.org/emacs/</a> goes to a mirror's directory of <a href="/software/emacs/">GNU Emacs</a>. We recommend using this generic ftpmirror.gnu.org address wherever possible in links, documentation, etc., to reduce load on the main GNU server.</p> <h3>Mirroring the GNU FTP server</h3> <p>Mirroring the GNU FTP server requires approximately63GB169GB disk space (as ofFebruary 2017).June 2024). You can rsync directly from ftp.gnu.org:</p> <pre class="emph-box"> rsync -rltpHS --delete-excluded rsync://ftp.gnu.org/gnu/ /your/dir/ </pre> <p>However, please consider mirroring from another site, again to reduce load on the GNU server. These sites provide access to all the material on ftp.gnu.org. They update from us nightly (at least), and you may access them via rsync with the same options as above:</p> <dl class="compact"> <dt>Africa</dt> <dd> <p><!--#set var='mirror' value='<code>rsync://mirror.ufs.ac.za/gnu</code>' --><!--#echo encoding='none' var='mirror' --> (South Africa)</p> </dd> <dt>North America</dt> <dd> <p><!--#set var='mirror'value='<code>rsync://rsync://mirror.0xem.ma/gnu</code>' --><!--#echo encoding='none' var='mirror' --> (Canada)</p> <p><!--#set var='mirror' value='<code>rsync://gnu.mirror.iweb.com/gnu</code>' --><!--#echo encoding='none' var='mirror' --> (Canada)</p> <p><!--#set var='mirror' value='<code>rsync://mirror.sergal.org/gnu</code>' --><!--#echo encoding='none' var='mirror' --> (Canada)</p> <p><!--#set var='mirror'value='<code>rsync://mirror.its.dal.ca/gnu</code>' --><!--#echo encoding='none' var='mirror' --> (Canada)</p> <p><!--#set var='mirror' value='<code>rsync://mirror.csclub.uwaterloo.ca/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (Canada)</p> <p><!--#set var='mirror'value='<code>rsync://gnu.freemirror.org/gnu</code>' --><!--#echo encoding='none' var='mirror' --> (Canada)</p> <p><!--#set var='mirror'value='<code>rsync://mirror2.evolution-host.com/gnu</code>' --><!--#echo encoding='none' var='mirror' --> (Canada)</p> <p><!--#set var='mirror'value='<code>rsync://mirrors.sarata.com/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (Arizona, USA)</p> <p><!--#set var='mirror'value='<code>rsync://mirror.keystealth.org/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (California, USA)</p> <p><!--#set var='mirror' value='<code>rsync://mirrors.ocf.berkeley.edu/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (California, USA)</p> <p><!--#set var='mirror' value='<code>rsync://mirrors.syringanetworks.net/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (Idaho, USA)</p> <p><!--#set var='mirror' value='<code>rsync://mirror.team-cymru.com/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (Illinois, USA)</p> <p><!--#set var='mirror' value='<code>rsync://mirror.leifrogers.com/gnu/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (Indiana, USA)</p><p><!--#set var='mirror' value='<code>rsync://mirrors.tripadvisor.com/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (Massachusetts, USA)</p></dd> <dt>South America</dt> <dd> <p><!--#set var='mirror'value='<code>rsync://mirror.nbtelecom.com.br/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (Brazil)</p> <p><!--#set var='mirror'value='<code>rsync://gnu.c3sl.ufpr.br/gnu/ftp/</code>' --><!--#echo encoding='none' var='mirror' --> (Brazil)</p> <p><!--#set var='mirror' value='<code>rsync://mirror.cedia.org.ec/gnu</code>' --><!--#echo encoding='none' var='mirror' --> (Ecuador)</p> </dd> <dt>Africa</dt> <dd> <p><!--#set var='mirror' value='<code>rsync://mirror.marwan.ma/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (Morocco)</p> </dd> <dt>Asia</dt> <dd> <p><!--#set var='mirror' value='<code>rsync://mirrors.ustc.edu.cn/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (China)</p> <p><!--#set var='mirror' value='<code>rsync://mirrors.tuna.tsinghua.edu.cn/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (China)</p> <p><!--#set var='mirror'value='<code>rsync://mirror-hk.koddos.net/gnu/</code>'value='<code>rsync://ftp.jaist.ac.jp/pub/GNU/</code>' --><!--#echo encoding='none' var='mirror' -->(Hong Kong)</p>(Japan)</p> <p><!--#set var='mirror'value='<code>rsync://ftp.jaist.ac.jp/pub/GNU/</code>'value='<code>rsync://repo.jing.rocks/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (Japan)</p> <p><!--#set var='mirror'value='<code>rsync://ftp.kaist.ac.kr/gnu/</code>'value='<code>rsync://mirror.truenetwork.ru/gnu</code>' --><!--#echo encoding='none' var='mirror' --> (Russia)</p> <p><!--#set var='mirror' value='<code>rsync://mirror.freedif.org/GNU/</code>' --><!--#echo encoding='none' var='mirror' -->(Korea)</p>(Singapore)</p> <p><!--#set var='mirror' value='<code>rsync://mirror.ossplanet.net/gnu</code>' --><!--#echo encoding='none' var='mirror' --> (Taiwan)</p> <p><!--#set var='mirror' value='<code>rsync://mirror.twds.com.tw/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (Taiwan)</p> </dd> <dt>Europe</dt> <dd> <p><!--#set var='mirror' value='<code>rsync://mirror.kumi.systems/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (Austria)</p> <p><!--#set var='mirror' value='<code>rsync://ftp.funet.fi/ftp/pub/gnu/prep/</code>' --><!--#echo encoding='none' var='mirror' --> (Finland)</p> <p><!--#set var='mirror' value='<code>rsync://rsync.cyberbits.eu/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (France)</p> <p><!--#set var='mirror'value='<code>rsync://de.freedif.org/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (Germany)</p> <p><!--#set var='mirror'value='<code>rsync://ftp.fau.de/gnu</code>' --><!--#echo encoding='none' var='mirror' --> (Germany)</p> <p><!--#set var='mirror' value='<code>rsync://ftp.halifax.rwth-aachen.de/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (Germany)</p> <p><!--#set var='mirror' value='<code>rsync://mirror.netcologne.de/gnu</code>' --><!--#echo encoding='none' var='mirror' --> (Germany)</p> <p><!--#set var='mirror'value='<code>rsync://ftp.wrz.de/pub/gnu/</code>'value='<code>rsync://mirror.clientvps.com/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (Germany)</p> <p><!--#set var='mirror' value='<code>rsync://quantum-mirror.hu/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (Hungary)</p> <p><!--#set var='mirror' value='<code>rsync://mirror.ihost.md/gnu</code>' --><!--#echo encoding='none' var='mirror' --> (Moldova)</p> <p><!--#set var='mirror' value='<code>rsync://mirrors.mivocloud.com/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (Moldova)</p> <p><!--#set var='mirror' value='<code>rsync://mirror.lyrahosting.com/gnu</code>' --><!--#echo encoding='none' var='mirror' --> (Netherlands)</p> <p><!--#set var='mirror' value='<code>rsync://ftp.snt.utwente.nl/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (Netherlands)</p> <p><!--#set var='mirror'value='<code>rsync://mirror.koddos.net/gnu</code>'value='<code>rsync://sunsite.icm.edu.pl/pub/gnu/</code>' --><!--#echo encoding='none' var='mirror' -->(Netherlands)</p>(Poland)</p> <p><!--#set var='mirror'value='<code>rsync://gnuftp.uib.no/gnuftp/</code>'value='<code>rsync://mirrors.up.pt/pub/gnu/</code>' --><!--#echo encoding='none' var='mirror' -->(Norway)</p>(Portugal)</p> <p><!--#set var='mirror'value='<code>rsync://mirrors.up.pt/pub/gnu/</code>'value='<code>rsync://mirror.leitecastro.com/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (Portugal)</p> <p><!--#set var='mirror' value='<code>rsync://mirrors.nav.ro/gnu</code>' --><!--#echo encoding='none' var='mirror' --> (Romania)</p> <p><!--#set var='mirror'value='<code>rsync://mirror.sbb.rs/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (Serbia)</p> <p><!--#set var='mirror' value='<code>rsync://ftp.acc.umu.se/mirror/gnu.org/gnu/</code>'value='<code>rsync://mirror.bahnhof.net/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (Sweden)</p> <p><!--#set var='mirror'value='<code>rsync://mirrors.gethosted.online/gnu</code>'value='<code>rsync://mirror.accum.se/mirror/gnu.org/gnu/</code>' --><!--#echo encoding='none' var='mirror' -->(UK)</p>(Sweden)</p> <p><!--#set var='mirror' value='<code>rsync://rsync.mirrorservice.org/ftp.gnu.org/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (UK)</p> <p><!--#set var='mirror' value='<code>rsync://ftp-gnu-org.ip-connect.vn.ua/ftp.gnu.org/</code>' --><!--#echo encoding='none' var='mirror' --> (Ukraine)</p> </dd> <dt>Oceania</dt> <dd> <p><!--#set var='mirror' value='<code>rsync://mirror.lagoon.nc/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (New Caledonia)</p> </dd> </dl> <h3 id="mirror-guidelines">Making your mirror public</h3> <p>You can keep your mirror private, but we will be very grateful if you support free software by making it public. However, your mirror needs to meet the following guidelines to be accepted on our <a href="/prep/ftp.html">public mirror list</a>:</p> <ul> <li>Text (if any) should be as short as possible, and strictly explanatory.</li> <li>Images, including logos, should be avoided by courtesy to people who use devices with small screens, except if the images are on the site being mirrored.</li> <li>The header and footer shouldn't have links, except possibly for bug-reporting. Extra links are annoying for users, and in some cases are considered spam.</li> </ul> <p>To add your mirror to the public mirror list, we require (and recommend) a daily update frequency. <em>After</em> establishing your mirror, please contact <a href="mailto:webmasters@gnu.org"><webmasters@gnu.org></a> so we can review it. Please provide the following:</p> <ul> <li>URL of the mirror (https/http/ftp/rsync as appropriate),</li> <li>country where the mirror is located,</li> <li>update frequency (once daily is recommended),</li> <li>preferred contact information for any mirror-related issues (we will keep all contact information confidential), and</li> <li>whether your site can also be a source for other mirrors.</li> </ul> <h3>Web setup for mirrors</h3> <p>It is very useful to make your mirror available to users via HTTP or HTTPS, so please support this if you can. We highly encourage new mirrors to support HTTPS as the most secure option.</p> <p>Set up your web server configuration to avoid sending the Content-Encoding header because it causes problems with some gateways.</p> <p>With Apache, we highly recommend the following setting, so that users can see full filenames in generated listings instead of having them be truncated:</p> <pre class="emph-box"> IndexOptions NameWidth=* </pre> <p>If you set up an HTTPS mirror, please make sure its SSL certificate carries a valid signature from a certification authority; it's difficult for us to track mirrors with self-signed certificates. If you don't already have a valid signature, Let's Encrypt is a good place to get it.</p> <h3>Mirroring the GNU Alpha release server</h3> <p>ftp.gnu.org and other sites also offer alpha.gnu.org (around10GB)90GB in June 2024) for your mirroring pleasure:</p> <dl class="compact"> <dt>North America</dt> <dd> <p><!--#set var='mirror' value='<code>rsync://ftp.gnu.org/alpha/</code>' --><!--#echo encoding='none' var='mirror' --> (USA - primary site)</p> <p><!--#set var='mirror'value='<code>rsync://mirrors.sarata.com/gnu-alpha/</code>'value='<code>rsync://mirror2.sandyriver.net/pub/software/gnu-alpha</code>' --><!--#echo encoding='none' var='mirror' -->(Arizona, USA)</p> <p><!--#set var='mirror' value='<code>rsync://gnualpha.freemirror.org/gnualpha</code>' --><!--#echo encoding='none' var='mirror' --> (Canada)</p>(USA - Kentucky)</p> </dd> <dt>South America</dt> <dd> <p><!--#set var='mirror' value='<code>rsync://gnu.c3sl.ufpr.br/gnu/alpha/</code>' --><!--#echo encoding='none' var='mirror' --> (Brazil)</p> <p><!--#set var='mirror' value='<code>rsync://mirror.cedia.org.ec/gnualpha</code>' --><!--#echo encoding='none' var='mirror' --> (Ecuador)</p> </dd> <dt>Africa</dt> <dd> <p><!--#set var='mirror' value='<code>rsync://mirror.marwan.ma/gnualpha/</code>' --><!--#echo encoding='none' var='mirror' --> (Morocco)</p> </dd><dt>Europe</dt><dt>Asia</dt> <dd> <p><!--#set var='mirror'value='<code>rsync://mirror.kumi.systems/gnualpha/</code>'value='<code>rsync://mirror.freedif.org/GNU-alpha/</code>' --><!--#echo encoding='none' var='mirror' -->(Austria)</p>(Singapore)</p> <p><!--#set var='mirror'value='<code>rsync://ftp.funet.fi/ftp/pub/mirrors/alpha.gnu.org/gnu/</code>'value='<code>rsync://repo.jing.rocks/gnu-alpha/</code>' --><!--#echo encoding='none' var='mirror' -->(Finland)</p>(Japan)</p> <p><!--#set var='mirror'value='<code>rsync://rsync.cyberbits.eu/gnu/alpha/</code>'value='<code>rsync://mirror.twds.com.tw/gnu-alpha/</code>' --><!--#echo encoding='none' var='mirror' -->(France)</p>(Taiwan)</p> </dd> <dt>Europe</dt> <dd> <p><!--#set var='mirror'value='<code>rsync://de.freedif.org/alpha/</code>'value='<code>rsync://mirror.kumi.systems/gnualpha/</code>' --><!--#echo encoding='none' var='mirror' -->(Germany)</p>(Austria)</p> <p><!--#set var='mirror'value='<code>rsync://quantum-mirror.hu/gnualpha/</code>'value='<code>rsync://ftp.funet.fi/ftp/pub/mirrors/alpha.gnu.org/gnu/</code>' --><!--#echo encoding='none' var='mirror' -->(Hungary)</p>(Finland)</p> <p><!--#set var='mirror'value='<code>rsync://mirror.ihost.md/gnu-alpha</code>'value='<code>rsync://rsync.cyberbits.eu/gnu/alpha/</code>' --><!--#echo encoding='none' var='mirror' -->(Moldova)</p>(France)</p> <p><!--#set var='mirror' value='<code>rsync://quantum-mirror.hu/gnualpha/</code>' --><!--#echo encoding='none' var='mirror' --> (Hungary)</p> <p><!--#set var='mirror'value='<code>rsync://gnualpha.uib.no/gnualpha/</code>'value='<code>rsync://mirror.ihost.md/gnu-alpha</code>' --><!--#echo encoding='none' var='mirror' -->(Norway)</p>(Moldova)</p> <p><!--#set var='mirror' value='<code>rsync://mirrors.up.pt/pub/gnu-alpha/</code>' --><!--#echo encoding='none' var='mirror' --> (Portugal)</p> <p><!--#set var='mirror'value='<code>rsync://ftp.acc.umu.se/mirror/gnu.org/alpha/</code>'value='<code>rsync://mirror.bahnhof.net/gnu-alpha/</code>' --><!--#echo encoding='none' var='mirror' --> (Sweden)</p> <p><!--#set var='mirror'value='<code>rsync://mirrors.gethosted.online/gnu-alpha</code>'value='<code>rsync://mirror.accum.se/mirror/gnu.org/alpha/</code>' --><!--#echo encoding='none' var='mirror' -->(UK)</p>(Sweden)</p> <p><!--#set var='mirror' value='<code>rsync://rsync.mirrorservice.org/alpha.gnu.org/gnu/</code>' --><!--#echo encoding='none' var='mirror' --> (UK)</p> <p><!--#set var='mirror' value='<code>rsync://alpha-gnu-org.ip-connect.vn.ua/alpha.gnu.org/</code>' --><!--#echo encoding='none' var='mirror' --> (Ukraine)</p> </dd> </dl> <p>Nightly updates are sufficient for GNU FTP and Alpha material.</p> <h3 id="nongnu">Mirroring nongnu releases from Savannah</h3> <p>We also greatly appreciate additional mirrors of the <em>nongnu</em> projects hosted at <ahref="http://savannah.nongnu.org/">savannah.nongnu.org</a>. The total is currently around 51GB.href="http://savannah.nongnu.org/">savannah.nongnu.org</a> (around 64GB in June 2024). To do this, we recommend you retrieve and update the files using rsync, with the same options as above for ftp.gnu.org, namely:</p> <pre class="emph-box"> rsync -rltpHS --delete-excluded rsync://dl.sv.gnu.org/releases/ /your/dir </pre> <p>These options ensure that it is an exact mirror. (There will probably be some permission errors; just ignore them. They are due to choices or mistakes by individual project maintainers.)</p> <p>It is fine to update savannah/nongnu once a day as well; twice a day if you like. More than that is not worth the bandwidth, the contents are not that dynamic.</p> <p>If you can help with this, please <a href="mailto:webmasters@gnu.org">email us</a> with the url to your mirror so we can add you to the <a href="http://dl.sv.gnu.org/releases/00_MIRRORS.html">list</a>. Thanks!</p> <h3>(Not) Mirroring the GNU web server</h3> <p>We no longer recommend creating web mirrors, because it has turned out that (a) few people can make use of them, and (b) many mirrors either became out of date or went offline relatively frequently. We don't want outdated information about the GNU project to be disseminated.</p> <p>Nonetheless, if you wish to mirror www.gnu.org for your own purposes, that is ok with us. We recommend using <code>mod_proxy</code>. Here is an <i>unsupported</i> recipe of Apache directives for your <code><VirtualHost></code>:</p> <pre class="emph-box"> ServerName gnumirror.example.org CacheRoot "/var/cache/mod_proxy" CacheDefaultExpire 86400 # for Apache 2.0+, value is in seconds ProxyPass / http://www.gnu.org/ CacheEnable disk / </pre> <p>(Thanks to Juri Hoerner for providing this Apache information.)</p> </div> </div><!-- for id="content", starts in the include above --> <!--#include virtual="/server/footer.html" --> <div id="footer" role="contentinfo"> <div class="unprintable"> <p>Please send general FSF & GNU inquiries to <a href="mailto:gnu@gnu.org"><gnu@gnu.org></a>. There are also <a href="/contact/">other ways to contact</a> the FSF. Broken links and other corrections or suggestions can be sent to <a href="mailto:webmasters@gnu.org"><webmasters@gnu.org></a>.</p> <p><!-- TRANSLATORS: Ignore the original text in this paragraph, replace it with the translation of these two: We work hard and do our best to provide accurate, good quality translations. However, we are not exempt from imperfection. Please send your comments and general suggestions in this regard to <a href="mailto:web-translators@gnu.org"> <web-translators@gnu.org></a>.</p> <p>For information on coordinating and contributing translations of our web pages, see <a href="/server/standards/README.translations.html">Translations README</a>. --> Please see the <a href="/server/standards/README.translations.html">Translations README</a> for information on coordinating and contributing translations of this article.</p> </div> <!-- Regarding copyright, in general, standalone pages (as opposed to files generated as part of manuals) on the GNU web server should be under CC BY-ND 4.0. Please do NOT change or remove this without talking with the webmasters or licensing team first. Please make sure the copyright date is consistent with the document. For web pages, it is ok to list just the latest year the document was modified, or published. If you wish to list earlier years, that is ok too. Either "2001, 2002, 2003" or "2001-2003" are ok for specifying years, as long as each year in the range is in fact a copyrightable year, i.e., a year in which the document was published (including being publicly visible on the web or in a revision control system). There is more detail about copyright years in the GNU Maintainers Information document, www.gnu.org/prep/maintain. --> <p>Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020,20212021, 2022, 2023, 2024 Free Software Foundation, Inc.</p> <p>This page is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nd/4.0/">Creative Commons Attribution-NoDerivatives 4.0 International License</a>.</p> <!--#include virtual="/server/bottom-notes.html" --> <p class="unprintable">Updated: <!-- timestamp start --> $Date: 2024/12/10 12:34:19 $ <!-- timestamp end --> </p> </div> </div><!-- for class="inner", starts in the banner include --> </body> </html>