Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

« Open WebUI » : différence entre les versions

De Le Wiki de Lug
 
(16 versions intermédiaires par le même utilisateur non affichées)
Ligne 28 : Ligne 28 :
  # vi /opt/openwebui/docker-compose.yml
  # vi /opt/openwebui/docker-compose.yml


version: "3.8"
  services:
  services:
   openwebui:
   openwebui:
Ligne 45 : Ligne 43 :
       - OPENAI_API_KEY=${OPENAI_API_KEY}
       - OPENAI_API_KEY=${OPENAI_API_KEY}
       - AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST=30
       - AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST=30
      - CORS_ALLOW_ORIGIN=https://<font color = blue>openwebui.exemple</font> # facultatif
 
     volumes:
     volumes:
       - openwebui_data:/app/backend/data
       - openwebui_data:/app/backend/data
Ligne 60 : Ligne 59 :
* Accéder à l'interface :
* Accéder à l'interface :
  http://<font color = blue>IP_LXC</font>:3000
  http://<font color = blue>IP_LXC</font>:3000
= vhost =
= vhost =
{{Méta bandeau
{{Méta bandeau
Ligne 118 : Ligne 118 :
  # docker compose -f /opt/openwebui/docker-compose.yml pull
  # docker compose -f /opt/openwebui/docker-compose.yml pull
  # docker compose -f /opt/openwebui/docker-compose.yml up -d --remove-orphans
  # docker compose -f /opt/openwebui/docker-compose.yml up -d --remove-orphans
= Connexion a [[CrispASR]] =
== Speech-to-Text (STT) ==
* Se rendre dans <code>Profil → Panneau d’administration → Réglages → Audio</code>.
* Dans la section « Reconnaissance vocale », remplacer la valeur de « Moteur de reconnaissance vocale » par <code>OpenAI</code>.
* 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 <code>local</code>.
* Cliquer sur le bouton « Enregistrer » situé en bas à droite.
== Text-to-Speech (TSS) ==
* Se rendre dans <code>Profil → Panneau d’administration → Réglages → Audio</code>.
* Dans la section « Text-to-Speech », sélectionner <code>OpenAI</code> comme « 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 <code>local</code>.
* 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 <code>{}</code> la ligne <code>"consent_attestation": "I have the speaker's consent"</code>.
* 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 <code>{}</code> les paramètres suivants :
<font color = grey>{
  "consent_attestation": "I have the speaker's consent"</font>,
  "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."
<font color = grey>}</font>

Dernière version du 2 août 2026 à 22:04

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 OpenAI comme « 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."
}