How to mirror

I am pleased to present the mirroring project. I have made mirroring this website very easy, and entirely automated once you have done the initial setup. Anyone may freely mirror this site, but if you want your mirror listed on this site you will need to let me know via the form at the bottom of this page.

Before we get into how to mirror, you need to make sure that you and your server meet the following requirements:

1. You must have a *nix based server available to you. A dedicated server is the best scenario.

2. The server must be running Apache. You can use Apache 1 or 2. It doesn't matter.

3. The server must have php installed and running. Anything of 4.x or higher should do fine.

4. Your server must have rsync installed and ready to use.

5. You MUST have a good understanding of general server administration and the Apache webserver. You will probably want to have a basic understanding of rsync and of php. I WILL NOT hold your hand through the mirroring process, so if you are a newbie you're on your own. The mirror process works, so if you run into problems, you're doing something wrong.

6. Your server must be a fulltime machine which is up and running at all times. Servers running off a home dsl or cable connection are frowned upon.

7. Once your mirror site is up and running, if you would like it listed on this site you MUST let me know via the form at the bottom of this page. Mirrors not listed on this site are not official mirrors.

8. I will routinely test all mirrors for connectivity and responsiveness. Habitual downtime for a mirror site may result in that mirror being removed from the mirror list.

9. Bandwidth requirements - The badwidth needs should be pretty light. The initial rsync of the site is around 40mb, but each re-sunc after that will only update files that have changed.

Next, let's briefly go over how mirror sites will be named...

When setting up a mirror site, there are 2 scenarios which will determine the name of your mirror site. Which one you choose is up to you. By name, I mean the "ServerName" value that is assigned to your mirror and therefore the public URL for your mirror.

Scenario 1 - Name the mirror own your own

In this scenario, you would name your mirror whatever you want. All you need to do, if you want to be listed, is let me know what that address is. For example, if I owned the domain, I could simply create a mirror at Make sense? Easy.

Scenario 2 - You would like a "" associated address for your mirror

In this alternative scenario, once your mirror us up and running you can ask me to create a "" address that points to your mirror. For example, if you started a mirror site in France, I will consider creating a record on the nameserver to point to your mirror. Such an address might be I will determine the naming convention for your mirror, so all you have to do is ask me to do it via the form at the end of this page.

Addional note: I do currently own several foreitgn TLD's for qmailrocks. In some cases, I will want to point a full TLD to your mirror. For example, if your mirror is in the Netherlands I may want to point to your mirror. Wow!

Now, let's get on with the mirroring process! Simply follow the direction below. Again, don't ask me to walk you through this process. If you don't know what you're doing, don't do it.

How to mirror in 7 easy steps

1. First create a document root for your mirror site. For example, you might create the mirror site like so:

mkdir -p /var/www/vhosts/qmr_mirror/htdocs

I've highlighted the directory location in RED because the location of the mirror site's document root will vary depending on how you have your web server configured.

2. Create an Apache vhost entry for the mirror site. For example, if we go with what we did in the above example:


DocumentRoot /var/www/vhosts/qmr_mirror/htdocs

<Directory /var/www/vhosts/qmr_mirror/htdocs>
AllowOverride All

In the above example, I have highlighter in RED the values that will vary depending on your web server's configuration. The IP address that your mirror will run on will obviously vary. Specifying port 80 (:80) may or may not be necessary, depending on how you have Apache configured. The ServerName variable will be set to whatever address you want your mirror to have. In case you missed it, I talk about that here. The 2 ServerAlias lines are there because, in case the main QMR server goes down for some reason, I may want to point the main domain to one of the mirrors until the main server is back up. Obviously the DocumentRoot directive will have to reflect to true location of the mirror site's document root and the ServerAdmin variable will need to reflect the email address of your server admin. If you really don't want to use the ServerAdmin variable, you don't have to. I just use it out of habit.

3. In the master Apache configuration file (usually httpd.conf) make sure that the DirectoryIndex variable contains index.php as one of the accepted index pages.

4. Restart Apache once you have added the above vhost entry. Any errors that you may have made should be readily apparent when you try to restart Apache. Troubleshoot those errors as needed and as you would troubleshoot any Apache config problem.

5. Now it's time to run the mirroring command to see if you are able to succesfully pull down a copy of the mirror to your server. Once you've confirmed that it works, you will commit a daily re-sync of the mirror to a crontab entry. We'll cover that in the next step.

rsync -a --progress /var/www/vhosts/qmr_mirror/htdocs

Again, the text that I've highlighted in RED will vary depending on your web server's configuration. Make sure that the path shown in RED is identical the the DocumentRoot directive that you used in your Apache vhost entry.

If successful, you're screen should start scrolling down as it syncs up each file on the master server with your new mirror. Once completed, listing the contents of your mirror's document root should reveal all of the mirror files.

If the sync does not work, you're either doing something wrong or you may have a firewall/networking issue. Make sure that you firewall is not blocking remote rsync calls.

6. Now that you know the rsync works, you can commit the daily re-sync to a crontab entry:

crontab -e

0 0 * * * rsync -a --progress /var/www/vhosts/qmr_mirror/htdocs

This will re-sync your mirror with the master mirror every day at midnight. One re-sync a day is the minimum number of times you should re-sync. However, feel free to re-sync more than once a day if you wish. The site changes often, so 2 re-syncs a day is probably not a bad idea.

7. Nofiy me of your new mirror, right here.

That's it! You're all done. Once you've got your mirror running, you can let me know via the form below and I will list your mirror on the main website!

If you would like your mirror listed on this website or if you would like a "" address for your mirror, fill out the form below...

*Your Name: 
*Your email address: 
*Mirror location: 
(Location of the physical server. City and coutnry.)
Would you like to have a "" address for your mirror?
  Yes   No
If yes, what is the IP address of your mirror site? 
If no, what is the URL for your mirror site? 



Color Coded Qmail Installation Key
Regular Black Text 
 Qmail installation notes and summaries by the author. Me talking.
Bold Black Text 
 Commands to be run by you, the installer.
Bold Maroon Text 
 Special notes for Redhat 9 users.
Bold Red Text 
 Vital and/or critical information.
Regular/Bold Purple text 
 Denotes helpful tips and hints or hyperlinks.
Regular Orange Text 
 Command line output.

Regular green text 

 Denotes the contents of a file or script.
home | about | the installation | utilities | faq | contact | journal | mailing list | list archive | forum | links | donatemerchandise
This mirror last modified: Thursday, August 9th, 2012 16:01:34 CEST
The Rocks Project