Indico on a VM

Steve Cowie
Code Enigma
Published in
2 min readAug 18, 2017

For the last few months we’ve been helping the European Centre for Medium Range Weather Forecasting to evaluate the Indico event management system. It’s a Python-based system that has been built and maintained by a team at CERN. In fact, CERN uses Indico to handle much of its event management.

In order to carry out the evaluation, and work out how to control the visual rendering of Indico we needed to get it running in a local development environment so here’s some notes on how we do that and a few gotchas.

We start with using Code Enigma’s standard VM stack, which is maintained by Pascal Morin, and can be cloned from Github. There are full instructions on the Github page but the main points to note are that you’ll need to have Vagrant and Virtualbox installed on your local machine before setting up the ce-vm.

As you’ll see from that vm, it’s essentially designed and optimised for running Drupal sites so you could take that out of the config and just install the base vm. I just let it install the Drupal site because I want to pass feeds from the Indico site back to Drupal. That means the Indico installation is running alongside Drupal and that’s the config shared here.

The documentation for installing Indico on Debian is quite easy to follow. As we already have the latest Nginx running in the VM, we can ignore the update commands for that, but we do update Postgres. The only real problems I hit were the suggested defaults for the user group. What’s suggested is this:

ln -s /etc/uwsgi/apps-available/indico.ini /etc/uwsgi/apps-enabled/indico.ini
cat > /etc/uwsgi/apps-available/indico.ini <<'EOF'
[uwsgi]
uid = indico
gid = nginx
umask = 027

But we use the group ‘www-data’ rather than ‘nginx’.

That applies to both uwsgi and nginx configuration. Also in the nginx config, you need to set a server name in place of “YOURHOSTNAME”.

cat > /etc/nginx/conf.d/indico.conf <<'EOF'
server {
listen 80;
listen [::]:80;
server_name YOURHOSTNAME;
return 301 https://$server_name$request_uri;
}
server {
listen *:443 ssl http2;
listen [::]:443 ssl http2 default ipv6only=on;
server_name YOURHOSTNAME;

I also found that Nginx wouldn’t restart until I removed “http2” from the SSL section. So here’s my setting in the nginx conf file:

That screenshot also shows the path for a self-certified SSL certificate. The process for generating that is covered in the Indico documentation.

And that’s about it! Next, we’ll be overriding the theme so we’ll write that up as soon as we’ve got it figured out.

--

--