Open WebUI
De Le Wiki de Lug
Autres actions
Prérequis
Pour une utilisation de base :
- si Alpine LXC : avec Nesting et keyctl activé (Docker).
- RAM :
- 2 Go → minimum
- 4 Go → recommandé
- 8 Go → confortable
- CPU / vCPU :
- 1 vCPU → suffisant
- 2 vCPU → recommandé
- Espace disque :
- 5 Go → minimum (test uniquement)
- 10 Go → utilisable
- 20 Go → confortable
Installation
- On installe docker (Alpine) :
# apk update && apk upgrade # apk add docker docker-cli-compose curl # rc-update add docker default # rc-service docker start
- On installe le service :
# mkdir -p /opt/openwebui
Le fichier docker-compose :
# vi /opt/openwebui/docker-compose.yml
services:
openwebui:
image: ghcr.io/open-webui/open-webui:main
container_name: openwebui
restart: unless-stopped
ports:
- "3000:8080"
# Pour verrouiller l'écoute sur une seule interface :
# - "IP_SERVEUR:3000:8080"
environment:
- OPENAI_API_BASE_URL=${OPENAI_API_BASE_URL}
- OPENAI_API_KEY=${OPENAI_API_KEY}
- AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST=30
- CORS_ALLOW_ORIGIN=https://openwebui.exemple # facultatif
volumes:
- openwebui_data:/app/backend/data
volumes:
openwebui_data:
(Optionnel) Pour connecter automatiquement Hermes :
# vi /opt/openwebui/.env
OPENAI_API_BASE_URL=http://IP_HERMES:8642/v1 OPENAI_API_KEY=maclefsecrete
On crée le conteneur :
# docker compose -f /opt/openwebui/docker-compose.yml --project-directory /opt/openwebui up -d
- Accéder à l'interface :
http://IP_LXC:3000
vhost
server {
listen 80;
listen [::]:80;
server_name openwebui.exemple.net;
return 301 https://$host$request_uri;
}
server {
server_name openwebui.exemple.net;
# protection
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(self), microphone=(self), camera=(self)" always;
add_header Strict-Transport-Security "max-age=31536000" always;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_read_timeout 3600;
proxy_send_timeout 3600;
proxy_connect_timeout 60;
client_max_body_size 100M;
proxy_pass http://IP_SERVEUR_WEB:3000;
# proxy_pass https://IP_SERVEUR_WEB:PORT; #Alternatif pour redirection sur https
proxy_buffering off; #activer pour désactiver le "buffering"
}
listen [::]:443 ssl; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/openwebui.exemple.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/openwebui.exemple.net/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
}
Mise à jour du conteneur
# docker compose -f /opt/openwebui/docker-compose.yml pull # docker compose -f /opt/openwebui/docker-compose.yml up -d --remove-orphans
Connexion a CrispASR
Speech-to-Text (STT)
- Se rendre dans
Profil → Panneau d’administration → Réglages → Audio. - Dans la section « Reconnaissance vocale », remplacer la valeur de « Moteur de reconnaissance vocale » par
OpenAI. - Renseigner l’adresse du serveur CrispASR ainsi que la clé API. Si aucune authentification n’est activée sur CrispASR, utiliser par exemple la valeur
local. - Cliquer sur le bouton « Enregistrer » situé en bas à droite.
Text-to-Speech (TSS)
- Se rendre dans
Profil → Panneau d’administration → Réglages → Audio. - Dans la section « Text-to-Speech », sélectionner
OpenAIcomme « Moteur de Text-to-Speech ». - Renseigner l’adresse du serveur CrispASR ainsi que la clé API. Si aucune authentification n’est activée sur CrispASR, utiliser par exemple la valeur
local. - Renseigner le champs « Voix de Text-to-Speech » avec un nom de voix disponible sur le serveur.
- Sélectionner le modèle approprié dans « Modèle de Text-to-Speech » ou saisir manuellement son identifiant.
- Dans « Paramètres supplémentaires », ajouter entre les accolades
{}la ligne"consent_attestation": "I have the speaker's consent". - Cliquer sur le bouton « Enregistrer » situé en bas à droite.
(Optionnel) « Paramètres supplémentaires » pour améliorer la synthèse vocale
- Dans « Paramètres supplémentaires », ajouter entre les accolades
{}les paramètres suivants :
{
"consent_attestation": "I have the speaker's consent",
"instructions": "Read the text naturally in its original language. Expand currencies, percentages, dates, units, and common abbreviations according to the language of the text. Ignore Markdown and HTML formatting. Do not pronounce vertical bars, backticks, asterisks, headings, or table separators. Use short pauses between list items and table cells."
}