Development release


If you are not sure, you probably want to install the stable release. Follow this guide.

You can get the development release cloning the sources.


Don’t do this if you install a packaged release.

git clone

Possible development scenarios where to deploy

Obviously if you can deploy on a physical machine will be better but it is not always possible. In that case you can test on a nested KVM, that is, a KVM inside another KVM.


KVM requires VT-X / AMD-V.

sudo apt install cpu-checker
sudo kvm-ok


Do not consider VirtualBox in this situation, because it doesn’t pass VT-X / AMD-V to the guest operating system.

Ubuntu required packages

Check this file at the line depends for a list of required packages. You must install it running:


The libvirt-bin package was dropped since Ubuntu 18.10. The package was split into two parts: libvirt-daemon-system and libvirt-clients.

sudo apt-get install perl libmojolicious-perl mysql-common libauthen-passphrase-perl \
libdbd-mysql-perl libdbi-perl libdbix-connector-perl libipc-run3-perl libnet-ldap-perl \
libproc-pid-file-perl libvirt-bin libsys-virt-perl libxml-libxml-perl libconfig-yaml-perl \
libmoose-perl libjson-xs-perl qemu-utils perlmagick libmoosex-types-netaddr-ip-perl \
libsys-statistics-linux-perl libio-interface-perl libiptables-chainmgr-perl libnet-dns-perl \
wget liblocale-maketext-lexicon-perl libmojolicious-plugin-i18n-perl libdbd-sqlite3-perl \
debconf adduser libdigest-sha-perl qemu-kvm libnet-ssh2-perl libfile-rsync-perl \
libdate-calc-perl libdatetime-perl

In addition you need one package that it still may not be in Ubuntu repository, download from our own server at the UPC ETSETB repository and install it this way:

sudo dpkg -i libmojolicious-plugin-renderfile-perl_0.10-1_all.deb

Mysql Database

MySQL server is required to run ravada. You can use one from another server you already have or you can install it in the same host as Ravada.

MySQL user

Create a database named “ravada”. in this stage the system wants you to identify a password for your sql.

mysqladmin -u root -p create ravada

Grant all permissions to your user:

mysql -u root -p
mysql> grant all on ravada.* to rvd_user@'localhost' identified by 'choose a password';

Config file

Create a config file at /etc/ravada.conf with the username and password you just declared at the previous step.

  user: rvd_user
  password: *****

When developping Ravada, your username must be able to read the configuration file. Protect the config file from others and make it yours.

sudo chmod o-rx /etc/ravada.conf
sudo chown your_username /etc/ravada.conf

Ravada web user

Add a new user for the ravada web. Use rvd_back to create it.

cd ravada
sudo ./bin/ --add-user


The server must be able to send DHCP packets to its own virtual interface.

KVM should be using a virtual interface for the NAT domnains. Look what is the address range and add it to your iptables configuration.

First we try to find out what is the new internal network:

sudo route -n
...   U     0      0        0 virbr0

So it is , netmask 24. Add it to your iptables configuration:

-A INPUT -s -p udp --dport 67:68 --sport 67:68 -j ACCEPT


The client must have a spice viewer such as virt-viewer. There is a package for linux and it can also be downloaded for windows.


Ravada has two daemons that must run on the production server:

  • rvd_back : must run as root and manages the virtual machines
  • rvd_front : is the web frontend that sends requests to the backend

Run each one of these commands in a separate terminal

morbo ./
sudo ./bin/

Now you must be able to reach ravada at the location http://your.ip:3000/

If you wish to create a script to automatize the start and shutdown of the ravada server, you can use these two bash scripts:

#script to initialize ravada server

    echo "./start_ravada 1 (messages not prompting to terminal)
    echo "./start_ravada 0 (prompts enables to this terminal)

if [ $# -eq 0 ]
    exit 1
    if [ $SHOW_MESSAGES -eq 1 ]
        morbo ./ > /dev/null 2>&1 &
        sudo ./bin/ > /dev/null 2>&1 &
        morbo ./ &
        sudo ./bin/ &
    echo "Server initialized succesfully."

#script to shutdown the ravada server

sudo kill -15 $(pidof './')
sudo kill -15 $(pidof -x '')
echo "Server closed succesfully"