Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions fah-gpu-bastet/.env-example
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FAH_CLIENT_VERSION=8.5.6
FAH_CLIENT_SHA256SUM=643de04033a1cb972a81e3a193d710e919a4f34634a987f11adc4cee61fdaefe
# You can set the following environment variables. Uncomment them to use them.
# VERSION=26.07.0
# CUDA_RELEASE=11.7.1
# ROCM_RELEASE=6.4.4
# RENDER_GID=999
1 change: 1 addition & 0 deletions fah-gpu-bastet/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.env
66 changes: 66 additions & 0 deletions fah-gpu-bastet/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# Folding@home GPU Container

# CUDA 11.7.1 is the lowest version of ubuntu22.04 jammy
ARG CUDA_RELEASE=11.7.1

FROM nvidia/cuda:${CUDA_RELEASE}-base-ubuntu22.04
LABEL description="Official Folding@home GPU Container for Bastet"

ARG ROCM_RELEASE=6.4.4
ARG FAH_CLIENT_VERSION
ARG FAH_CLIENT_SHA256SUM
# Check if mandatory arguments have been provided
RUN : "${FAH_CLIENT_VERSION:?FAH_CLIENT_VERSION is required!}"
RUN : "${FAH_CLIENT_SHA256SUM:?FAH_CLIENT_SHA256SUM is required!}"

RUN apt-get update \
&& apt-get install -y --no-install-recommends \
kmod \
polkitd \
python3 \
python3-websocket \
curl \
# setup OpenCL ICD for nVidia
&& mkdir -p /etc/OpenCL/vendors \
&& echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd \
# get ROCm OpenCL runtime packages
&& mkdir -p --mode=0755 /etc/apt/keyrings \
&& curl -sL https://repo.radeon.com/rocm/rocm.gpg.key | gpg --dearmor > /etc/apt/keyrings/rocm.gpg \
&& printf "deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/${ROCM_RELEASE}/ jammy main" \
| tee /etc/apt/sources.list.d/rocm.list \
&& printf 'Package: *\nPin: release o=repo.radeon.com\nPin-Priority: 600' \
| tee /etc/apt/preferences.d/rocm-pin-600 \
&& apt-get update && apt-get install -y --no-install-recommends \
rocm-opencl-runtime \
rocm-smi-lib \
rocminfo \
# create libOpenCL.so instead of install ocl-icd-opencl-dev
&& ln -s /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /usr/lib/x86_64-linux-gnu/libOpenCL.so \
# add users and groups to properly install fah-client.deb
&& useradd -ms /bin/bash fah-client \
&& groupadd -r render \
&& usermod -aG render,video fah-client \
&& mkdir /fah \
&& chown fah-client:fah-client /fah \
# download and verify checksum
&& curl -fsSL \
https://download.foldingathome.org/releases/public/fah-client/debian-10-64bit/release/fah-client_${FAH_CLIENT_VERSION}_amd64.deb \
-o fah-client.deb \
&& echo "${FAH_CLIENT_SHA256SUM} fah-client.deb" \
| sha256sum -c --strict - \
# install and cleanup
&& DEBIAN_FRONTEND=noninteractive dpkg --install --force-depends fah-client.deb \
&& rm -rf fah-client.deb \
&& apt-get purge --autoremove -y curl \
&& rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*

ENV LD_LIBRARY_PATH=/opt/rocm/lib
ENV PATH=$PATH:/opt/rocm/bin

USER fah-client
WORKDIR "/fah"
VOLUME ["/fah"]
EXPOSE 7396

# allow access outside container (allow option accepts just one entry)
ENTRYPOINT ["fah-client", "--allow", "0/0", "--http-addresses", "0.0.0.0:7396"]
64 changes: 64 additions & 0 deletions fah-gpu-bastet/Dockerfile.amd
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Folding@home AMD ROCm Container

# To reduce the image size, install the minimal packages for OpenCL
# instead of AMD's official ROCm image.
FROM ubuntu:22.04
LABEL description="Folding@home AMD ROCm Container for Bastet"

ARG ROCM_RELEASE=6.4.4
ARG FAH_CLIENT_VERSION
ARG FAH_CLIENT_SHA256SUM
# Check if mandatory arguments have been provided
RUN : "${FAH_CLIENT_VERSION:?FAH_CLIENT_VERSION is required!}"
RUN : "${FAH_CLIENT_SHA256SUM:?FAH_CLIENT_SHA256SUM is required!}"

RUN apt-get update \
&& apt-get install -y --no-install-recommends \
kmod \
polkitd \
python3 \
python3-websocket \
curl \
gnupg \
ca-certificates \
# get ROCm OpenCL runtime packages
&& mkdir -p --mode=0755 /etc/apt/keyrings \
&& curl -sL https://repo.radeon.com/rocm/rocm.gpg.key | gpg --dearmor > /etc/apt/keyrings/rocm.gpg \
&& printf "deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/${ROCM_RELEASE}/ jammy main" \
| tee /etc/apt/sources.list.d/rocm.list \
&& printf 'Package: *\nPin: release o=repo.radeon.com\nPin-Priority: 600' \
| tee /etc/apt/preferences.d/rocm-pin-600 \
&& apt-get update && apt-get install -y --no-install-recommends \
rocm-opencl-runtime \
rocm-smi-lib \
rocminfo \
# create libOpenCL.so instead of install ocl-icd-opencl-dev
&& ln -s /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /usr/lib/x86_64-linux-gnu/libOpenCL.so \
# add users and groups to properly install fah-client.deb
&& useradd -ms /bin/bash fah-client \
&& groupadd -r render \
&& usermod -aG render,video fah-client \
&& mkdir /fah \
&& chown fah-client:fah-client /fah \
# download and verify checksum
&& curl -fsSL \
https://download.foldingathome.org/releases/public/fah-client/debian-10-64bit/release/fah-client_8.5.6_amd64.deb \
-o fah-client.deb \
&& echo "643de04033a1cb972a81e3a193d710e919a4f34634a987f11adc4cee61fdaefe fah-client.deb" \
| sha256sum -c --strict - \
# install and cleanup
&& DEBIAN_FRONTEND=noninteractive dpkg --install --force-depends fah-client.deb \
&& rm -rf fah-client.deb \
&& apt-get purge --autoremove -y curl \
&& rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*

ENV LD_LIBRARY_PATH=/opt/rocm/lib
ENV PATH=$PATH:/opt/rocm/bin

USER fah-client
WORKDIR "/fah"
VOLUME ["/fah"]
EXPOSE 7396

# allow access outside container (allow option accepts just one entry)
ENTRYPOINT ["fah-client", "--allow", "0/0", "--http-addresses", "0.0.0.0:7396"]
51 changes: 51 additions & 0 deletions fah-gpu-bastet/Dockerfile.nvidia
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Folding@home nVidia CUDA Container

# CUDA 11.7.1 is the lowest version of ubuntu22.04 jammy
ARG CUDA_RELEASE=11.7.1

FROM nvidia/cuda:${CUDA_RELEASE}-base-ubuntu22.04
LABEL description="Folding@home nVidia CUDA Container for Bastet"

ARG FAH_CLIENT_VERSION
ARG FAH_CLIENT_SHA256SUM
# Check if mandatory arguments have been provided
RUN : "${FAH_CLIENT_VERSION:?FAH_CLIENT_VERSION is required!}"
RUN : "${FAH_CLIENT_SHA256SUM:?FAH_CLIENT_SHA256SUM is required!}"

RUN apt-get update \
&& apt-get install -y --no-install-recommends \
polkitd \
python3 \
python3-websocket \
curl \
clinfo \
# setup OpenCL ICD for nVidia
&& mkdir -p /etc/OpenCL/vendors \
&& echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd \
# create libOpenCL.so instead of install ocl-icd-opencl-dev
&& ln -s /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /usr/lib/x86_64-linux-gnu/libOpenCL.so \
# add users and groups to properly install fah-client.deb
&& useradd -ms /bin/bash fah-client \
&& groupadd -r render \
&& usermod -aG render,video fah-client \
&& mkdir /fah \
&& chown fah-client:fah-client /fah \
# download and verify checksum
&& curl -fsSL \
https://download.foldingathome.org/releases/public/fah-client/debian-10-64bit/release/fah-client_${FAH_CLIENT_VERSION}_amd64.deb \
-o fah-client.deb \
&& echo "${FAH_CLIENT_SHA256SUM} fah-client.deb" \
| sha256sum -c --strict - \
# install and cleanup
&& DEBIAN_FRONTEND=noninteractive dpkg --install --force-depends fah-client.deb \
&& rm -rf fah-client.deb \
&& apt-get purge --autoremove -y curl \
&& rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*

USER fah-client
WORKDIR "/fah"
VOLUME ["/fah"]
EXPOSE 7396

# allow access outside container (allow option accepts just one entry)
ENTRYPOINT ["fah-client", "--allow", "0/0", "--http-addresses", "0.0.0.0:7396"]
Loading