Donate CPU / GPU for Cancer, COVID-19 and co.
TL;DR: Run docker run -d johnktims/folding-at-home
to donate your spare CPU power!
As a software developer, you probably rent some sweet little servers to host all your wonderful awesome services.
You probably also realized that there are not that many people using your services so the server is always running at 0.01
load.
So what should you do with all that idle compute power??
I stumbled across folding@home but all the setup guides don’t fit my needs since in a dockerized world I do not want to install anything (except docker).
I also found Boinc which got native docker support but it is a little weird to get started at first.
Important: These programs run as ‘low priority’ threads. If your other programs need more CPU power, they will get it!
folding@home
Docker
A simple one-liner. Works out of the box!
docker run --restart always --name folding -d -p 7396:7396 johnktims/folding-at-home:latest \
--user=Anonymous --team=0 --gpu=false --smp=true --power=full
# short version with above as default values
docker run -p 7396:7396 -d johnktims/folding-at-home
# stop and remove
docker stop folding && docker rm folding
If you have an account you can also add the --passkey=<insert_key>
parameter and change the user.
There is a neat web ui at http://localhost:7396
to see what you are currently doing.
Available --power
settings are light
, medium
and full
.
--user=Anonymous
and --team=0
basically means: help anybody who needs help and do not add credits to an account.
If you got a dedicated graphics card it is also possible to donate this power! It is way more effective than the CPU.
You need Docker 19.03+ and nvidia-docker-toolkit
installed on your host system. Just add the parameter --gpu all
to your container. Simple as that!
Windows / Mac
I highly recommend to only run this program on a desktop computer or when connected to a power source because it will drain your battery since it is using all the available CPU power on your system.
You can, of course, also use docker here, but why not have a nice gui?
Since this is well documented already, I won’t go into detail here.
Official Windows Guide
Official Mac Guide
Account
If you want to track all the work you did you can set up an account here.
You will get a passkey and username via email.
Errors
14:43:03:ERROR:WU00:FS00:Exception: Could not get an assignment
If you see this ‘error’ log, don’t worry, there is just nothing to do right now. It will try again later and maybe pick up some work!
That means there are a lot of people donating right now. Keep it up!
Boinc
First, you have to pick a project. One client can only participate in one project at a given time.
Click here for a list of all projects.
I pick Rosetta@home for this guide because they are currently working on COVID-19.
First, you have to create an account at the Rosetta Project Page.
Once you are logged in go to the section Account Information
and click on show
to see the Account key
.
At the bottom, you will see a weak account key
. Grab this one, we need it!
Docker
# run
docker run --restart always -d --name boinc --net=host --pid=host \
-e BOINC_CMD_LINE_OPTIONS="--attach_project http://boinc.bakerlab.org/rosetta/ <weak_account_key>" boinc/client
# stop and remove
docker stop boinc && docker rm boinc
If you want to support another project, just swap the project url with the new account key and you are good to go.
If you need more configuration just have a look here to connect a remote GUI RPC.
Desktop
Click here to set up the desktop version or even an Android app.
Errors
No protocol specified
If this will be spammed in the docker logs… don’t worry about it! It is just a warning.
I still have to figure out how to suppress this.