From 3af6d60f57bfb8c042d6efee24e59f6f580d74cc Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 30 May 2025 15:39:05 +0200 Subject: [PATCH] 44 --- localai-p2p-master/Dockerfile | 36 +++++++++++++++++----------------- localai-p2p-master/run.sh | 25 +++++++++++++++-------- localai-p2p-worker/Dockerfile | 36 +++++++++++++++++----------------- localai-p2p-worker/config.yaml | 2 +- localai-p2p-worker/run.sh | 32 +++++++++++++++++++----------- 5 files changed, 75 insertions(+), 56 deletions(-) diff --git a/localai-p2p-master/Dockerfile b/localai-p2p-master/Dockerfile index bc1a910..457fd2d 100644 --- a/localai-p2p-master/Dockerfile +++ b/localai-p2p-master/Dockerfile @@ -1,12 +1,18 @@ -FROM ghcr.io/hassio-addons/base:15.0.7 +FROM localai/localai:latest-cpu -# Installer LocalAI -RUN apk add --no-cache \ - curl \ - bash \ - && curl -Lo /usr/local/bin/local-ai \ - "https://github.com/mudler/LocalAI/releases/latest/download/local-ai-Linux-x86_64" \ - && chmod +x /usr/local/bin/local-ai +# Installer bashio pour Home Assistant +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + curl jq && \ + curl -J -L -o /tmp/bashio.tar.gz \ + "https://github.com/hassio-addons/bashio/archive/v0.16.2.tar.gz" && \ + mkdir /tmp/bashio && \ + tar zxvf /tmp/bashio.tar.gz --strip 1 -C /tmp/bashio && \ + mv /tmp/bashio/lib /usr/lib/bashio && \ + ln -s /usr/lib/bashio/bashio /usr/bin/bashio && \ + rm -rf /tmp/bashio* && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* # Variables d'environnement pour LocalAI ENV LOCALAI_P2P="true" @@ -16,14 +22,8 @@ ENV LOCALAI_ADDRESS="0.0.0.0:8080" ENV LOCALAI_CORS="true" ENV LOCALAI_CORS_ALLOW_ORIGINS="*" -# Copier le script de démarrage pour s6-overlay -RUN mkdir -p /etc/services.d/localai -COPY run.sh /etc/services.d/localai/run -RUN chmod +x /etc/services.d/localai/run +# Copier le script de démarrage +COPY run.sh /usr/bin/run.sh +RUN chmod +x /usr/bin/run.sh -# Créer un entrypoint qui utilise exec /init -RUN echo '#!/bin/bash' > /entrypoint.sh && \ - echo 'exec /init' >> /entrypoint.sh && \ - chmod +x /entrypoint.sh - -ENTRYPOINT ["/entrypoint.sh"] +ENTRYPOINT ["/usr/bin/run.sh"] diff --git a/localai-p2p-master/run.sh b/localai-p2p-master/run.sh index 46a236c..9cc7bef 100644 --- a/localai-p2p-master/run.sh +++ b/localai-p2p-master/run.sh @@ -1,25 +1,34 @@ -#!/usr/bin/with-contenv bashio +#!/bin/bash -# Les variables d'environnement sont automatiquement disponibles depuis les options echo "Starting LocalAI P2P Master" -echo "GPU Layers: $(bashio::config 'gpu_layers')" -echo "Models Path: $(bashio::config 'models_path')" + +# Lire la configuration Home Assistant +if [ -f /data/options.json ]; then + MODELS_PATH="$(bashio::config 'models_path' 2>/dev/null || echo '/share/localai/models')" + THREADS="$(bashio::config 'threads' 2>/dev/null || echo '8')" + + echo "Models Path: $MODELS_PATH" + echo "Threads: $THREADS" +else + echo "No Home Assistant config found, using defaults" + MODELS_PATH="/share/localai/models" + THREADS="8" +fi # Créer le répertoire des modèles -MODELS_PATH="$(bashio::config 'models_path')" mkdir -p "$MODELS_PATH" # Nettoyer les fichiers corrompus find "$MODELS_PATH" -name "*.yaml" -exec grep -l "#!/usr/bin/with-contenv bashio\|mapping values are not allowed in this context" {} \; 2>/dev/null | xargs rm -f 2>/dev/null || true -# Configurer les threads -export THREADS="$(bashio::config 'threads' || echo '8')" +# Configurer les variables d'environnement +export THREADS="$THREADS" export OMP_NUM_THREADS="$THREADS" # Lancer LocalAI (master génère automatiquement un token) echo "Starting LocalAI Master with models path: $MODELS_PATH" echo "P2P Token will be generated automatically" -exec /usr/local/bin/local-ai run \ +exec /build/local-ai run \ --models-path="$MODELS_PATH" \ --threads="$THREADS" \ --address="0.0.0.0:8080" \ diff --git a/localai-p2p-worker/Dockerfile b/localai-p2p-worker/Dockerfile index bc1a910..457fd2d 100644 --- a/localai-p2p-worker/Dockerfile +++ b/localai-p2p-worker/Dockerfile @@ -1,12 +1,18 @@ -FROM ghcr.io/hassio-addons/base:15.0.7 +FROM localai/localai:latest-cpu -# Installer LocalAI -RUN apk add --no-cache \ - curl \ - bash \ - && curl -Lo /usr/local/bin/local-ai \ - "https://github.com/mudler/LocalAI/releases/latest/download/local-ai-Linux-x86_64" \ - && chmod +x /usr/local/bin/local-ai +# Installer bashio pour Home Assistant +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + curl jq && \ + curl -J -L -o /tmp/bashio.tar.gz \ + "https://github.com/hassio-addons/bashio/archive/v0.16.2.tar.gz" && \ + mkdir /tmp/bashio && \ + tar zxvf /tmp/bashio.tar.gz --strip 1 -C /tmp/bashio && \ + mv /tmp/bashio/lib /usr/lib/bashio && \ + ln -s /usr/lib/bashio/bashio /usr/bin/bashio && \ + rm -rf /tmp/bashio* && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* # Variables d'environnement pour LocalAI ENV LOCALAI_P2P="true" @@ -16,14 +22,8 @@ ENV LOCALAI_ADDRESS="0.0.0.0:8080" ENV LOCALAI_CORS="true" ENV LOCALAI_CORS_ALLOW_ORIGINS="*" -# Copier le script de démarrage pour s6-overlay -RUN mkdir -p /etc/services.d/localai -COPY run.sh /etc/services.d/localai/run -RUN chmod +x /etc/services.d/localai/run +# Copier le script de démarrage +COPY run.sh /usr/bin/run.sh +RUN chmod +x /usr/bin/run.sh -# Créer un entrypoint qui utilise exec /init -RUN echo '#!/bin/bash' > /entrypoint.sh && \ - echo 'exec /init' >> /entrypoint.sh && \ - chmod +x /entrypoint.sh - -ENTRYPOINT ["/entrypoint.sh"] +ENTRYPOINT ["/usr/bin/run.sh"] diff --git a/localai-p2p-worker/config.yaml b/localai-p2p-worker/config.yaml index f6fd8e7..215ebca 100644 --- a/localai-p2p-worker/config.yaml +++ b/localai-p2p-worker/config.yaml @@ -1,5 +1,5 @@ name: "LocalAI P2P Worker" -version: "1.0.4.3" +version: "1.0.4.4" slug: "localai-p2p-worker" description: "LocalAI P2P federation worker node" arch: diff --git a/localai-p2p-worker/run.sh b/localai-p2p-worker/run.sh index 3d3e494..03ddcd3 100644 --- a/localai-p2p-worker/run.sh +++ b/localai-p2p-worker/run.sh @@ -1,14 +1,25 @@ -#!/usr/bin/with-contenv bashio +#!/bin/bash -# Les variables d'environnement sont automatiquement disponibles depuis les options echo "Starting LocalAI P2P Worker" -echo "Master Token: $(bashio::config 'master_token')" -echo "GPU Layers: $(bashio::config 'gpu_layers')" -echo "Models Path: $(bashio::config 'models_path')" + +# Lire la configuration Home Assistant +if [ -f /data/options.json ]; then + TOKEN="$(bashio::config 'master_token' 2>/dev/null || echo '')" + MODELS_PATH="$(bashio::config 'models_path' 2>/dev/null || echo '/share/localai/models')" + THREADS="$(bashio::config 'threads' 2>/dev/null || echo '8')" + + echo "Master Token: $TOKEN" + echo "Models Path: $MODELS_PATH" + echo "Threads: $THREADS" +else + echo "No Home Assistant config found, using defaults" + TOKEN="" + MODELS_PATH="/share/localai/models" + THREADS="8" +fi # Configurer le token P2P si fourni -TOKEN="$(bashio::config 'master_token')" -if [ -n "$TOKEN" ] && [ "$TOKEN" != "null" ]; then +if [ -n "$TOKEN" ] && [ "$TOKEN" != "null" ] && [ "$TOKEN" != "" ]; then export LOCALAI_P2P_TOKEN="$TOKEN" export P2P_TOKEN="$TOKEN" echo "P2P Token configured" @@ -17,19 +28,18 @@ else fi # Créer le répertoire des modèles -MODELS_PATH="$(bashio::config 'models_path')" mkdir -p "$MODELS_PATH" # Nettoyer les fichiers corrompus find "$MODELS_PATH" -name "*.yaml" -exec grep -l "#!/usr/bin/with-contenv bashio\|mapping values are not allowed in this context" {} \; 2>/dev/null | xargs rm -f 2>/dev/null || true -# Configurer les threads -export THREADS="$(bashio::config 'threads' || echo '8')" +# Configurer les variables d'environnement +export THREADS="$THREADS" export OMP_NUM_THREADS="$THREADS" # Lancer LocalAI echo "Starting LocalAI with models path: $MODELS_PATH" -exec /usr/local/bin/local-ai run \ +exec /build/local-ai run \ --models-path="$MODELS_PATH" \ --threads="$THREADS" \ --address="0.0.0.0:8080" \