Fix HAOS compatibility and update documentation

This commit is contained in:
2026-04-04 00:37:10 +02:00
parent b23d0b4072
commit c4ddb25467
12 changed files with 293 additions and 111 deletions

View File

@@ -1,5 +1,15 @@
# Changelog
## 0.8.1
- Dockerfile auf HAOS-kompatible Build-Basis umgestellt (`ARG BUILD_FROM`)
- FAH-Download-Logik korrigiert (arch-spezifisch, kein fehlerhafter "debian"-Filter)
- s6-overlay: LinuxServer-spezifische Abhängigkeiten entfernt (`init-config-end`, `init-config`, `init-services`)
- s6-overlay: Abhängigkeitskette korrigiert (`base → config → video → service`)
- Service-Skript: Syntax-Fehler behoben, alle CLI-Argumente (user, team, passkey, power) ergänzt
- Env-Variable `USER``FAH_USER` (Konflikt mit Shell-Variable vermieden)
- Architektur-Support auf `amd64` und `aarch64` beschränkt (FAH 8 unterstützt kein armhf/armv7)
- Dokumentation vollständig überarbeitet
## 0.8.0
- Aktualisiert auf Folding@home 8.4.
- Initiale Version des Forks.
- Aktualisiert auf Folding@home 8.4
- Initiale Version des Forks

148
DOCS.md
View File

@@ -1,10 +1,144 @@
# Folding@home Add-on Dokumentation
## Konfiguration
- **user**: Dein Folding@home-Benutzername (optional).
- **team**: Team-ID, z. B. 247478 für Home Assistant.
- **passkey**: Dein Folding@home-Passkey (optional).
- **power**: Leistungsstufe (light, medium, full).
## Über dieses Add-on
## Zugriff
- Webinterface: `http://localhost:7396`
Dieses Add-on führt den [Folding@home](https://foldingathome.org/) Client (Version 8.x) als
Home Assistant Add-on aus. Folding@home ist ein verteiltes Rechenprojekt, das die Rechenleistung
deines Computers nutzt, um Proteinfaltungssimulationen für medizinische Forschung durchzuführen
(z. B. Alzheimer, Krebs, COVID-19).
---
## Installation
1. Öffne Home Assistant und gehe zu:
**Einstellungen → Add-ons → Add-on Store**
2. Klicke oben rechts auf **⋮ → Repositories**
3. Füge folgende URL hinzu:
```
https://gitea.bitfire.work/retr0/dont-stop-folding
```
4. Schließe den Dialog das Add-on „Folding@home" erscheint nun im Store
5. Klicke auf das Add-on und dann auf **Installieren**
6. Konfiguriere die gewünschten Optionen (siehe unten)
7. Klicke auf **Starten**
---
## Konfiguration
### Optionen
| Option | Typ | Standard | Beschreibung |
|-----------------|---------|------------|--------------|
| `user` | string | _(leer)_ | Dein Folding@home-Benutzername. Wird für die Statistikseite verwendet. |
| `team` | string | `247478` | Team-ID. `247478` ist das offizielle Home Assistant Team. |
| `passkey` | string | _(leer)_ | Dein persönlicher Passkey von foldingathome.org. Aktiviert Bonus-Punkte. |
| `power` | Auswahl | `medium` | Leistungsstufe: `light`, `medium` oder `full`. |
| `account_token` | string | _(leer)_ | Token für das neue FAH 8 Online-Konto (von foldingathome.org). |
| `machine_name` | string | _(leer)_ | Anzeigename dieser Maschine im FAH-Online-Konto. |
### Beispielkonfiguration
```yaml
user: "mein_benutzername"
team: "247478"
passkey: "abc123..."
power: "medium"
```
Mit FAH 8 Online-Konto:
```yaml
account_token: "eyJ..."
machine_name: "homeassistant"
power: "full"
```
### Leistungsstufen
| Stufe | Beschreibung |
|----------|--------------|
| `light` | Niedrige CPU-Last, läuft im Hintergrund ohne spürbaren Einfluss |
| `medium` | Moderate Last (Standardwert) |
| `full` | Maximale Rechenleistung, kann das System spürbar belasten |
---
## Web-Interface
Nach dem Start ist die Folding@home Web-UI erreichbar unter:
```
http://<homeassistant-ip>:7396
```
Dort kannst du:
- Aktuelle Work Units und Fortschritt einsehen
- Die Leistungsstufe manuell anpassen
- Folding pausieren oder fortsetzen
- Statistiken abrufen
---
## Zwei Kontosysteme
Folding@home bietet zwei Möglichkeiten, Punkte zu sammeln:
### Klassisch (user + passkey)
Das bewährte System erstelle einen Account auf [foldingathome.org](https://foldingathome.org/),
trage Benutzernamen und optional einen Passkey ein.
### FAH 8 Online-Konto (account_token)
Das neue System seit Version 8. Erstelle ein Konto auf
[foldingathome.org](https://foldingathome.org/), generiere einen Token und trage
ihn unter `account_token` ein. `machine_name` gibt der Maschine einen erkennbaren Namen
in deinem Konto-Dashboard.
> Hinweis: Beide Systeme können nicht gleichzeitig aktiv sein. Wenn `account_token`
> gesetzt ist, wird er bevorzugt. Ohne beides wird anonym gefaltet.
---
## Datenspeicherung
Der FAH Client speichert seine Konfiguration und Work-Unit-Daten im
Home Assistant Konfigurationsverzeichnis unter:
```
/config/ (innerhalb des Containers)
```
Die Daten bleiben bei Neustarts und Updates des Add-ons erhalten.
---
## Unterstützte Architekturen
| Architektur | Unterstützt |
|-------------|-------------|
| `amd64` | ✓ |
| `aarch64` | ✓ |
| `armhf` | ✗ (vom FAH 8 Client nicht unterstützt) |
| `armv7` | ✗ (vom FAH 8 Client nicht unterstützt) |
---
## Problembehandlung
### Add-on startet nicht
- Prüfe im Log-Tab des Add-ons auf Fehlermeldungen
- Stelle sicher, dass Port `7396` nicht von einem anderen Dienst belegt ist
### Web-Interface nicht erreichbar
- Warte 3060 Sekunden nach dem Start der FAH Client benötigt etwas Zeit zum Initialisieren
- Prüfe, ob das Add-on im Status „Läuft" angezeigt wird
### Keine Punkte / kein Fortschritt
- Der FAH Server weist Work Units zu bei geringer Auslastung der Server kann es zu Wartezeiten kommen
- Prüfe im Web-Interface unter `http://<ip>:7396`, ob aktiv gefaltet wird
- Stelle sicher, dass `user` und `team` korrekt eingetragen sind
### Anonym falten
Wenn weder `user` noch `account_token` gesetzt sind, werden Beiträge unter dem
anonymen Benutzer gesammelt. Die Leistung ist identisch, nur die Statistiken werden
keinem Konto zugeordnet.

View File

@@ -1,48 +1,60 @@
# syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-ubuntu:noble
ARG BUILD_FROM
FROM $BUILD_FROM
# set version label
ARG BUILD_DATE
ARG VERSION
ARG FOLDINGATHOME_RELEASE
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="aptalca"
ARG BUILD_REF
ARG BUILD_VERSION
ARG BUILD_ARCH
#Add needed nvidia environment variables for container toolkit
LABEL \
io.hass.name="Folding@home" \
io.hass.description="Run Folding@home to contribute to scientific research" \
io.hass.arch="${BUILD_ARCH}" \
io.hass.type="addon" \
io.hass.version=${BUILD_VERSION} \
maintainer="retr0"
# Add needed NVIDIA environment variables for container toolkit
ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility"
# global environment settings
# Prevent interactive prompts during package installation
ENV DEBIAN_FRONTEND="noninteractive"
RUN \
echo "**** install runtime packages ****" && \
apt-get update && \
apt-get install -y \
bzip2 \
intel-opencl-icd \
libexpat1 && \
ln -s libOpenCL.so.1 /usr/lib/x86_64-linux-gnu/libOpenCL.so && \
echo "**** install foldingathome ****" && \
download_url="https://download.foldingathome.org/releases/public/fah-client/"$(curl -s https://download.foldingathome.org/releases/public/fah-client/meta.json | jq -r '.[] | select((.package | contains("debian")) and (.package | contains("release"))) | .package' | grep -v "arm64" | grep "tar.bz2") && \
curl -o \
/tmp/fah.tar.bz2 -L \
${download_url} && \
tar xf /tmp/fah.tar.bz2 -C /app --strip-components=1 && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** cleanup ****" && \
apt-get clean && \
rm -rf \
/tmp/* \
/var/lib/apt/lists/* \
/var/tmp/* \
/var/log/*
echo "**** install runtime packages ****" && \
apt-get update && \
apt-get install -y --no-install-recommends \
bzip2 \
curl \
jq \
libexpat1 \
netcat-openbsd && \
echo "**** install foldingathome ****" && \
if [ "${BUILD_ARCH}" = "aarch64" ]; then \
ARCH_PATTERN="arm64"; \
else \
ARCH_PATTERN="x86_64"; \
fi && \
DOWNLOAD_PATH=$(curl -fsSL "https://download.foldingathome.org/releases/public/fah-client/meta.json" | \
jq -r --arg arch "${ARCH_PATTERN}" \
'.[] | select((.package | contains("linux")) and (.package | contains("release")) and (.package | contains($arch)) and (.package | endswith(".tar.bz2"))) | .package' \
| head -1) && \
echo "Downloading FAH client: ${DOWNLOAD_PATH}" && \
curl -fsSL "https://download.foldingathome.org/releases/public/fah-client/${DOWNLOAD_PATH}" \
-o /tmp/fah.tar.bz2 && \
mkdir -p /app && \
tar xf /tmp/fah.tar.bz2 -C /app --strip-components=1 && \
echo "**** cleanup ****" && \
apt-get clean && \
rm -rf \
/tmp/* \
/var/lib/apt/lists/* \
/var/tmp/* \
/var/log/*
# add local files
# Add local files
COPY root/ /
# ports and volumes
EXPOSE 7396
VOLUME /config
CMD ["/usr/bin/fahclient", "--config", "/config/config.xml", "${CLI_ARGS}"]

View File

@@ -1,6 +1,4 @@
build_from:
amd64: ghcr.io/hassio-addons/debian-base:7.3.1
armhf: ghcr.io/hassio-addons/debian-base:7.3.1
armv7: ghcr.io/hassio-addons/debian-base:7.3.1
aarch64: ghcr.io/hassio-addons/debian-base:7.3.1
amd64: ghcr.io/hassio-addons/debian-base/amd64:7.3.1
aarch64: ghcr.io/hassio-addons/debian-base/aarch64:7.3.1
squash: false

View File

@@ -1,12 +1,10 @@
name: Folding@home
version: 0.8.0
version: 0.8.1
slug: foldingathome
description: Run Folding@home to contribute to scientific research
url: https://gitea.bitfire.work/retr0/dont-stop-folding
arch:
- amd64
- armhf
- armv7
- aarch64
init: false
ports:
@@ -23,7 +21,7 @@ options:
account_token: ""
machine_name: ""
environment:
USER: "{user}"
FAH_USER: "{user}"
TEAM: "{team}"
PASSKEY: "{passkey}"
POWER: "{power}"

View File

@@ -1,14 +1,36 @@
# Folding@home Home Assistant Add-on
# dont-stop-folding
Ein Community-gepflegtes Add-on für Home Assistant, um Folding@home (Version 8.4) auszuführen und zur wissenschaftlichen Forschung beizutragen.
Home Assistant Add-on für [Folding@home](https://foldingathome.org/) nutze die Rechenleistung
deines Home Assistant Servers, um zur wissenschaftlichen Forschung beizutragen.
## Was ist Folding@home?
Folding@home ist ein verteiltes Rechenprojekt der Washington University. Es simuliert
Proteinfaltungen, um Krankheiten wie Alzheimer, Krebs und Virusinfektionen besser zu verstehen.
Jeder Haushalt mit einem laufenden Server kann einen Beitrag leisten.
## Installation
1. Füge dieses Repository in Home Assistant hinzu: `https://gitea.bitfire.work/retr0/dont-stop-folding`
2. Installiere das Add-on über den Add-on-Store.
3. Konfiguriere Benutzername, Team-ID (z. B. 247478 für Home Assistant) und andere Einstellungen.
## Dokumentation
Siehe [DOCS.md](DOCS.md) für Details.
1. **Repository hinzufügen** in Home Assistant:
**Einstellungen → Add-ons → Add-on Store → ⋮ → Repositories**
```
https://gitea.bitfire.work/retr0/dont-stop-folding
```
2. **Add-on installieren** suche nach „Folding@home" im Store
3. **Konfigurieren und starten**
Eine vollständige Anleitung inkl. aller Konfigurationsoptionen findest du in der
[Dokumentation](DOCS.md).
## Features
- Folding@home Client 8.x
- Web-Interface auf Port 7396
- Unterstützung für klassische Konten (user + passkey) und FAH 8 Online-Konten (account_token)
- Leistungsstufen: light, medium, full
- Unterstützte Architekturen: `amd64`, `aarch64`
- Konfigurationsdaten bleiben bei Updates erhalten
## Lizenz
MIT License, siehe [LICENSE](LICENSE).
MIT License siehe [LICENSE.txt](LICENSE.txt)

View File

@@ -1,16 +1,5 @@
{
"name": "dont-stop-folding Add-on Repository",
"name": "dont-stop-folding",
"url": "https://gitea.bitfire.work/retr0/dont-stop-folding",
"maintainer": "retr0",
"addons": {
"foldingathome": {
"name": "Folding@home",
"version": "0.8.0",
"slug": "foldingathome",
"description": "Run Folding@home to contribute to scientific research",
"url": "https://gitea.bitfire.work/retr0/dont-stop-folding",
"arch": ["amd64", "armhf", "armv7", "aarch64"],
"image": "local/addon-foldingathome:{version}"
}
}
"maintainer": "retr0"
}

View File

@@ -1,6 +1,6 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
# permissions on config root and folders
lsiown -R abc:abc \
/config
echo "**** setting up config directory ****"
mkdir -p /config
chmod 755 /config

View File

@@ -1,27 +1,46 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
if [[ -n "${ACCOUNT_TOKEN}" ]] && [[ -n "${MACHINE_NAME}" ]]; then
TOKEN_AND_NAME="--account-token ${ACCOUNT_TOKEN} --machine-name ${MACHINE_NAME}"
else
echo '
***************************************************************************
***************************************************************************
**** ****
**** ****
**** On first run, both the ACCOUNT_TOKEN and the MACHINE_NAME ****
**** env vars are required. Please set them and recreate the container ****
**** unless the instance was previously added to online account. ****
**** ****
**** ****
***************************************************************************
***************************************************************************
'
declare -a args
# Network: bind to all interfaces, allow all connections
args+=(--http-addresses "0.0.0.0:7396")
args+=(--allow "0/0")
# FAH account credentials
if [[ -n "${FAH_USER}" ]]; then
args+=(--user "${FAH_USER}")
fi
if [[ -n "${TEAM}" ]]; then
args+=(--team "${TEAM}")
fi
if [[ -n "${PASSKEY}" ]]; then
args+=(--passkey "${PASSKEY}")
fi
# Power level (light, medium, full)
if [[ -n "${POWER}" ]]; then
args+=(--power "${POWER}")
fi
# Online account token (new FAH 8 account system)
if [[ -n "${ACCOUNT_TOKEN}" ]]; then
args+=(--account-token "${ACCOUNT_TOKEN}")
if [[ -n "${MACHINE_NAME}" ]]; then
args+=(--machine-name "${MACHINE_NAME}")
fi
fi
if [[ -z "${FAH_USER}" ]] && [[ -z "${ACCOUNT_TOKEN}" ]]; then
echo "INFO: No FAH_USER or ACCOUNT_TOKEN set — folding anonymously."
fi
# Run from /config so fah-client stores its data there
mkdir -p /config
cd /config || exit 1
exec \
s6-notifyoncheck -d -n 300 -w 1000 -c "nc -z localhost 7396" \
cd /config s6-setuidgid abc /app/fah-client \
--http-addresses 0.0.0.0:7396 --allow 0/0 ${TOKEN_AND_NAME} \
${CLI_ARGS}
/app/fah-client "${args[@]}" ${CLI_ARGS}