A lightweight and more up to date multi-arch image to run the BOINC client using Docker. It also includes some extra tools to debug any possible issue from within the image (such as ping
, dig
and curl
).
This repository is based on some of the work done over at BOINC/boinc-client-docker.
This Docker image currently support the following architectures: amd64
, arm32v7
& arm64v8
.
NOTE: Though based on the official BOINC Cliemt image, this image does not contain the boinccmd_swarm
wrapper as Docker Swarm does not seem to used much anymore.
If you have Docker running on any of the supported architecture, you should be able to run this image using the following command:
docker run --detach \
--name boinc \
--publish 127.0.0.1:31416:31416 \
--volume /opt/boinc:/var/lib/boinc \
-e BOINC_GUI_RPC_PASSWORD="mypassword" \
-e BOINC_CMD_LINE_OPTIONS="--allow_remote_gui_rpc" \
ghcr.io/0rax/boinc-client:latest
This image being largely inspired by the official BOINC/boinc-client-docker image, it can be configured in pretty much the same way using the following environment variables:
Parameter | Default | Function |
---|---|---|
BOINC_GUI_RPC_PASSWORD |
boinc |
The password what you need to use, when you connect to the BOINC client. |
BOINC_CMD_LINE_OPTIONS |
n/a | Allow custom command line options to be passed to /usr/bin/boinc , adding --allow_remote_gui_rpc will allow all remote client to connect to your BOINC client. |
BOINC_REMOTE_HOST |
127.0.0.1 |
(Optional) Replace the IP with your IP address. In this case you can connect to the client only from this IP. |
TZ |
Etc/UTC |
(Optional) Specify a time zone. The default is UTC +0. |
To enable BOINC configuration and database persistence, you should also attach a volume to /var/lib/boinc
on this container.
To expose the RPC interface of the running BOINC CLIENT, you should expose port 31416 to the host you wish to control it with. A pretty good CLI client to do so is boinctui
available on SourceForge.
Image | Tags | Architecture | Note |
---|---|---|---|
ghcr.io/0rax/boinc-client | v8.0.4 , latest |
amd64 , arm32v7 , arm64v8 |
Multi arch image running BOINC v8.0.4 |
ghcr.io/0rax/boinc-client | v8.0.4-amd64 , amd64 |
amd64 |
amd64 image running BOINC v8.0.4 |
ghcr.io/0rax/boinc-client | v8.0.4-arm32v7 , arm32v7 |
arm32v7 |
arm32v7 image running BOINC v8.0.4 |
ghcr.io/0rax/boinc-client | v8.0.4-arm64v8 , arm64v8 |
arm64v8 |
arm64v8 image running BOINC v8.0.4 |
A complete list of all current and past version can be seen in the GitHub Packages page for this image.
Building images for a "non-native" platform requires the activation of some experimental features in Docker. Mainly the use of docker buildx
, docker manifest
and QEMU's binfmt
integration.
See https://docs.docker.com/buildx/working-with-buildx/ and https://the-empire.systems/cross-architecture-docker-images as a starting point for your setup.
What is important is that your current builder has an output similar to:
$ docker buildx inspect builder
Name: builder
Driver: docker-container
Nodes:
Name: builder0
Endpoint: unix:///var/run/docker.sock
Status: running
Platforms: linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
What's important here is that the linux/amd64
, linux/arm64
and linux/arm/v7
platforms are listed.
If you are missing some platform out of the box, using tonistiigi/binfmt
can be used to install the required emulators by running:
docker run --privileged --rm tonistiigi/binfmt --install arm,arm64
A script is available (see build.sh
) at the root of this repository to help release any new version of the image for all plateform, though if you want to build one image manually you can do so using one the following commands, depending on your target architecture.
docker buildx build --platform "linux/amd64" \
-t boinc-client --build-arg "BUILDARCH=amd64" .
docker buildx build --platform "linux/arm/v7" \
-t boinc-client --build-arg "BUILDARCH=arm32v7" .
docker buildx build --platform "linux/arm64" \
-t boinc-client --build-arg "BUILDARCH=arm64v8" .
docker-boinc-client
is LGPLv3 licensed. See LICENSE.