Latest Update: August 10, 2020
Join The National Upcycled Computing Collective (NUCC) in a collaborative effort to combine our resources in order to aid in COVID-19 research. This project draws heavily from BOINC's default Docker configurations. The difference is that without registering for any accounts or sharing any personal information, you will automatically be connected to NUCC's ongoing Rosetta@home folding research team that is actively processing COVID-19-specific workloads.
Copy/paste the following one-liner to get started immediately on MacOS or Linux:
docker run -d --restart always --name boinc -p 31416 -v "${HOME}/.boinc:/var/lib/boinc" -e BOINC_GUI_RPC_PASSWORD="123" -e BOINC_CMD_LINE_OPTIONS="--allow_remote_gui_rpc --attach_project http://boinc.bakerlab.org/rosetta/ 2108683_fdd846588bee255b50901b8b678d52ec" boinc/client:baseimage-alpine
brew tap nuccinc/nucc && brew install nucc
- Windows:
C:\PROGRA~1\BOINC\boinccmd.exe --project_attach http://boinc.bakerlab.org/rosetta/ 2108683_fdd846588bee255b50901b8b678d52ec
- MacOS:
(/Applications/BOINCManager.app/Contents/Resources/boinc -redirectio "/Library/Application Support/BOINC Data/" --daemon --allow_remote_gui_rpc --attach_project http://boinc.bakerlab.org/rosetta/ 2108683_fdd846588bee255b50901b8b678d52ec &) >/dev/null 2>&1 && open /Applications/BOINCManager.app
- Linux:
boinccmd --project_attach http://boinc.bakerlab.org/rosetta/ 2108683_fdd846588bee255b50901b8b678d52ec
Note: If you don't have things configured exactly right, you may have to pass the password located in gui_rpc_passwd.cfg
in the command line to boinccmd
.
Example: boinccmd --passwd <yourpassword> --project_attach http://boinc.bakerlab.org/rosetta/ 2108683_fdd846588bee255b50901b8b678d52ec
Contents
- Automated Linux/MacOS Native Installation
- Automated Linux/MacOS Docker-based Installation
- Automated Windows Native Installation
- Automated Windows Docker-based Installation
- FreeBSD/FreeNAS Jail Installation
- Manual Installation
- Docker Supported Architectures and Tags
- Docker Swarm Mode
- Viewing and Managing Workloads
- BOINC Commands and Shortcuts
- Additional NUCC Projects
- Connecting to Additional NUCC Projects
- Updates
- About NUCC
- Supported Operating Systems:
- MacOS
- Ubuntu
- Debian
- Fedora
- CentOS/RHEL/Amazon Linux
- Kali
git clone https://github.com/nuccinc/distributed-computing
cd nucc
./quickstart.sh
If Docker is not already installed, the quickstart.sh
script will install Docker via The Almost Universal Docker Installer,
then pull the official boinc/client image from DockerHub (base-alpine
by default).
You can run a custom image by running IMG=boinc/client[tag-name] ./quickstart.sh --docker
(see Supported Architectures and Tags).
- MacOS 10.8+
- Ubuntu
- Debian 8+
- Raspbian 8+
- CentOS/RHEL/Amazon Linux
- Fedora 30+
- Arch
- Kali 2018
git clone http://github.com/nuccinc/distributed-computing
cd nucc
./quickstart.sh --docker
If you already have a team or want to specify an alternate project, don't be discouraged -- you can still use quickstart.sh
! Simply speficy your project URL and/or weak key
in the supported environment variables:
Environment variable | Default value if unset |
---|---|
$IMG |
boinc/client:baseimage-alpine |
$VOLUME |
$HOME/.boinc |
$PROJECT_URL |
http://boinc.bakerlab.org/rosetta/ |
$WEAK_KEY |
2108683_fdd846588bee255b50901b8b678d52ec |
$BOINC_CMD_LINE_OPTIONS |
--allow_remote_gui_rpc --project_attach ${PROJECT_URL} ${WEAK_KEY} |
$BOINC_GUI_RPC_PASSWORD |
[prompt] |
If you are running firewalld
or ufw
or something like that, you will need to either create a rule for the docker0
interface on port 31416
.
Alternately, you can disable the service altogether by running systemctl disable firewalld
(etc.), and then rebooting.
This is necessary to be able to resolve DNS inside the containers.
If you have already installed and spun up a container via quickstart.sh
, just implement the firewall rules and run docker restart boinc
.
If you disable the firewall completely, the boinc
container should spin up immediately after reboot and will be able to process workloads successfully.
- Download the zip file of the repository
- Navigate to your Downloads folder, and unzip
nucc-master.zip
- Open the
nucc-master
folder - Right click on
quickstart.bat
, and clickRun as Administrator
- Agree to the firewall notice if it pops up
- Open the
Alternatively, if you have git
installed, launch an elevated (Administrator) command promt and run the following:
git clone https://github.com/nuccinc/distributed-computing
cd nucc
quickstart.bat
This will install the Chocolatey package manager, which will then install BOINC.
It will automatically connect to the correct project and start processing workloads immediately.
I find it easier to view and manage by going to View > Advanced
, as things appear to be more organized.
Download the zip file of the repository, unzip it, and run quickstart.bat --docker
from an elevated (Administrator) command prompt.
Alternatively, if you have git
installed, launch an elevated (Administrator) command promt and run the following:
git clone https://github.com/nuccinc/distributed-computing
cd nucc
quickstart.bat --docker
This will install the Chocolatey package manager, which will then install Docker Desktop.
When Docker Desktop is launched for the first time, you will need to log out and log back in for it to finish starting up.
- Right-click the Docker icon in the taskbar
- Go to Preferences > Resources > Filesharing
- Check to enable the C drive
- Click "Apply and Restart"
- Wait for Docker to completely finish restarting
- Run
quickstart.bat --docker
again from an elevated prompt to start processing workloads immediately
When running the Docker image for the first time, Windows will ask to confirm if Docker can access your C drive.
Documentation for FreeBSD (specifically, FreeNAS) can be found in this blog post.
If you have any trouble, reach out to me on Discord (if you know me), submit an issue, or leave a comment on the post.
Follow the official instructions to install BOINC locally.
After starting BOINC, cancel out of the "Select a Project" window if it pops up, and run the command below to start choochin':
boinccmd --project_attach http://boinc.bakerlab.org/rosetta/ 2108683_fdd846588bee255b50901b8b678d52ec
If running on Linux or MacOS, you may find it easier to go to View > Advanced
to monitor things.
Note: boinccmd
is typically only in your $PATH
on Linux.
Not all of the BOINC images below are compatible with the COVID-19 Rosetta@home workloads. To be perfectly clear, Rosetta@home is only handing out processor-focused workloads. This means if you want to take advantage of your beefy GPU, you will be better off focusing on something like Folding@home, which can take advantage of that.
The current issue with Folding@home is that the number of servers sending data back is causing a DDOS on their systems as they are receiving the folded results. As a result of this, the work units aren't finishing, and no work can be handed out. They have engaged several companies to help, but this is the primary reason for NUCC choosing to work with Rosetta@home for the COVID-19 research in particular, as they are handing out 100% COVID-19-specific work units immediately and efficiently.
NUCC will have additional projects in the future with Folding@home and GPUGRID, and we will continue to update this page with instructions on how to connect to those particular projects.
However, in the meantime, Rosetta@home remains the best possible solution for continuously receiving and processing workloads that specifically target COVID-19 in particular, which is why NUCC has chosen the current solution.
BOINC's default image is baseimage-ubuntu
or latest
, which uses glibc
, however NUCC's default image from the quickstart scripts
is baseimage-alpine
, which uses musl
instead. If this causes any issues with future projects, we will change to the Ubuntu base image,
but for now, Alpine is working perfectly with our Rosetta@home workloads, and the image itself is much leaner, which was our reason for choosing
it as our default.
If you wish, you can specify the boinc/client
image with any of the tags below in order to use one of the specialized versions instead of baseimage-alpine
.
These can be used in the Linux/MacOS one-liner at the top of this page or passed as the $IMG
environment variable to quickstart.sh
:
IMG=boinc/client:[image-name] ./quickstart.sh --docker
They can also be passed as a command line argument to to quickstart.bat
:
quickstart.bat --docker --image boinc/client:[image-name]
Tag | Info |
---|---|
latest , baseimage-ubuntu |
Ubuntu based BOINC client. All of BOINC's x86-64 images are based on this. |
baseimage-alpine |
Alpine based BOINC client, wich is much slimmer and used by default with quickstart.bat and quickstart.sh |
amd |
AMD GPU-savvy BOINC client. Check the usage below. |
intel |
Intel GPU-savvy BOINC client. It supports Broadwell (5th generation) CPUs and beyond. Check the usage below. |
intel-legacy |
Legacy Intel GPU-savvy BOINC client (Sandybridge - 2nd Gen, Ivybridge - 3rd Gen, Haswell - 4th Gen). Check the usage below. |
multi-gpu |
Intel & Nvidia-savvy BOINC client. Check the usage below. |
nvidia |
NVIDIA-savvy (CUDA & OpenCL) BOINC client. Check the usage below. |
virtualbox |
VirtualBox-savvy BOINC client. Check the usage below. |
Tag | Info |
---|---|
arm32v7 |
ARMv7 32-bit savvy BOINC client. Check the usage below. |
arm64v8 |
ARMv8 64-bit savvy BOINC client. Check the usage below. |
- Install the ROCm Driver.
- Reboot your system.
- Run the following command.
- Linux:
IMG=boinc/client:amd ./quickstart.sh --docker
- Windows:
quickstart.bat --docker --image boinc/client:amd
- Linux:
- Install the Intel GPU Driver.
- Run the following command:
- Linux:
IMG=boinc/client:intel ./quickstart.sh --docker
- Windows:
quickstart.bat --docker --image boinc/client:intel
- Linux:
- Install the Intel GPU Driver.
- Run the following command:
- Linux:
IMG=boinc/client:intel-legacy ./quickstart.sh --docker
- Windows:
quickstart.bat --docker --image boinc/client:intel-legacy
- Linux:
- Make sure you have installed the NVIDIA driver.
- Install the NVIDIA-Docker version 2.0 by following the instructions here.
- Run the following command:
- Linux:
IMG=boinc/client:multi-gpu ./quickstart.sh --docker
- Windows:
quickstart.bat --docker --image boinc/client:multi-gpu
- Linux:
- Make sure you have installed the NVIDIA driver.
- Install the NVIDIA-Docker version 2.0 by following the instructions here.
- Run the following command:
- Linux:
IMG=boinc/client:nvidia ./quickstart.sh --docker
- Windows:
quickstart.bat --docker --image boinc/client:nvidia
- Linux:
- Install the
virtualbox-dkms
package on the host. - Run the following command:
- Linux:
IMG=boinc/client:virtualbox ./quickstart.sh --docker
- Windows:
quickstart.bat --docker --image boinc/client:virtualbox
- Linux:
- Make sure you have Docker installed on your Raspberry Pi or you are using a Docker friendly OS.
- Run the following command.
- Linux:
IMG=boinc/client:arm32v7 ./quickstart.sh --docker
- Windows:
quickstart.bat --docker --image boinc/client:arm32v7
- Linux:
- Make sure you are using a 64-bit OS on your Raspberry Pi and have Docker installed on your Raspberry Pi.
- Run the following command.
- Linux:
IMG=boinc/client:arm64v8 ./quickstart.sh --docker
- Windows:
quickstart.bat --docker --image boinc/client:arm64v8
- Linux:
You can use a Docker Swarm to launch a large number of clients, for example across a cluster that you are using for BOINC computation. First, start the swarm and create a network,
docker swarm init
docker network create -d overlay --attachable boinc
If you want, you can connect other nodes to your swarm by running the appropriate docker swarm join
command on worker nodes as prompted above (although you can just run on one node too).
Then launch your clients:
docker service create \
--replicas <N> \
--name boinc \
--network=boinc \
-p 31416 \
-e BOINC_GUI_RPC_PASSWORD="123" \
-e BOINC_CMD_LINE_OPTIONS="--allow_remote_gui_rpc --attach_project http://boinc.bakerlab.org/rosetta/ 2108683_fdd846588bee255b50901b8b678d52ec" \
boinc/client
You now have <N>
clients running, distributed across your swarm. You can issue commands to all of your clients via,
docker run --rm --network boinc boinc/client boinccmd_swarm --passwd 123 <args>
Note you do not need to specify --host
. The boinccmd_swarm
command takes care of sending the command to each of the hosts in your swarm.
Docker Swarm does not support pid=host
mode. As a result, client settings related to non-boinc CPU usage or exclusion apps will not take effect.
You have a couple of good options here:
- Best Option: BOINCTASKS
- View tasks from the native BOINC Manager
For various Linux distros, there is also the boinctui
package which allows you to view and control local or remote tasks from the command line.
Addtionally, for BSD, there is the boinc_curses
TUI application, which is similar to boinctui
, although not as polished (yet still very nice and useful).
For basic tasks, you can refer to Boinc Commands and Shortcuts.
BOINCTASKS (Download Here)
This is honestly the best option, especially if you are running BOINC from multiple machines on the same network. The thing I like most about it is that it doesn't require a native BOINC installation if all you need is the BOINC Manager, like if you are running the BOINC Client via Docker or from a different machine on the network. One of the best features is its ability to scan your network for BOINC clients and automatically add them to the management interface. BOINCTASKS is the only option if you want to manage multiple clients from a GUI interface without having to disconnect between viewing each individual client. It's a Windows program, but is FULLY-COMPATIBLE with *nix hosts via Wine. It literally took me less than a minute to get it fully-installed on my Ubuntu laptop, after which I was able to see all the clients on my local network running BOINC, and remotely manage their tasks.
Native BOINC Manager (Official Installation Instructions)
If you are running BOINC via Docker, it's a little redundant to download BOINC natively, but you can do so if you want to view and manage the tasks running from a GUI interface.
- Launch BOINC
- If the "Select a Project" pops up, just cancel out of it if you're connecting to a remote BOINC client or Docker container.
File > Select Computer
- Enter the computer's IP/hostname and password from
gui_rpc_auth.cfg
, and Click "OK".
- Enter the computer's IP/hostname and password from
If you are running BOINC via Docker on your local machine, the IP address will be 127.0.0.1
. Otherwise, enter the IP of the HOST that Docker is running on (not the IP of the container
from the docker0
interface). By specifying -p 31416
in the docker run
command, we mapped the communication port used by the BOINC client in the Docker container to the host machine.
Boingmgr
should have no trouble connecting to any Docker container on the network unless prohibited by firewall rules on operating systems such as CentOS or Fedora,
in which case, you should consult the [#firewall-caveats](Firewall Caveats) mini-section for more information.
Two very good boinccmd
references:
- https://boinc.berkeley.edu/wiki/Boinccmd_tool
- https://www.systutorials.com/docs/linux/man/1-boinccmd/
boinccmd.exe
is located in C:\Program Files\BOINC
You can run boinccmd commands from a command prompt by running C:\PROGRA~1\BOINC\boinccmd.exe [args]
docker exec -it boinc /bin/sh
This will allow you to be on the machine and run boinccmd
commands directly.
docker exec boinc boinccmd --command-arguments-here
Native Installation:
boinccmd --project_attach http://boinc.bakerlab.org/rosetta/ 2108683_fdd846588bee255b50901b8b678d52ec
Docker Installation:
docker exec [container-name] boinccmd --attach_project http://boinc.bakerlab.org/rosetta/ 2108683_fdd846588bee255b50901b8b678d52ec
- You should execute them as-is if running the BOINC client on the host
- You should execute them as-is if you have already exec'd into the Docker container
- You should prepend them with
docker exec [container-name]
if running them against the Docker container with the BOINC client installed.- If BOINC was installed via Docker and one of the quickstart scripts, the container name is
boinc
. - Example:
docker exec -it boinc boinccmd --get_state
- If BOINC was installed via Docker and one of the quickstart scripts, the container name is
boinccmd --project http://boinc.bakerlab.org/rosetta/ nomorework
This is a "graceful stop" and could take up to 24 hours for workloads to completely stop processing:
Later, you can substitue nomorework
with allowmorework
to start pulling tasks again
boinccmd --project http://boinc.bakerlab.org/rosetta/ suspend
boinccmd --project http://boinc.bakerlab.org/rosetta/ resume
docker stop boinc
and docker start boinc
This is not recommended, as your current tasks will be abandoned.
Best practices would be as follows:
docker exec boinc boinccmd --project http://boinc.bakerlab.org/rosetta/ suspend
docker stop boinc
docker start boinc
docker exec boinc boinccmd --project http://boinc.bakerlab.org/rosetta/ resume
The nuccd
helper script will be added to /usr/local/bin/nuccd
as part of the quickstart.sh
install script for Docker-based installations on MacOS and Linux:
#!/bin/bash
usage() {
echo '
USAGE: nuccd [ARGS]
allowmorework requests more work from current project.
nomorwork requests no more work after current work units finish.
suspend suspends all current tasks.
resume resumes all current tasks.
[boinccmd args] execute any boinccmd arguments.
start starts to boinc docker container.
stop stops the boinc docker container.
remove removes the boinc docker container.
uninstall stops and removes container, removes all boinc/client images, and deletes nuccd.
help shows this help dialog
'
}
if [[ $1 = "allowmorework" ]]; then
docker exec boinc boinccmd --project http://boinc.bakerlab.org/rosetta/ allowmorework
elif [[ $1 = "nomorework" ]]; then
docker exec boinc boinccmd --project http://boinc.bakerlab.org/rosetta/ nomorework
elif [[ $1 = "suspend" ]]; then
docker exec boinc boinccmd --project http://boinc.bakerlab.org/rosetta/ suspend
elif [[ $1 = "resume" ]]; then
docker exec boinc boinccmd --project http://boinc.bakerlab.org/rosetta/ resume
elif [[ $1 = "stop" ]]; then
docker stop boinc
elif [[ $1 = "start" ]]; then
docker start boinc
elif [[ $1 = "remove" ]]; then
docker stop boinc 2>/dev/null
docker rm boinc
elif [[ $1 = "uninstall" ]]; then
docker stop boinc 2>/dev/null
docker rm boinc 2>/dev/null
docker images | grep boinc | awk '{print $3}' | xargs docker rmi 2>/dev/null
sudo rm -f /usr/local/bin/nuccd
elif [[ ($1 = "-h") || (-n $(echo "${@}" | grep help)) ]]; then
usage
else
docker exec boinc boinccmd "${@}"
if [[ $? -ne 0 ]]; then
usage
fi
fi
Listed below are the current projects that NUCC is involved in. While we urge that everyone contribute to the default Rosetta@home project for COVID-19 research, whenever there are a shortage of work units, or if you feel like your powerful GPU could be put to better use in a project that doesn't solely rely on CPU processing, please feel free to help contribute to our other projects.
Project | URL | Weak Key |
---|---|---|
Rosetta@home (Default) | https://boinc.bakerlab.org/ |
2108683_fdd846588bee255b50901b8b678d52ec |
GPUGRID | https://www.gpugrid.net/ |
557786_557339997aa264af08d60b87d63b87bf |
World Community Grid | https://www.worldcommunitygrid.org/ |
1106753_8497a4536b5fd28c9ba92b2e5370f680 |
Project | URL | Weak Key |
---|---|---|
Asteroids@home | https://asteroidsathome.net/boinc/ |
451292_98c21ef402d851077468889c8e4eb195 |
Cosmology@home | https://www.cosmologyathome.org/ |
1573916_4e7dff029d28e6412d4f867cedc24a9d |
Einstein@home | https://einsteinathome.org/ |
1024046_72abcfafd8b4bc3b9044122bb38cb8bc |
Milkyway@home | https://milkyway.cs.rpi.edu/milkyway/ |
1376257_e6829810b2778a51599c59eb026ff7d4 |
Universe@home | https://universeathome.pl/universe/ |
209514_cc1405976c0bc31b292c6875c7517274 |
Project | URL | Weak Key |
---|---|---|
NFS@home | https://escatter11.fullerton.edu/ |
485489_09087b82f39f88c873fc0d4337303f21 |
Primegrid | https://escatter11.fullerton.edu/ |
485489_09087b82f39f88c873fc0d4337303f21 |
You can connect to different projects on MacOS and Linux by runnning the following:
PROJECT_URL=[PROJECT_URL] WEAK_KEY=[WEAK_KEY] ./quickstart.sh
On Windows, you can manually edit quickstart.bat
to set the %PROJECT_URL%
and %WEAK_KEY%
variables.
If running with Docker, you will probably want to specify the $IMG
or %IMG%
variables as well, to best suit your specific setup, as listed in
Docker Supported Architectures and Tags.
Refer to the example below:
- Make sure you have installed the NVIDIA driver.
- Install the NVIDIA-Docker version 2.0 by following the instructions here.
- Run the following command:
IMG=boinc/client:nvidia PROJECT_URL=https://www.gpugrid.net/ WEAK_KEY=557786_557339997aa264af08d60b87d63b87bf ./quickstart.sh --docker
Manually edit quickstart.bat
, and set the %PROJECT_URL%
variable to https://www.gpugrid.net/
and %WEAK_KEY%
variable to 557786_557339997aa264af08d60b87d63b87bf
.
Then, just run quickstart.bat
with Administrator privileges.
If BOINC is already installed, you can simply run the following:
C:\PROGRA~1\BOINC\boinccmd.exe --project_attach https://www.gpugrid.net/ 557786_557339997aa264af08d60b87d63b87bf
For native installations, Ubuntu and Kali support the option to choose to install the boinc-client-nvidia-cuda
package:
PROJECT_URL=https://www.gpugrid.net/ WEAK_KEY=557786_557339997aa264af08d60b87d63b87bf ./quickstart.sh
For other distributions, refer to the Manual Installation instructions, and then run the following:
boinccmd --project_attach https://www.gpugrid.net/ 557786_557339997aa264af08d60b87d63b87bf
- Migrated from https://github.com/phx/nucc to official NUCC account
- All code written and recently migrated to official NUCC repository by phoenix.
- Please submit an issue if you have any problems after the repository migrations
- BSD documentation is back online.
- Fixed logic causing Linux native installations to fail.
- Fixed auto-installation for Docker on Kali Linux.
- Added better instructions for connecting to additional projects.
- Changed functionality of
quickstart.sh
, where native installation is default, and--docker
must be supplied explicitly. - Improved Homebrew installation for MacOS.
- Updated instructions for automated native Windows install for less tech-savvy people:
- Right-Click > Run as Administrator will execute native installation as opposed to Docker installation, same as if run without arguments.
quickstart.bat
now requires the--docker
argument for Windows Docker installations.
- Automated native installation for Arch will come last (sorry, but you guys should already know what you're doing)
- Will eventually additional parameters to
quickstart.bat
in the future to specify custom project URL and weak key for both native and Docker-based installations.
The National Upcycled Computing Collective, Inc. is a 501(c)(3) Nonprofit Organization [NTEE U41] Computer Science, Technology & Engineering, Research Institute (EIN 82-1177433) as determined by the Internal Revenue Service. Our mission is to find new uses for technology, thereby extending life cycles with an intent to re-purpose electronic devices responsibly. For more information, please visit http://www.nuccinc.org/about/.