test
Some checks failed
Builder / Build addons (localai-p2p-master, amd64) (push) Failing after 9s
Builder / Build addons (localai-p2p-worker, amd64) (push) Failing after 8s
Validate / validate (push) Failing after 2s
Builder / Create release (push) Has been skipped

This commit is contained in:
2025-05-30 15:57:59 +02:00
parent 70e1bebf0d
commit 1364c3c492
24 changed files with 349 additions and 80 deletions

View File

@@ -1,16 +1,17 @@
FROM localai/localai:latest-cpu
# Utiliser la base Ubuntu Home Assistant
ARG BUILD_FROM=ghcr.io/hassio-addons/ubuntu-base:9.0.1
FROM ${BUILD_FROM}
# Installer bashio pour Home Assistant
# Installer LocalAI
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* && \
wget \
ca-certificates && \
wget -O /tmp/localai.tar.gz \
"https://github.com/mudler/LocalAI/releases/download/v2.22.1/local-ai-Linux-x86_64.tar.gz" && \
tar -xzf /tmp/localai.tar.gz -C /usr/local/bin/ && \
chmod +x /usr/local/bin/local-ai && \
rm /tmp/localai.tar.gz && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
@@ -22,8 +23,29 @@ ENV LOCALAI_ADDRESS="0.0.0.0:8080"
ENV LOCALAI_CORS="true"
ENV LOCALAI_CORS_ALLOW_ORIGINS="*"
# Copier le script de démarrage
COPY run.sh /usr/bin/run.sh
RUN chmod +x /usr/bin/run.sh
# Cer le service s6 pour LocalAI
RUN mkdir -p /etc/services.d/localai
COPY run.sh /etc/services.d/localai/run
RUN chmod +x /etc/services.d/localai/run
ENTRYPOINT ["/usr/bin/run.sh"]
# Build arguments
ARG BUILD_DATE
ARG BUILD_REF
ARG BUILD_VERSION
# Labels
LABEL \
io.hass.name="LocalAI P2P Worker" \
io.hass.description="LocalAI P2P federation worker node" \
io.hass.arch="${BUILD_ARCH}" \
io.hass.type="addon" \
io.hass.version=${BUILD_VERSION} \
maintainer="Alex <alex@example.com>" \
org.opencontainers.image.title="LocalAI P2P Worker" \
org.opencontainers.image.description="LocalAI P2P federation worker node" \
org.opencontainers.image.vendor="LocalAI Community" \
org.opencontainers.image.authors="Alex <alex@example.com>" \
org.opencontainers.image.licenses="MIT" \
org.opencontainers.image.created=${BUILD_DATE} \
org.opencontainers.image.revision=${BUILD_REF} \
org.opencontainers.image.version=${BUILD_VERSION}

View File

@@ -1,5 +1,5 @@
name: "LocalAI P2P Worker"
version: "1.0.4.6"
version: "1.0.4.7"
slug: "localai-p2p-worker"
description: "LocalAI P2P federation worker node"
arch:

View File

@@ -1,91 +1,64 @@
#!/bin/bash
#!/command/with-contenv bashio
# shellcheck shell=bash
# ==============================================================================
# LocalAI P2P Worker - Home Assistant Add-on
# ==============================================================================
# Initialiser bashio pour utiliser les fonctions de configuration Home Assistant
# shellcheck disable=SC1091
source /usr/lib/bashio/bashio || {
echo "Bashio not available, using direct JSON parsing"
BASHIO_AVAILABLE=false
}
echo "Starting LocalAI P2P Worker"
# Fonction pour lire la configuration avec fallback
get_config() {
local key="$1"
local default="$2"
if [ -f /data/options.json ]; then
if command -v bashio::config >/dev/null 2>&1; then
bashio::config "$key" 2>/dev/null || echo "$default"
else
# Fallback: utiliser jq pour lire directement le JSON
jq -r ".$key // \"$default\"" /data/options.json 2>/dev/null || echo "$default"
fi
else
echo "$default"
fi
}
bashio::log.info "Starting LocalAI P2P Worker"
# Lire la configuration Home Assistant
if [ -f /data/options.json ]; then
echo "Reading Home Assistant configuration..."
TOKEN="$(get_config 'master_token' '')"
GPU_LAYERS="$(get_config 'gpu_layers' '0')"
DEBUG="$(get_config 'debug' 'false')"
MODELS_PATH="$(get_config 'models_path' '/share/localai/models')"
THREADS="$(get_config 'threads' '8')"
echo "Master Token: $TOKEN"
echo "GPU Layers: $GPU_LAYERS"
echo "Debug: $DEBUG"
echo "Models Path: $MODELS_PATH"
echo "Threads: $THREADS"
else
echo "No Home Assistant config found, using defaults"
TOKEN=""
GPU_LAYERS="0"
DEBUG="false"
MODELS_PATH="/share/localai/models"
THREADS="8"
fi
TOKEN="$(bashio::config 'master_token')"
GPU_LAYERS="$(bashio::config 'gpu_layers')"
DEBUG="$(bashio::config 'debug')"
MODELS_PATH="$(bashio::config 'models_path')"
THREADS="$(bashio::config 'threads')"
bashio::log.info "Configuration loaded:"
bashio::log.info "- Master Token: ${TOKEN:0:20}..."
bashio::log.info "- GPU Layers: ${GPU_LAYERS}"
bashio::log.info "- Debug: ${DEBUG}"
bashio::log.info "- Models Path: ${MODELS_PATH}"
bashio::log.info "- Threads: ${THREADS}"
# Configurer le token P2P si fourni
if [ -n "$TOKEN" ] && [ "$TOKEN" != "null" ] && [ "$TOKEN" != "" ]; then
export LOCALAI_P2P_TOKEN="$TOKEN"
export P2P_TOKEN="$TOKEN"
echo "P2P Token configured"
if bashio::var.has_value "${TOKEN}"; then
export LOCALAI_P2P_TOKEN="${TOKEN}"
export P2P_TOKEN="${TOKEN}"
bashio::log.info "P2P Token configured"
else
echo "No P2P token provided - will generate one"
bashio::log.warning "No P2P token provided - will generate one"
fi
# Créer le répertoire des modèles
mkdir -p "$MODELS_PATH"
bashio::log.info "Creating models directory: ${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
bashio::log.info "Cleaning corrupted files..."
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 variables d'environnement
export THREADS="$THREADS"
export OMP_NUM_THREADS="$THREADS"
export THREADS="${THREADS}"
export OMP_NUM_THREADS="${THREADS}"
# Configurer le debug si activé
if [ "$DEBUG" = "true" ]; then
if bashio::var.true "${DEBUG}"; then
export LOCALAI_DEBUG="true"
export LOCALAI_LOG_LEVEL="debug"
echo "Debug mode enabled"
bashio::log.info "Debug mode enabled"
fi
# Configurer GPU layers si spécifié
if [ "$GPU_LAYERS" -gt 0 ]; then
export LOCALAI_GPU_LAYERS="$GPU_LAYERS"
echo "GPU layers configured: $GPU_LAYERS"
if [ "${GPU_LAYERS}" -gt 0 ]; then
export LOCALAI_GPU_LAYERS="${GPU_LAYERS}"
bashio::log.info "GPU layers configured: ${GPU_LAYERS}"
fi
# Lancer LocalAI
echo "Starting LocalAI with models path: $MODELS_PATH"
exec /build/local-ai run \
--models-path="$MODELS_PATH" \
--threads="$THREADS" \
bashio::log.info "Starting LocalAI with models path: ${MODELS_PATH}"
exec /usr/local/bin/local-ai run \
--models-path="${MODELS_PATH}" \
--threads="${THREADS}" \
--address="0.0.0.0:8080" \
--cors \
--cors-allow-origins="*"