Folding@Home

applications
Report Issue

Folding@home is a distributed computing project aimed to help scientists develop new therapeutics for a variety of diseases by the means of simulating protein dynamics. This includes the process of protein folding and the movements of proteins, and is reliant on simulations run on volunteers' personal computers

Contributors:
README

Folding@Home

Folding@Home is a distributed computing project aimed at simulating protein folding and other molecular dynamics.

User Account

You can setup an User Account to track your PPD (Points per Day) and done WUs (Work Units). To get a Passkey visit the Folding@home Passkey Site

Teams

You can add your earned Points to a Team that you support. This is not nessesary as the points are just to track how much work was done (with some exeptions). Here is the full List of the Teams

Remote Control

You can connect via FAHControl to your instance. WebUI is not supported because it wouldn't be password protected.

CPU Usage Control

There are three power modes:

  • light
  • medium
  • full

Only light and medium are useful because full enables gpu which is not supported in this egg. Light uses half of the available cpu cores of your system. Full uses all of your cpu cores. You can still limit the cpu usage via the panel.

Supported Versions

Versions < v8 are supported. v8 is still beta and wont work with this egg. Get the latest v7 version number here: Folding@Home Downloadserver

Server Ports

Port default
FAHControl 36330
Docker Images (1)
Name Image
Debian ghcr.io/ptero-eggs/yolks:debian
Startup Command
./FAHClient --user={{FAH_USERNAME}} --team={{FAH_TEAM}} --passkey={{FAH_PASSKEY}} $(if {{FAH_ANON}}; then echo "--fold-anon=true"; fi) --command-port={{SERVER_PORT}} --password={{FAH_PASSWORD}} --power={{FAH_POWER}}
Variables (7)

FaH Username

Your Folding@Home Username

Environment:
FAH_USERNAME
Default:
Anonymous
User Viewable:
User Editable:
Rules:
required|string

FaH Team

Your Folding@Home Team that you are folding for. For reference look here: https://stats.foldingathome.org/team

Environment:
FAH_TEAM
Default:
0
User Viewable:
User Editable:
Rules:
required|int

FaH Passkey

Your Folding@Home Passkey for your Username, if not Anonymous. Get your Passkey here: https://apps.foldingathome.org/getpasskey

Environment:
FAH_PASSKEY
Default:
None
User Viewable:
User Editable:
Rules:
nullable|string|max:32

FaH Anonymous Mode

Set to true if you are folding Anonymously

Environment:
FAH_ANON
Default:
true
User Viewable:
User Editable:
Rules:
required|string|in:true,false

FaH Version

Set to wanted major Folding@Home Version. Check here: https://download.foldingathome.org/releases/v7/public/fahclient/debian-stable-64bit/release/

Environment:
FAH_VERSION
Default:
7.6.21
User Viewable:
User Editable:
Rules:
required|string|max:20

FaHControl Password

Set a WebUI Password

Environment:
FAH_PASSWORD
Default:
SetPasswordHere
User Viewable:
User Editable:
Rules:
required|string|max:64

FaH Power

The Powerlevel it should use: - light (only half the cpu power is used) - medium (full cpu power) - full (full cpu and gpu power but gpu is not supported)

Environment:
FAH_POWER
Default:
medium
User Viewable:
User Editable:
Rules:
required|string|in:light,medium,full
Installation Script
Container: ghcr.io/ptero-eggs/installers:debian
Entrypoint: bash
#!/bin/bash
#
# Folding@Home install script
#
# Created by Fuggschen

export DEBIAN_FRONTEND=noninteractive
ARCH=$([[ "$(uname -m)" == "x86_64" ]] && echo "64bit" || echo "arm64")
cd /tmp

echo "Removing previous Version"
mv /mnt/server/config.xml /tmp/config.xml
rm -rf /mnt/server/*

echo "Installing dependencies"
apt update && apt upgrade -y && apt install curl bzip2 -y

echo "Downloading FAHClient"
curl -sSL -o fahclient.tar.bz2 https://download.foldingathome.org/releases/v7/public/fahclient/debian-stable-${ARCH}/release/fahclient_${FAH_VERSION}-64bit-release.tar.bz2

echo "Installing FAHClient"
tar -xjf fahclient.tar.bz2 -C /mnt/server --strip-components=1

echo "Cleaning up.."
rm -f fahclient.tar.bz2
rm -f /mnt/server/sample-config.xml
mv /tmp/config.xml /mnt/server/config.xml

FILE=/mnt/server/config.xml
if [[ ! -f  $FILE ]]
then
echo "Setting up config.xml"
cat > $FILE << EOF
<config>
  <!-- Folding Slots -->
  <slot id='0' type='CPU'/>
  <!-- Maximum CPU Cores to use. Can't be more than 64 -->
  <cpus v='64'/>
</config>
EOF
fi

echo "Done!"