COVID-19 Pandemic

In case you’ve missed it, there’s currently (April 18, 2020) a global pandemic ongoing.

Without going in too much detail, since I’m no virologist, here’s a quick intro into the novel Coronavirus.

Coronaviruses (CoV) form a large family of viruses that cause infections ranging from a common cold to serious respiratory conditions, such as the Middle East Respiratory Syndrome (MERS-CoV) and the Severe Acute Respiratory Syndrome (SARS-CoV).

At the end of 2019, a new type of Coronavirus was discovered as part of an outbreak in Wuhan, China. This new virus, SARS-CoV-2, causes the COVID-19 disease.

The coronavirus spreads from human to human via small droplets that are released during coughing and sneezing. Via these droplets, the virus ends up in the air, on objects and surfaces. Whoever inhales these droplets or gets them through their hands into their mouth, nose or eyes can become infected with the virus. There is no evidence that the contamination occurs through the skin. The risk of infection is reduced by keeping more than a metre away from sick people, touching the face as little as possible and paying attention to good hand hygiene.

For the time being there is no antiviral or other effective treatment available for COVID-19. However, in China and elsewhere there are ongoing drug trials with various antiviral drugs.

Check the site of the World Health Organisation for more information on the virus and how R&D is evolving across the world.

Folding@home

Again, I’m no virologist or scientist, so my explanation might be off.

From the Folding@home website:

Folding@home (FAH or F@h) is a distributed computing project for simulating protein dynamics, including the process of protein folding and the movements of proteins implicated in a variety of diseases. It brings together citizen scientists who volunteer to run simulations of protein dynamics on their personal computers. Insights from this data are helping scientists to better understand biology, and providing new opportunities for developing therapeutics.

To help fight COVID-19 (but also many other diseases), you can donate compute power to the Folding@home cluster. This way, people all over the world can help build a kind of supercomputer.

This supercomputer runs simulations of protein movement. Using these simulations, drug researchers can look for sites within the protein where drugs might be able to bond, in order to slow down, halt or even cure a disease.

Folding@home is already working on research fighting Alzheimer’s, Cancer, Huntington’s and Parkinson’s disease. They’ve also included simulations for COVID19 research (more info on their site).

And you can help!

Installing Folding@home

Installing FAH is pretty easy. Below I’ll explain how I set up a Linux container (LXC) on Proxmox Virtual Environment.

Container (LXC) vs Virtual Machine (VM)

I’m definitely not claiming to be an expert on this topic.

The way I’ve been explained the difference is that a Linux Container (LXC) will run in the server’s kernel and is a such ideal for Linux (virtual) systems.
If you’re running a different OS, which requires kernel virtualisation (e.g. Windows), you’ll need to deploy this system in a VM.

Running a system as a container should in theory be as safe as running in a VM.
However, if you’re running a production system or anything that requires more security, you may prefer the extra isolation between the kernels.

Also, there may be some differences creating backups or deploying multiple instances of containers/VMs.

If you’re planning on running something in a production environment, be sure to compare to pros and cons of both.
In this case, for a system that’ll only run the FAHClient from within a private network, I’m happy with my current knowledge of the workings and safety of LXCs.

Creating a Proxmox container

First of all, create a new container in Proxmox. If you’ve never done this before, you’ll probably need to download an image first.

SSH into your Proxmox host or open a console (Shell) via the web interface.

The list of available images is updated daily, but you can trigger an update manually as well.

# pveam update

To view the list of available images run:

# pveam available

Download the image of your choosing. In a basic installation of Proxmox, you’ll probably want to store the image in the local storage.

# pveam download local debian-10.0-standard_10.0-1_amd64.tar.gz

You are now ready to create containers using that image, and you can list all downloaded images on storage local with:

# pveam list local
local:vztmpl/debian-10.0-standard_10.0-1_amd64.tar.gz  219.95MB

We can then continue in the web interface to launch our container and install Folding@home.

Create CT

Proxmox numbers containers and VMs. By default this is an incrementing number, but you can pick a different (non-colliding) ID.
You’ll need to give a container a hostname and pick a password for the root user. You can also provide a SSH pubkey.

LXC - General

Next, pick the template you want to use. I’ll pick the debian 10.0 template.
If you’ve configured an alternative storage location for your containers, you can select it here.

LXC - Template

Choose how big you want the root hard drive to be, 8 GiB is fine.
Again, you can pick a different storage location, if you’ve configured one.

LXC - Root disk

Assign CPU cores to the container.
You’ll want to select quite a big number of CPU cores, but make sure you’re not negatively impacting the rest of your system (e.g. by loading all cores).
My server has 12 cores and is currently not running many VMs/LXCs, so I’m assigning 8 cores to the folding machine.

LXC - CPU

On the RAM side, I’ve picked 1 GiB per core.
I don’t really have a methodology to pick a size. More RAM might be usefull to keep more data in the faster memory compared to storing data on disk.

LXC - RAM

Provide a static IP to the container or configure it to use DHCP.
If necessary, you can choose your own MAC address or configure VLAN tagging.

LXC - Network

Set a DNS domain name, if you want/need to.
If you’re not providing DNS server IPs via the host or your DHCP leases, you can set a static DNS IP here.

LXC - DNS

Finally review and confirm your settings.
You can check the box here to boot the container as soon as it’s created.

LXC - Confirm

Once the container has booted, we can start with the installation of the Folding@home software.

Installing the Folding@home Client

You can perform the following actions from the online Console (shell).
If you uploaded a SSH pubkey to the box, you’ll be able to SSH into the container. Otherwise, you’ll first need to use the Console to edit the sshd_config file to allow root logging with a password. For this, open /etc/ssh/sshd_config and change #PermitRootLogin prohibit-password into PermitRootLogin yes. Note that this is not recommended for production systems or systems in untrusted networks.

In the next steps we will download and install the Folding@home software version 7.6.9. Make sure to check the Download page for the links to the most recent version.

First we’ll update our system, and download and install the FAHClient.

# apt update && apt full-upgrade -y && apt dist-upgrade -y && apt autoremove -y
# wget https://download.foldingathome.org/releases/public/release/fahclient/debian-stable-64bit/v7.6/fahclient_7.6.9_amd64.deb
# dpkg -i --force-depends fahclient_7.6.9_amd64.deb

During the installation process, we’re asked to enter a few pieces of information:

  • Username: Pick a unique username for yourself. You’ll be able to see your results in an online Dashboard afterwards.
    Use the same username for all systems you’re running. You can also enter the username of someone you’re willing to “donate” your resources too, although a Team might be better suited for collaboration.
  • Team Number: If you’re donating processing power as a team, you can enter it’s number here.
    I picked the team number of Nerdland (go check them out!)
  • Passkey: This Passkey is a unique identifier that ties your contributions directly to you (not just those with your username). The use of a passkey prevents others from cheating using your name.
    This is also needed to score Points. However, the client will run perfectly without (not earning any QRB points).
    You can get a Passkey via this form. The Passkey will be mailed to you and is linked to your username.
  • Resources: how much resources you can offer.
    The info in the dialogue should give you an idea.
  • Autostart: whether you want the FAHClient to start automatically (recommended).

FAHClient Installation - Username
FAHClient Installation - Team Number
FAHClient Installation - Passkey
FAHClient Installation - Resources
FAHClient Installation - Autostart

Configuring FAH Web Control

If you’ve installed the client on your own machine, you should now be able to view the web controll by browsing to:
https://client.foldingathome.org/

Otherwise, you’ll need to modify the FAHClient config to whitelist your IP.

# /etc/init.d/FAHClient stop
# nano /etc/fahclient/config.xml

## Add the following to the end of the config before the </config> XML tag
## Don't forget to change the IP subnet to match yours.
  <!-- Grant remote web access to the following IP -->
  <allow v='127.0.0.1 192.168.0.1/24' />
  <web-allow v='127.0.0.1 192.168.0.1/24' />
</config>

# /etc/init.d/FAHClient start

If you now browse to http://<Folding-IP>:7396, you’ll be able to see the FAHClient web control.

Here you can change your identity (incl. adding Team Number or Passkey), change your resource settings, …
But more importantly: here you can track your progress and see which projects you’re working on.

FAHClient - Server dashboard
FAHClient - Laptop dashboard

You can also keep track of your progress, that of your team and even get a nice certificate at your Donor Page.

Folding@home certificate

Happy folding!

Update 2020-04-21 - FAHClient v7.6.9

As from FAHClient v7.6.9 it’s possible to specify your preference to support research on COVID-19.

Simple select COVID-19 in the “I support research fighting” dropdown in the Web Control, or add the following line to /etc/fahclient/config.xml:

<cause v='COVID_19'/>

To update your client, simple stop the service and install the new versions.

# /etc/init.d/FAHClient stop
# dpkg -i --force-depends fahclient_7.6.9_amd64.deb
# /etc/init.d/FAHClient start