Setting up a server
Prerequisites
You will need a standalone version of your experiment in order to run it outside the PCIbex Farm.
When editing a project on the PCIbex Farm, you can click the … button to the right of the Download button and then click on Download standalone version to download an archive that contains all the necessary files to upload to your webserver and run your experiment.
The original IBEX way (python 2)
Please refer to the original Ibex documentation for instructions on how to set up your own server using a python 2 CGI script
Static / python 3
This page hosts two python 3 script files named static.py and server.py that you can apply to the standalone version of your experiment in order to serve it either statically (no server setup required) or on a simple local server
Static
static.py takes the standalone experiment folder and outputs a static experiment in another folder. The resulting experiment can be run entirely locally in a web browser, without even needing a local server. That being said, because of the absence of a server, it won’t support automatic update of the counter, or sending of the results: by default the counter will be set to a random value between 0 and 1000, or to the value passed to the withsquare parameter in the URL, and the browser will open a prompt to download the results as a file on the device. You can still run the output on a server: to obtain the exact same behavior, make sure to pass static=1 as a parameter in the URL, or don’t pass it if you want to handle the counter and the results file on the server.
Usage example: python3 static.py -i ./ibex_exp -o ~/static_exp
Local server
server.py will run a very simple server that handles counter updates, saving results and serving files. Note that it was not designed to be used as a public web server, although it could technically be implemented as such — it works well as a local server though. It will run at localhost:3000 by default, but you can update the port by setting PORT
at the top of the script to a different value. Also make sure to edit PRIVATE_DIRECTORY
and PUBLIC_DIRECTORY
to point to the directories you want to use on your machine: PRIVATE_DIRECTORY
is where you will have the counter and results file, and it should not be publicly exposed (although if you’re running a local server, it doesn’t matter much); PUBLIC_DIRECTORY
is the directory serving files, and it should be set to point to the output folder of static.py above (in this example, ~/static_exp/) this way it can serve multimedia files, for example. Finally note the line response.headers["Access-Control-Allow-Origin"] = "*"
: this will accept incoming requests from any domain (including localhost, crucially) so make sure to edit it if you need to make things more secure.
Usage example: python3 server.py