wiki:

FATE

/

Fateserver


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

--

fateserver

fateserver is the server software used to power http://fate.ffmpeg.org. It is written by the FFmpeg Project in 2011, using Perl CGI. The main repo for fateserver is located at git://git.ffmpeg.org/fateserver, 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.

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.

  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://git.ffmpeg.org/fateserver
    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
    
    to
    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/mod_cgi.so
    <Directory /var/www/fateserver>
            Options +ExecCGI
            AddHandler cgi-script .cgi .pl
    </Directory>
    
  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/fate-recv.sh" <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 FATE.pm, 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 because you have not feed it data to display yet.

Notes: fateserver can't be on a sub-dir, which means that it must be something like fate.ffmpeg.org, but can't be ffmpeg.org/fate; or the links are wrong and it won't load the CSS. Some tools are also needed on the server, like xz.

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