VPL Execution Server for Programming Questions
  • 27 Sep 2023
  • 3 Minutes to read
  • Contributors
  • Dark
  • PDF

VPL Execution Server for Programming Questions

  • Dark
  • PDF

Article summary

Key Benefits

Test real skills not merely rote knowledge

As part of our product strategy to bring fit-for-purpose questions that enable assessment of correct application Cirrus' Programming question type enables testing of programming skills using real programming environments.

The programming environments for our programming question type are run on a so called VPL (Virtual Programming Lab) Execution Server. One or more of these VPL servers needs to be set up by the customer's technical staff (IT). Once they're up and running, you can configure them in Cirrus.

Future-proofing VPL

After liasing by Cirrus with the VPL team regarding a future-proof ("non-XML-RPC") version of vpl-jail-system, they released one with 3.0, see https://github.com/jcrodriguez-dis/vpl-xmlrpc-jail/issues/49

How to use

This page contains the technical info on how to install the VPL execution servers and configure them in Cirrus. For information on how to use i.e. how to author programming questions we kindly refer you to our regular knowledge base Programming article (under Library).

Supported Programming Languages

Also for the list of supported programming languages, we kindly refer you to our regular knowledge base Programming - Supported languages in Programming questions

NOTE: Ensure you install all programming languages your authors intend to use.

If you are certain a particular programming language will not be used than you do not have to install it or if installed as part of a set of languages you could uninstall it.

Installing VPL Execution Server on Ubuntu

Minimum server requirements for 50 students online using Java:

  • 8GB of RAM
  • 4 CPU Cores
  • Ubuntu 20.04+
  • Minimum vpl-jail-system version: 3.0.1
  • Domain name including TLS Certificate, e.g. programming.yourserver.com
Multiple VPL Execution Servers

For reliability and performance we strongly advice you to provision multiple Ubuntu servers (different machines) with each an VPL Execution Server.

VPL Installation Steps:

  • Install a clean Ubuntu LTS server, 22.04 recommended
  • Login to your clean Ubuntu server provisioned for the VPL Execution Server.
  • Ensure it has a domain name and valid certificate. Alternatively the certificate can also be set up by the installer. (Either way knowledge of certificates and Letsencrypt is required)
  • Download using wget https://vpl.dis.ulpgc.es/releases/vpl-jail-system-3.0.1.tar.gz
  • Unpack tar xvf vpl-jail-system-3.0.1.tar.gz
  • cd vpl-jail-system-3.0.1
  • Start the installer as root: sudo ./install-vpl-sh
  • And follow the instructions (Knowledge of certificates and Letsencrypt is required)
  • Stop the service: sudo service vpl-jail-system stop
  • Edit the configuration (using e.g. nano): nano /etc/vpl/vpl-jail-system.conf
    • Adapt MAXFILESIZE, MAXMEMORY, MAXPROCESSES to fit your expected use and server capacity
    • For security disable port 80: PORT=0
    • For security chose a non-standard HTTPS port: e.g. SECURE_PORT=9443
    • (Our test with URLPATH failed, so keep it as URLPATH=/)
  • Start the service with the command: sudo systemctl start vpl-jail-system
  • Check if it's running by opening your domain at SECURE_PORT in a browser, e.g. https://programming.yourserver.com:9443/OK
  • After succesful test, ensure it's started upon system start: systemctl enable vpl-jail-system
If you run into issues

Please see Troubleshooting below.

Cirrus Admin setup

This is how to set up the execution server in your Cirrus environment:

  • Go to Admin > Global settings > "VPL-tab"
  • Enter the address of your Execution server, something like https://programming.yourserver.com:9443/. There can be multiple execution servers (recommended!), Cirrus will check which execution server will be available.

See Programming - Admin: setup for executing programming questions for more details.


Note installing and maintaining VPL Execution Servers requires technical skills (a.o. Linux, Certificates, Ports, syslog). Do not try to install it yourself if you lack these, instead contact your IT department or a IT contractor/support company.

The VPL (Virtual Programming Lab) software is an open source solution. More information and manuals can be found on the VPL website.

For Troubleshooting, we kindly refer you to the detailed steps maintained by the VPL team at Troubleshooting
In case this link is inadvertently broken navigate to https://vpl.dis.ulpgc.es/ > Support > VPL-Jail-System Manual > Troubleshooting.
There you can find a.o. steps to review the VPL logging (grep vpl /var/log/syslog | less).

Beware of firewalls

Not mentioned in that Troubleshooting nor the installation steps, but please ensure incoming traffic to the port your VPL Execution Server is not blocked by your organisation's network or your Ubuntu server's firewall.
One way of testing this, is to connect to it from home. (And if not working there from your office or within your organisation's network.)

Was this article helpful?

What's Next