Bonjour à tous,
N’ayant trouvé aucune solution sur le web, cela fait maintenant plusieurs jour que j’essaye de créer un addon local sous home assistant pour deployer openwebui
Je suis de loins pas un expert dans ce domain. Je bricole beacoup.
Actuellement, je galère au niveau du paramétrage de Nginx afin de rendre compatible OpenWebUI avec Ingress de home assistant.
Le départ est relativement simple :
Au sein du répertoire addons dans home assistant nous allons créer un dossier avec les 4 fichiers suivants :
** Quelques explications **
Le fichier config.yaml permet de déclarer l’addon dans home assistant.
Devant OpenWebUI nous allons placer Nginx pour gérer l’intégration du mode « ingress » sous home assistant.
** Les fichiers **
- config.yaml
name: "OpenWebUI_NGINX"
version: "1.0.0"
slug: "openwebui_nginx"
description: "Intégration de OpenWebUI via Docker."
startup: "application"
arch:
- aarch64
- amd64
- armhf
- armv7
- i386
ports:
3155/tcp: 3155
host_network: false
map:
- "config:rw"
- "share:rw"
options: {}
schema: {}
ingress: true
ingress_port: 3155
panel_icon: mdi:cloud-question
panel_title: "OpenWebUI"
- Dockerfile
# Utiliser une image Python 3.11 comme base
FROM python:3.11-slim
# Installer les dépendances système requises
RUN apt-get update && apt-get install -y \
nginx build-essential libssl-dev libffi-dev python3-dev \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
# Mettre à jour pip
RUN pip install --upgrade pip
# Installer Open WebUI via pip
RUN pip install --no-cache-dir --default-timeout=500 open-webui
# Créer un répertoire pour les fichiers de log NGINX
RUN mkdir -p /var/log/nginx && \
touch /var/log/nginx/error.log /var/log/nginx/access.log && \
chmod -R 777 /var/log/nginx
# Ajouter la configuration NGINX pour le mode ingress
COPY nginx.conf /etc/nginx/nginx.conf
# Copy data for add-on
COPY run.sh /
RUN chmod a+x /run.sh
# Exposer le port utilisé par Open WebUI
EXPOSE 3155
# Démarrer Open WebUI et NGINX (dans le fichier run.sh)
#CMD [ "/etc/services.d/nginx/run.sh" ]
CMD ["/bin/bash", "/run.sh"]
- run.sh
#!/usr/bin/with-contenv bash
echo "Test du fichier run.sh"
nginx -V 2>&1 | grep -- '--with-http_sub_module'
# Lancer Open WebUI en arrière-plan
open-webui serve &
# Lancer NGINX en mode non-daemon
exec nginx -g "daemon off; error_log /dev/stdout debug;"
- nginx.conf
user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Fichiers de logs
error_log /var/log/nginx/error.log debug; # Niveau debug
access_log /var/log/nginx/access.log;
# Définir la variable pour le caractère dollar
geo $dollar {
default "$";
}
# Configuration du serveur pour Home Assistant Ingress
server {
listen 3155;
# Définit les en-têtes spécifiques à Home Assistant Ingress
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-HomeAssistant-Ingress-Path $http_x_ingress_path;
# Désactiver le buffering pour éviter les retards
proxy_buffering off;
# Filtrer et réécrire les chemins basés sur l'en-tête `X-HomeAssistant-Ingress-Path`
set $base_path $http_x_ingress_path;
rewrite $base_path(/.*)?$ $1 break;
# Gestion des requêtes vers Open WebUI
location / {
proxy_pass http://localhost:8080;
# Ajuster les chemins pour inclure le préfixe `X-HomeAssistant-Ingress-Path`
sub_filter '/_app/' "$http_x_ingress_path/_app/";
sub_filter '/static/' "$http_x_ingress_path/static/";
sub_filter '/favicon/' "$http_x_ingress_path/favicon/";
sub_filter "${dollar}{WEBUI_BASE_URL}" "$http_x_ingress_path";
sub_filter_once off;
sub_filter_types text/html text/plain text/javascript;
}
}
}
** Installation **
Dans home assistant, il faut aller dans « Module complémentaire » cliquer sur « Boutique des modules complémentaire » et sélectionner le module « openwebui_nginx » dans la section local
** Lancement **
Dans un navigateur ouvrir l’URL : IP_HOME_ASSISTANT:3155
Cela fonctionne
Si on intègre ce module dans la Barre latérale de home assistant et que l’on clique dessus. Cela ne fonctionne pas et j’ai le message d’erreur suivant :
Quand je regarde les erreurs au niveau du navigateur. J’observe les erreurs suivantes :
Je pense que j’ai un défaut de configuration du niveau de Nginx.
Je poursuis mes recherches, si une personne à quelques idées pour m’aider, ne pas hésiter !