Running my own BOINC Server

BOINC is a open-source software provided by the University of Berkeley and is intended for people to contribute computing time of their computers to running calculations for scientific projects.
Examples of such projects are Einstein@Home, SETI@Home, or LHC@Home among many others.

BOINC client can be run standalone or in connection with Oracle’s VirtualBox. Some projects indeed require VirtualBox to run.

I have been running the BOINC client software for several years now on different platforms like Fedora, Ubuntu, FreeBSD and Windows 10 and contributed to a handful of science projects, but mostly to the LHC@Home.

BOINC also has a server part that let’s you host your own science projects. If you have a lot of computations to do, and need additional computing power, you might want to look at this solution.
BOINC server consists of several parts, such as Apache HTTP server and MySQL databaseserver. However, this is a bit tedious. So thankfully, volunteers provide Docker containers and VirtualBox VMs you can download and use. Details can be found here.

I opted to build an Ubuntu 18.04 LTS Server (gui-less) VM from scratch and install and run a Docker container on it, so as to be sure to have the latest software of each component.

This turned out to be a good choice, but it requires some extensive knowledge of VirtualBox and Docker. In addition, knowledge of Apache2 and MySQL is also required.

The installation is well describe here and went well, there was only one glitch. After installing and running the Docker image, the website’s links all point to http://127.0.0.1, which makes the website unusable when access from another machine outside the Virtual Machine.

This can be solved by logging into the Docker container with

docker-compose exec apache bash

You’ll find yourself in the /projects directory which contains several files. The one to be edited is called config.xml.
In this file, references to http://127.0.0.1 need to be replaced to either the IP address of the externally accessible interface, or the hostname of the VirtualBox.
For production you should chose the public hostname of your BOINC servers.

Screenshot of the finished installation

The next step is to create an actual project (e.g. YourProject@Home) and create downloadable packages for it.
This will be the next step of my project.