Volunteer Distributed Supercomputer: Install BOINC on Debian

Last edited on 2024-08-27 Tagged under  #boinc   #lmde   #debian   #linux 

The Berkeley Open Infrastructure for Network Computing (BOINC) is a FLOSS "distributed supercomputer" dedicated to science.

There are various projects - each dedicated to a different field of research - that tackle massive computational challenges by breaking them down into thousands of smaller "jobs", then use the BOINC platform to distribute the jobs to a global network of volunteer computers to crunch through the work.

The truth is that our personal computing devices are now so powerful that often their CPUs are idle upwards of 99% of the time waiting for work. BOINC can run in the background and use that idle time to advance science. It can be configured to use as little or as much of the computational capacity of a device as you desire.

BOINC is currently installed on my desktop running Linux Mint Debian Edition (LMDE). I elect to use the latest stable *.deb packages from the project's repository vs the (older) packages provided by Debian.

This is how I do it...

1. Add GPG Key from keyserver

Configuration:

  • Keyserver: keyserver.ubuntu.com
  • Key ID: 40254C9B29853EA6
  • Repository: https://boinc.berkeley.edu/dl/linux/stable/bookworm bookworm main
$ sudo gpg --homedir /tmp --no-default-keyring --keyring /etc/apt/keyrings/boinc-archive-keyring.gpg --keyserver keyserver.ubuntu.com --recv-keys 40254C9B29853EA6
gpg: keybox '/etc/apt/keyrings/boinc-archive-keyring.gpg' created
gpg: /tmp/trustdb.gpg: trustdb created
gpg: key 40254C9B29853EA6: public key "Vitalii Koshura (BOINC DEB and RPM repos key) <lestat.de.lionkur@gmail.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1

This command includes the following flags:

  • --homedir sets /tmp as the location for creating temporary files
  • --no-default-keyring combined with --keyring outputs in this scenario to a new BOINC-specific keyring, instead of importing into the existing system keyring (the default behaviour)
  • --keyserver combined with --recv-keys specifies the download location and which key to download

2. Add repository to package sources

Add repository:

echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/boinc-archive-keyring.gpg] https://boinc.berkeley.edu/dl/linux/stable/bookworm bookworm main" | sudo tee /etc/apt/sources.list.d/boinc.list

Update sources:

sudo apt update

3. Apt pinning

Set a preference for installing BOINC's own packages over the default package in Debian by increasing its "pin-priority":

printf "Package: *\nPin: origin boinc.berkeley.edu\nPin-Priority: 990\n" | sudo tee /etc/apt/preferences.d/boinc.pref

Update and display the new priorities (example: for package boinc-client):

$ sudo apt update
$ apt-cache policy boinc-client
boinc-client:
  Installed: (none)
  Candidate: 8.0.2-715
  Version table:
     8.0.2-715 990
        990 https://boinc.berkeley.edu/dl/linux/stable/bookworm bookworm/main amd64 Packages
     7.20.5+dfsg-1.1 500
        500 https://deb.debian.org/debian bookworm/main amd64 Packages

4. Install

NOTE: On headless systems like home servers, omit the boinc-manager graphical utility. On such systems, the BOINC client can be controlled either using boinccmd, or using a remote GUI.

sudo apt install boinc-client boinc-manager

Installation creates a new user and group, both labelled boinc. All created files and running processes belong to this user.

Add your username to the boinc group:

sudo adduser <your_username> boinc

5. Run

The BOINC Manager utility is boincmgr. Upon first launch, it opens in "Simple View" and prompts to select a distributed project to join.

Example: I crunch data for Einstein@Home. There are many to choose from: Choosing BOINC projects

For viewing progress and settings, in the menu choose View->Advanced View... for a more complete interface.

Go to Options->Computing preferences... and set when BOINC is allowed to run, number of CPUs to use, etc.

BOINC computing preferences

6. Launch BOINC at boot

sudo systemctl enable boinc-client.service

7. Resources

You can like, share, or comment on this post on Mastodon 💬

Thanks for reading! Read other posts?

» Next: Run BOINC on a headless Linux server

« Previous: Converting a tablet into a digital photo frame