CTAN Comprehensive TeX Archive Network

Be­com­ing A CTAN Mir­ror

Hav­ing a … CTAN mir­ror will change your life. – M. Doob

You can help out the com­mu­nity by run­ning a mir­ror of the Com­pre­hen­sive Archive Net­work. This page con­tains di­rec­tions on how to be­come an of­fi­cial CTAN mir­ror. They should suf­fice if you run Linux and prob­a­bly also if you run Mac­in­tosh OS X. (If you write up in­struc­tions for a Win­dows sys­tem, please, let us know.)

CTAN has one core site, which in­stalls new pack­ages and pack­age up­dates. There are also a fair num­ber of sites that par­tic­i­pate as mir­rors, who copy our hold­ings ev­ery night and then makes those files avail­able to oth­ers in the com­mu­nity. At the core sites we redi­rect re­quests for file down­loads to our mir­rors, thereby re­duc­ing the load on the pri­mary sites. We do this by send­ing users to web ad­dresses be­gin­ning with mirror.ctan.org, which sends the user to a ran­domly-se­lected of­fi­cial mir­ror in their re­gion.

If you de­cide to be­come a mir­ror then once you have it set up, it mostly runs it­self. So this is a low-im­pact way to help out. You need per­ma­nent In­ter­net con­nec­tiv­ity and at least 20 GB of hard drive space free (30 GB leaves room to grow). The traf­fic is not too much, but if we have enough mir­rors then of course each of them help­ing a lit­tle re­sults in an over­all help that is big.

Th­ese are the steps to set­ting up a mir­ror. More on each is in a sec­tion be­low.

  • Giv­ing vis­i­tors ac­cess to files means run­ning ei­ther a web or FTP de­mon, or both.
  • Get the files to hold from us by run­ning rsync.
  • Up­date those files ev­ery day. This means run­ning rsync as a cron job.
  • Sign up to be an of­fi­cial mir­ror.


The two most pop­u­lar way to of­fer the files to your vis­i­tors are over HTTP and over FTP. To keep the dis­cus­sion straight­for­ward, the ex­am­ples be­low as­sume that you keep the archive in the /var/ftp/pub/tex-archive di­rec­tory.

If you will of­fer the ma­te­ri­als over HTTP then you must have a web server. We use Apache. Set­ting up the web server is be­yond this doc­u­ment's scope. How­ever, here are a few sug­ges­tions to con­sider.

  • One way to make the archive avail­able is by putting a soft link in­side your doc­u­ment root. With the de­fault Apache setup, this
     ln -s /var/ftp/pub/tex-archive /var/www/html/tex-archive
    makes http://www.example.com/tex-archive give the page show­ing the top level di­rec­tory for the archive.
  • You want to keep files in the archive that hap­pen to be named index.html from be­ing served by your Apache as the in­dex of that di­rec­tory's page. Put some­thing like this in your con­fig­u­ra­tion file.
    <Directory />  # prevent web visitors from seeing outside the web tree
      Order Deny,Allow
      Deny from all
    <Directory /var/www/html>  # allow web visitors to see in the web tree
      Order Allow,Deny
      Allow from all
      Options +FollowSymLinks
    <Directory /var/www/html/tex-archive> # soft link to CTAN tree
      Order Allow,Deny
      Allow from all
      Options -ExecCGI, +FollowSymLinks, -Includes, -IncludesNOEXEC, +Indexes
      DirectoryIndex disabled

To of­fer ma­te­ri­als over FTP, you must have an FTP de­mon run­ning. We use vs­ftpd but there are many oth­ers. Set­ting up the de­mon is be­yond our scope, but if your doc­u­men­ta­tion does not cover how to al­low anony­mous ac­cess then just get new server soft­ware.


To keep your ma­te­ri­als up to date run rsync. This pro­gram does the trans­fers ef­fi­ciently, sav­ing both us and you a great deal of net­work traf­fic.

You must mir­ror from the pri­mary CTAN node.

Site Lo­ca­tion
rsync://rsync.dante.ctan.org/CTAN Ger­many

The com­mand be­low will get ev­ery­thing on CTAN and put it on your hard drive. Use it the first time you get from the archive, and also for later up­dates. Note that the first time you run it the com­mand can take quite a long time — hours, per­haps, de­pend­ing on the con­nec­tion speed.

  rsync -av --delete rsync://rsync.dante.ctan.org/CTAN /var/ftp/pub/tex-archive

A sum­mary of what the op­tions mean:

  • -a puts you in archive mode so that you look through di­rec­to­ries re­cur­sively, pre­serve times­tamps, etc.
  • -v is for ver­bose out­put that re­ports the files down­loaded and deleted
  • --delete will delete files that used to be on CTAN but are no longer there.

Be­fore you run the above com­mand, you can check that you will get the re­sult that you ex­pect by us­ing the -n op­tion, as in rsync -avn --delete ... This will say what would be done with­out do­ing it.


You must run the above com­mand ev­ery day. At the com­mand line ask for crontab -e and in the ed­i­tor that ap­pears en­ter a line like this.

  31 2 * * * rsync -a --delete rsync://rsync.dante.ctan.org/CTAN /var/ftp/pub/tex-archive
The data at the start of that line means that your sys­tem will run the rsync com­mand

  • at 31 min­utes past the hour
  • of the 2nd hour of the day
  • on ev­ery day of the month
  • and dur­ing ev­ery month of the year
  • and ev­ery day of the week (that is, Sun­day thru Satur­day).

Please change these num­bers when you set yours up, so that not ev­ery­one in the world hits us at the same in­stant. Pick a time that is in the mid­dle of the night at the lo­ca­tion of the archive that you are mir­ror­ing.


This doc­u­ment is based on a pre­sen­ta­tion by M. Doob at the 2001 meet­ing of the Users Group. Writ­ten 2001-Sep-11 by J. Hef­feron, up­dated 2009-July-02. Up­dated June 2017 Gerd Neuge­bauer.


Once you have got­ten the files, and the cron job is work­ing, and you have checked that you are of­fer­ing pub­lic ac­cess, then you can be­come an of­fi­cial mir­ror by fill­ing out the form be­low.

Your mir­ror's in­for­ma­tion

Fields marked with an as­ter­isk() are re­quired. You must give an ad­dress for at least one of FTP, HTTP, or RSYNC (any that you are not of­fer­ing leave blank).

Name (usually: your host name, such as 'joshua.smcvt.edu')

Name of the contact person

Email of the contact person

Country containing your mirror

Region within the country

City within the country

Mirror from

Address for FTP (such as 'joshua.smcvt.edu/tex-archive').

Address for HTTP (such as 'joshua.smcvt.edu/tex-archive').

Address for Rsync (such as 'rsync.joshua.smcvt.edu/CTAN').


You will be en­rolled in the low-traf­fic mail­ing list for our mir­ror main­tain­ers.

Note: we mon­i­tor mir­rors to check that they are up to date. If your mir­ror falls be­hind then mirror.ctan.org will not redi­rect to it, and we shall have to re­move it from the of­fi­cial list.

Guest Book Sitemap Contact Contact Author