Version 7 (modified by Timothy_Gu, 4 years ago) (diff)



fateserver is the server software used to power It is written by the FFmpeg Project in 2011, using Perl CGI. The main repo for fateserver is located at git://, with a GitHub mirror.

Getting Started on Developing fateserver

When you make a change in fateserver, it is always a good idea to test whether everything work on your own work PC.


  • fateserver can't be on a sub-dir, which means that it must be something like, but can't be Otherwise the links are wrong and it won't load the CSS.
  • Some tools are also needed on the server, like xz.
  • In this guide, we assume that the source will be located under /var/www/fateserver, and the data gathered from clients under /var/www/fateweb.

Install fateserver

  1. Get Apache httpd. On Debian derivatives do
    sudo apt-get install apache2
  2. Change ownership of /var/www to the yourself so you can edit it.

This is only required if the fateserver source is located under a root-only directory like /var/www.

sudo chown -hR (yourusername):(yourusername) /var/www
  1. Get fateserver and mkdir server data directory.
    cd /var/www
    git clone git://
    mkdir /var/www/fateweb
  1. Make /var/www/fateserver the root of the server. This is OS-dependant, but on Ubuntu you have to modify /etc/apache2/sites-available/000-default.conf: From
    DocumentRoot /var/www
    DocumentRoot /var/www/fateserver
  1. Allow CGI to be executed in Apache, add this to /etc/apache2/apache2.conf:
    LoadModule cgi_module /usr/lib/apache2/modules/
    <Directory /var/www/fateserver>
            Options +ExecCGI
            AddHandler cgi-script .cgi .pl
  1. Create a new user for fateserver.

This is not required, and is only recommended if you want to really set up a FATE website. If you just want to test fateserver, you don't need to.

sudo adduser fate
chown -hR fate:fate /var/www/fateweb
  1. In that user's .ssh/authorized_keys, add one entry for each submitter with the following:
    command="FATEDIR=/var/www/fateweb FATE_USER=<some identifier of your choice for that submitter> /var/www/fateserver/" <submitter's public key>

This makes sure they get identified for fateweb and they can only run that one command, so they don't get a shell.

This is only required if you created a fate user.

  1. Edit, set the $fatedir variable to the fateweb path, if yours is different from the default (/var/www/fateweb):
    our $fatedir = "/your/path";
  1. Now if you go to http://localhost, you will be able to see a FATE error page with contents "No data in $fatedir". Although that is an error, that is considered a good thing at this stage because it shows that CGI works. Now you will need to feed FATE results to fateserver for it to display.

Feed fateserver Data To Display

There are two ways to give fateserver the data it needs to display: using or not using SSH.

Using SSH


Not Using SSH.


Thanks to Ramiro Polla for writing the initial version of this guide. Major updates made by Timothy Gu.