Table of Contents
- Frequently Asked Questions about Mirror servers
- I would like to help you in mirroring GeoGebra, what to do?
- What are the requirements for a server?
- GeoGebra people don't need root access, do they?
- Can you give detailed information on setting up a mirror server?
- Are there further requests after one set up a mirror server?
- Who contributed already?
- How does the mirroring exactly work?
- What happens if the mirror server becomes unreachable?
- Are there more detailed documentation on this?
Frequently Asked Questions about Mirror servers
I would like to help you in mirroring GeoGebra, what to do?
First of all: Thank you for help in advance! We may need your help if you can provide high bandwidth mirroring for JAR files. Here are some details on what to do then.
What are the requirements for a server?
You can use either a standalone hardware or a virtual machine to help us. Both may work. We recommend to have at least 1 GB of RAM for your server with a hardware not older than 3 years.
Your prospective server will be a web hosting server. It is required to run the following services:
- Apache 2 with mod_alias, mod_mime and mod_negotiation,
- OpenSSH.
You will need to have high bandwidth internet connection. We need at least 3 Mbit/sec (i.e. 3 Megabits per second, in other words, 3000 kilobits per second or 375 kilobytes per second) bandwidth to download files from your prospective server. (Currently we have an average of 12 Mbit/sec in October 2011. This will be divided among the mirror servers about equally. Be warned: this means the minimum download traffic will be over 30 GB per day!)
Stable, continuous working is an important requirement. Your server should run 24 hours a day for several months or even years without being switched off.
We would like to host the JAR files for GeoGebra 4.0 (200 Megabytes), 4.2 (200 Megabytes) and 5.0 (300 Megabytes).
GeoGebra people don't need root access, do they?
No. We only need a normal user which has the privilege to copy some files from the internet to your server via the OpenSSH protocol.
For setting up your server you will need root access for a few steps, however.
Can you give detailed information on setting up a mirror server?
For simplicity, we suggest using Debian Linux. It is easy to download, easy to configure and maintain. You may also use an Ubuntu Linux instead, because the following settings are fully compatible.
This is of course only a recommendation, you can use any compatible systems which give similar results as described below. See the Troubleshooting section if you need further help.
- Install Debian Linux 6.
- Install the following packages: apache2, openssh-server.
- Edit /etc/apache2/sites-available/default and add the following line before the line containing </VirtualHost> (which should be the last line):
AliasMatch /webstart/([^/]*)/((unsigned/)?[^/]*).jar "/var/www/webstart/$1/$2.jar.var"
- For the same file, add the following 4 lines at the end of the <Directory /var/www/> section (just before </Directory>):
<Files *.pack.gz> AddEncoding pack200-gzip .jar RemoveEncoding .gz </Files>
- Now please restart the Apache2 server by entering service restart apache2 (or by /etc/init.d/apache2 restart).
- Create the user geogebra by typing adduser geogebra and set up a password. Then by root, please enter mkdir /var/www/webstart; chown geogebra /var/www/webstart.
Troubleshooting
Gentoo Linux users
The default settings do not contain the needed mod_mime setting. For that please remove the hash mark from the approriate line of /etc/apache2/modules.d/00_mod_mime.conf to have this:
AddHandler type-map var
Are there further requests after one set up a mirror server?
Please provide us the following details of your installation:
- The IP address of your host machine.
- The login account for SSH (by default this is geogebra, if you followed the steps above). Please provide a port number (22 by default) and/or SSH private keys, passphrases and passwords if needed (normally not needed if you followed the recommendation above). We are going to copy our own RSA public key to your server (which has no passphrase).
- The planned bandwidth for HTTP (download from your server), e.g. 4 Mbit/sec.
- The filesystem directory for the /webstart folder (by default this is /var/www/webstart if you followed the steps above).
Please inform us about a planned downtime always (if possible, at least a week earlier). Thank you for your help in advance!
Who contributed already?
Currently the following institutions and people plan to contribute with their hardware and knowledge for such a network:
- Seoul National University, Republic of Korea, Myung-Soo Kim <mskim@…> and Han Cho <hancho@…>
- Beijing Normal University, China, Cao Yiming <caoym@…>
- Southern Illinois University, USA, Lingguo Bu <lgbu@…>
- University of Luxembourg, Luxembourg, Yves Kreis <yves@…>
- Johannes Kepler University, Austria, Markus Hohenwarter <markus@…>
- University of Szeged, Hungary, Zoltan Kovacs <zoltan@…>
How does the mirroring exactly work?
Every time we run our deploy script (see http://dev.geogebra.org/trac/browser/trunk/geogebra/scripts/autobuild for details, currently "deployggb42" for GeoGebra 4.2), a script is started ("push-to-mirrors") which copies all required files to the mirror servers. You may study that script in details, but in short, the following directories will be created or updated:
- /webstart/$VERSION/jnlp/ contains symbolic links to the required *.jar and *.jar.pack.gz files for webstart (including superfast webstart with the *.jar.pack.gz if your Java webstart client supports that).
- /webstart/$VERSION/{packed,unpacked}/ contain the JAR files for the signed applet start (*.jar.pack.gz go to packed/, *.jar to unpacked/).
- /webstart/$VERSION/unsigned/{packed,unpacked}/ contain the JAR files for the unsigned applet start (respectively as above).
- /webstart/$VERSION/ and /webstart/$VERSION/unsigned/ contain the proper *.var files to speed up download if your Java webstart client supports that.
- /webstart/$VERSION/usb/ contains some JAR files to make some external devices work.
- /webstart/$VERSION/{forum.gif,geogebra64.gif,geogebra64.png,wiki.jpg} are the used images by the JNLP files.
Here is a typical directory layout:
/webstart/4.2: -rw-r--r-- 1 geogebra geogebra 1017 Oct 13 16:42 forum.gif -rw-r--r-- 1 geogebra geogebra 169 Oct 13 16:42 geogebra.jar.var -rw-r--r-- 1 geogebra geogebra 2039 Oct 13 16:42 geogebra64.gif -rw-rw-r-- 1 geogebra geogebra 3240 Jul 5 18:04 geogebra64.png -rw-r--r-- 1 geogebra geogebra 178 Oct 13 16:42 geogebra_3d.jar.var -rw-r--r-- 1 geogebra geogebra 195 Oct 13 16:42 geogebra_algos.jar.var -rw-r--r-- 1 geogebra geogebra 181 Oct 13 16:42 geogebra_cas.jar.var -rw-r--r-- 1 geogebra geogebra 198 Oct 13 16:42 geogebra_export.jar.var -rw-r--r-- 1 geogebra geogebra 181 Oct 13 16:42 geogebra_gui.jar.var -rw-r--r-- 1 geogebra geogebra 202 Oct 13 16:42 geogebra_javascript.jar.var -rw-r--r-- 1 geogebra geogebra 184 Oct 13 16:42 geogebra_main.jar.var -rw-r--r-- 1 geogebra geogebra 202 Oct 13 16:42 geogebra_properties.jar.var -rw-r--r-- 1 geogebra geogebra 181 Oct 13 16:42 geogebra_usb.jar.var -rw-r--r-- 1 geogebra geogebra 175 Oct 13 16:42 jlatexmath.jar.var -rw-r--r-- 1 geogebra geogebra 181 Oct 13 16:42 jlm_cyrillic.jar.var -rw-r--r-- 1 geogebra geogebra 172 Oct 13 16:42 jlm_greek.jar.var drwxr-xr-x 2 geogebra geogebra 4096 Oct 13 16:42 jnlp drwxrwxr-x 2 geogebra geogebra 4096 Oct 13 15:49 packed drwxrwxr-x 2 geogebra geogebra 4096 Oct 19 13:24 unpacked drwxrwxr-x 4 geogebra geogebra 4096 Oct 19 13:25 unsigned drwxrwxr-x 2 geogebra geogebra 4096 Sep 15 12:11 usb -rw-r--r-- 1 geogebra geogebra 787 Oct 13 16:42 wiki.jpg /webstart/4.2/jnlp: lrwxrwxrwx 1 geogebra geogebra 24 Oct 13 16:42 geogebra.jar -> ../unpacked/geogebra.jar lrwxrwxrwx 1 geogebra geogebra 30 Oct 2 18:52 geogebra.jar.pack.gz -> ../packed/geogebra.jar.pack.gz lrwxrwxrwx 1 geogebra geogebra 30 Oct 13 16:42 geogebra_algos.jar -> ../unpacked/geogebra_algos.jar lrwxrwxrwx 1 geogebra geogebra 36 Oct 2 18:52 geogebra_algos.jar.pack.gz -> ../packed/geogebra_algos.jar.pack.gz lrwxrwxrwx 1 geogebra geogebra 28 Oct 13 16:42 geogebra_cas.jar -> ../unpacked/geogebra_cas.jar lrwxrwxrwx 1 geogebra geogebra 34 Oct 2 18:52 geogebra_cas.jar.pack.gz -> ../packed/geogebra_cas.jar.pack.gz lrwxrwxrwx 1 geogebra geogebra 31 Oct 13 16:42 geogebra_export.jar -> ../unpacked/geogebra_export.jar lrwxrwxrwx 1 geogebra geogebra 37 Oct 2 18:52 geogebra_export.jar.pack.gz -> ../packed/geogebra_export.jar.pack.gz lrwxrwxrwx 1 geogebra geogebra 28 Oct 13 16:42 geogebra_gui.jar -> ../unpacked/geogebra_gui.jar lrwxrwxrwx 1 geogebra geogebra 34 Oct 2 18:52 geogebra_gui.jar.pack.gz -> ../packed/geogebra_gui.jar.pack.gz lrwxrwxrwx 1 geogebra geogebra 35 Oct 13 16:42 geogebra_javascript.jar -> ../unpacked/geogebra_javascript.jar lrwxrwxrwx 1 geogebra geogebra 41 Oct 2 18:52 geogebra_javascript.jar.pack.gz -> ../packed/geogebra_javascript.jar.pack.gz lrwxrwxrwx 1 geogebra geogebra 29 Oct 13 16:42 geogebra_main.jar -> ../unpacked/geogebra_main.jar lrwxrwxrwx 1 geogebra geogebra 35 Oct 2 18:52 geogebra_main.jar.pack.gz -> ../packed/geogebra_main.jar.pack.gz lrwxrwxrwx 1 geogebra geogebra 35 Oct 13 16:42 geogebra_properties.jar -> ../unpacked/geogebra_properties.jar lrwxrwxrwx 1 geogebra geogebra 41 Oct 2 18:52 geogebra_properties.jar.pack.gz -> ../packed/geogebra_properties.jar.pack.gz lrwxrwxrwx 1 geogebra geogebra 28 Oct 13 16:42 geogebra_usb.jar -> ../unpacked/geogebra_usb.jar lrwxrwxrwx 1 geogebra geogebra 34 Oct 2 18:52 geogebra_usb.jar.pack.gz -> ../packed/geogebra_usb.jar.pack.gz lrwxrwxrwx 1 geogebra geogebra 26 Oct 13 16:42 jlatexmath.jar -> ../unpacked/jlatexmath.jar lrwxrwxrwx 1 geogebra geogebra 32 Oct 2 18:52 jlatexmath.jar.pack.gz -> ../packed/jlatexmath.jar.pack.gz lrwxrwxrwx 1 geogebra geogebra 28 Oct 13 16:42 jlm_cyrillic.jar -> ../unpacked/jlm_cyrillic.jar lrwxrwxrwx 1 geogebra geogebra 34 Oct 2 18:52 jlm_cyrillic.jar.pack.gz -> ../packed/jlm_cyrillic.jar.pack.gz lrwxrwxrwx 1 geogebra geogebra 25 Oct 13 16:42 jlm_greek.jar -> ../unpacked/jlm_greek.jar lrwxrwxrwx 1 geogebra geogebra 31 Oct 2 18:52 jlm_greek.jar.pack.gz -> ../packed/jlm_greek.jar.pack.gz lrwxrwxrwx 1 geogebra geogebra 22 Oct 13 16:42 jython.jar -> ../unpacked/jython.jar lrwxrwxrwx 1 geogebra geogebra 28 Oct 13 15:49 jython.jar.pack.gz -> ../packed/jython.jar.pack.gz /webstart/4.2/packed: -rw-rw-r-- 1 geogebra geogebra 26063 Oct 13 16:42 geogebra.jar.pack.gz -rw-rw-r-- 1 geogebra geogebra 142971 Oct 13 16:42 geogebra_algos.jar.pack.gz -rw-rw-r-- 1 geogebra geogebra 1686578 Oct 13 16:42 geogebra_cas.jar.pack.gz -rw-rw-r-- 1 geogebra geogebra 127450 Oct 13 16:42 geogebra_export.jar.pack.gz -rw-rw-r-- 1 geogebra geogebra 392580 Oct 13 16:42 geogebra_gui.jar.pack.gz -rw-rw-r-- 1 geogebra geogebra 185242 Oct 13 16:42 geogebra_javascript.jar.pack.gz -rw-rw-r-- 1 geogebra geogebra 447710 Oct 13 16:42 geogebra_main.jar.pack.gz -rw-rw-r-- 1 geogebra geogebra 1226270 Oct 13 16:42 geogebra_properties.jar.pack.gz -rw-rw-r-- 1 geogebra geogebra 24556 Oct 13 16:42 geogebra_usb.jar.pack.gz -rw-rw-r-- 1 geogebra geogebra 384813 Oct 13 16:42 jlatexmath.jar.pack.gz -rw-rw-r-- 1 geogebra geogebra 177297 Oct 13 16:42 jlm_cyrillic.jar.pack.gz -rw-rw-r-- 1 geogebra geogebra 184789 Oct 13 16:42 jlm_greek.jar.pack.gz -rw-r--r-- 1 geogebra geogebra 5713498 Oct 13 16:42 jython.jar.pack.gz /webstart/4.2/unpacked: -rw-rw-r-- 1 geogebra geogebra 36498 Oct 13 16:42 geogebra.jar -rw-rw-r-- 1 geogebra geogebra 314702 Oct 13 16:42 geogebra_algos.jar -rw-rw-r-- 1 geogebra geogebra 2031663 Oct 13 16:42 geogebra_cas.jar -rw-rw-r-- 1 geogebra geogebra 421193 Oct 13 16:42 geogebra_export.jar -rw-rw-r-- 1 geogebra geogebra 1103696 Oct 13 16:42 geogebra_gui.jar -rw-rw-r-- 1 geogebra geogebra 492082 Oct 13 16:42 geogebra_javascript.jar -rw-rw-r-- 1 geogebra geogebra 1370951 Oct 13 16:42 geogebra_main.jar -rw-rw-r-- 1 geogebra geogebra 1455213 Oct 13 16:42 geogebra_properties.jar -rw-rw-r-- 1 geogebra geogebra 69535 Oct 13 16:42 geogebra_usb.jar -rw-rw-r-- 1 geogebra geogebra 570577 Oct 13 16:42 jlatexmath.jar -rw-rw-r-- 1 geogebra geogebra 189551 Oct 13 16:42 jlm_cyrillic.jar -rw-rw-r-- 1 geogebra geogebra 192297 Oct 13 16:42 jlm_greek.jar -rw-r--r-- 1 geogebra geogebra 12507401 Oct 13 16:42 jython.jar /webstart/4.2/unsigned: -rw-r--r-- 1 geogebra geogebra 169 Oct 13 16:42 geogebra.jar.var -rw-r--r-- 1 geogebra geogebra 178 Oct 13 16:42 geogebra_3d.jar.var -rw-r--r-- 1 geogebra geogebra 195 Oct 13 16:42 geogebra_algos.jar.var -rw-r--r-- 1 geogebra geogebra 181 Oct 13 16:42 geogebra_cas.jar.var -rw-r--r-- 1 geogebra geogebra 198 Oct 13 16:42 geogebra_export.jar.var -rw-r--r-- 1 geogebra geogebra 181 Oct 13 16:42 geogebra_gui.jar.var -rw-r--r-- 1 geogebra geogebra 202 Oct 13 16:42 geogebra_javascript.jar.var -rw-r--r-- 1 geogebra geogebra 184 Oct 13 16:42 geogebra_main.jar.var -rw-r--r-- 1 geogebra geogebra 202 Oct 13 16:42 geogebra_properties.jar.var -rw-r--r-- 1 geogebra geogebra 181 Oct 13 16:42 geogebra_usb.jar.var -rw-r--r-- 1 geogebra geogebra 175 Oct 13 16:42 jlatexmath.jar.var -rw-r--r-- 1 geogebra geogebra 181 Oct 13 16:42 jlm_cyrillic.jar.var -rw-r--r-- 1 geogebra geogebra 172 Oct 13 16:42 jlm_greek.jar.var drwxr-xr-x 2 geogebra geogebra 4096 Oct 13 15:49 packed drwxr-xr-x 2 geogebra geogebra 4096 Oct 13 15:49 unpacked /webstart/4.2/unsigned/packed: -rw-r--r-- 1 geogebra geogebra 21613 Oct 13 16:42 geogebra.jar.pack.gz -rw-r--r-- 1 geogebra geogebra 122407 Oct 13 16:42 geogebra_algos.jar.pack.gz -rw-r--r-- 1 geogebra geogebra 1644038 Oct 13 16:42 geogebra_cas.jar.pack.gz -rw-r--r-- 1 geogebra geogebra 105574 Oct 13 16:42 geogebra_export.jar.pack.gz -rw-r--r-- 1 geogebra geogebra 338947 Oct 13 16:42 geogebra_gui.jar.pack.gz -rw-r--r-- 1 geogebra geogebra 169609 Oct 13 16:42 geogebra_javascript.jar.pack.gz -rw-r--r-- 1 geogebra geogebra 382347 Oct 13 16:42 geogebra_main.jar.pack.gz -rw-r--r-- 1 geogebra geogebra 1204224 Oct 13 16:42 geogebra_properties.jar.pack.gz -rw-r--r-- 1 geogebra geogebra 15733 Oct 13 16:42 geogebra_usb.jar.pack.gz -rw-r--r-- 1 geogebra geogebra 362742 Oct 13 16:42 jlatexmath.jar.pack.gz -rw-r--r-- 1 geogebra geogebra 172094 Oct 13 16:42 jlm_cyrillic.jar.pack.gz -rw-r--r-- 1 geogebra geogebra 180537 Oct 13 16:42 jlm_greek.jar.pack.gz -rw-r--r-- 1 geogebra geogebra 5714023 Oct 13 16:42 jython.jar.pack.gz /webstart/4.2/unsigned/unpacked: -rw-r--r-- 1 geogebra geogebra 31650 Oct 13 16:42 geogebra.jar -rw-r--r-- 1 geogebra geogebra 296421 Oct 13 16:42 geogebra_algos.jar -rw-r--r-- 1 geogebra geogebra 2004607 Oct 13 16:42 geogebra_cas.jar -rw-r--r-- 1 geogebra geogebra 404220 Oct 13 16:42 geogebra_export.jar -rw-r--r-- 1 geogebra geogebra 1052139 Oct 13 16:42 geogebra_gui.jar -rw-r--r-- 1 geogebra geogebra 567089 Oct 13 16:42 geogebra_javascript.jar -rw-r--r-- 1 geogebra geogebra 1311806 Oct 13 16:42 geogebra_main.jar -rw-r--r-- 1 geogebra geogebra 1428779 Oct 13 16:42 geogebra_properties.jar -rw-r--r-- 1 geogebra geogebra 61076 Oct 13 16:42 geogebra_usb.jar -rw-r--r-- 1 geogebra geogebra 550722 Oct 13 16:42 jlatexmath.jar -rw-r--r-- 1 geogebra geogebra 184891 Oct 13 16:42 jlm_cyrillic.jar -rw-r--r-- 1 geogebra geogebra 187626 Oct 13 16:42 jlm_greek.jar -rw-r--r-- 1 geogebra geogebra 13184172 Oct 13 16:42 jython.jar /webstart/4.2/usb: -rw-rw-r-- 1 geogebra geogebra 346085 Oct 13 16:42 vernier_ccsd-mac-static.jar -rw-rw-r-- 1 geogebra geogebra 92824 Oct 13 16:42 vernier_ccsd-macintel-static.jar -rw-rw-r-- 1 geogebra geogebra 143167 Oct 13 16:42 vernier_ccsd-win.jar
What happens if the mirror server becomes unreachable?
- If your server is switched on, but any of the required files is missing, the user at the client side will get a Java error. He (or she) will not be able to use GeoGebra webstart or applet start.
- If your server is switched off, then the effect may be various. Many clients will know that they have to use another mirror server from the round robin DNS list (this is to be hoped), but not all. See http://en.wikipedia.org/wiki/Round-robin_DNS to take a deeper look on the applied technology.
Are there more detailed documentation on this?
Yes, on the original page for MirrorServers.
