Sécuriser Open WebUI en HTTPS avec Caddy sur Debian
- Mise à jour le 19 oct. 2026
Dans un précédent tutoriel, j’ai expliqué comment installer Open WebUI sur Debian. Pour rappel, Open WebUI est une interface web autohébergée qui permet aux utilisateurs d’interagir avec des grands modèles de langage (LLM) depuis leur navigateur.
Par défaut, l’installation d’Open WebUI décrite dans ce tutoriel utilise une connexion HTTP non chiffrée. Si cela peut être acceptable dans un environnement de test, cette configuration présente des risques de sécurité en production ou en entreprise. Les identifiants, les mots de passe et les conversations peuvent notamment être interceptés lorsqu’ils transitent sur le réseau sans chiffrement.
Pour sécuriser l’accès à Open WebUI en HTTPS, nous allons configurer un proxy inverse (reverse proxy) avec Caddy, un serveur web léger et performant qui prend en charge la gestion automatique des certificats TLS. Caddy permet d’activer simplement les connexions chiffrées et de sécuriser Open WebUI sans configuration complexe.
Architecture
Comme l’illustre le schéma ci-dessous, nous allons utiliser Caddy comme reverse proxy pour sécuriser l’accès à Open WebUI. Caddy reçoit les connexions HTTPS sur le port 443/tcp, gère les certificats TLS et transmet les requêtes au service Open WebUI qui écoute sur le port 8080/tcp.
Dans cette configuration, Caddy et le conteneur Docker Open WebUI s’exécutent sur le même serveur Debian. Caddy assure le chiffrement HTTPS, tandis que les échanges entre le reverse proxy et Open WebUI s’effectuent localement en HTTP.
Installer Caddy
Dans cette section, nous allons installer et configurer Caddy sur notre serveur Debian. Caddy jouera le rôle de reverse proxy : il recevra les connexions HTTPS et transmettra les requêtes au service Open WebUI exécuté localement sur le port 8080.
- Mettez à jour la liste des paquets et installez Caddy depuis les dépôts Debian :
root@host:~# apt update && apt install caddy
- Modifiez le fichier de configuration
/etc/caddy/Caddyfile. RemplacezIP_DEBIANpar l’adresse IP de votre serveur Debian :
# Configuration du reverse proxy HTTPS pour Open WebUI
# Adresse IP du serveur Debian hébergeant Caddy et Open WebUI.
# Remplacez IP_DEBIAN par l’adresse IP du serveur.
IP_DEBIAN {
# Générer et gérer les certificats TLS avec l’autorité de certification interne de Caddy.
# Les appareils clients doivent faire confiance au certificat racine de Caddy.
tls internal
# Transmettre les requêtes HTTPS entrantes à Open WebUI.
# Open WebUI écoute localement sur le port 8080 en HTTP.
reverse_proxy 127.0.0.1:8080
}
- Vérifiez la validité de la configuration de Caddy :
root@host:~# caddy validate --config /etc/caddy/Caddyfile
- Activez le démarrage automatique du service Caddy et redémarrez-le :
root@host:~# systemctl enable caddy
root@host:~# systemctl restart caddy
Vous pouvez maintenant accéder à Open WebUI en HTTPS à l’adresse https://IP_DEBIAN.
Bloquer l’accès HTTP direct à Open WebUI
Maintenant que les utilisateurs peuvent accéder à Open WebUI en HTTPS, nous devons les empêcher de contourner Caddy en se connectant directement au port HTTP non chiffré 8080. Pour cela, nous allons configurer Open WebUI afin qu’il écoute uniquement sur l’interface de boucle locale (127.0.0.1).
- Arrêtez et supprimez le conteneur Docker existant sans supprimer son volume persistant :
root@host:~# docker rm -f open-webui
- Recréez le conteneur Open WebUI en ajoutant la variable d’environnement
HOST=127.0.0.1:
root@host:~# docker run -d \
--network=host \
-v open-webui:/app/backend/data \
-e HOST=127.0.0.1 \
-e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
- Vérifiez qu’Open WebUI écoute uniquement sur
127.0.0.1:8080:
root@host:~# ss -lntp | grep 8080
LISTEN 0 2048 127.0.0.1:8080 0.0.0.0:* users:(("python3",pid=11429,fd=27))
Utiliser des certificats Let's Encrypt
Nous disposons désormais d’un serveur Open WebUI sécurisé en HTTPS grâce aux certificats générés automatiquement par Caddy. Toutefois, ces certificats étant émis par l’autorité de certification (AC) interne de Caddy, le navigateur peut afficher un avertissement de sécurité si les appareils des utilisateurs ne font pas confiance à cette autorité.
En entreprise, vous pouvez préférer des certificats émis par une autorité de certification reconnue publiquement, comme Let's Encrypt. Les utilisateurs peuvent alors accéder à Open WebUI en HTTPS sans avertissement de certificat dans leur navigateur, à condition d’utiliser le nom de domaine couvert par le certificat.
Dans cet exemple, nous allons configurer Caddy pour utiliser des certificats SSL/TLS Let's Encrypt existants, obtenus sur une autre machine puis copiés manuellement sur notre serveur Debian. Cette méthode est particulièrement utile pour les serveurs sans accès à Internet.
- Modifiez le fichier de configuration
/etc/caddy/Caddyfile. Remplacezopenwebui.std.rockspar le nom DNS utilisé pour accéder à votre serveur Open WebUI :
# Configuration du reverse proxy HTTPS pour Open WebUI
# Nom de domaine utilisé pour accéder au serveur Open WebUI.
openwebui.std.rocks {
# Utiliser un certificat Let's Encrypt existant et sa clé privée.
# Les certificats sont copiés manuellement sur ce serveur sans accès à Internet.
tls /etc/caddy/certs/fullchain.pem /etc/caddy/certs/privkey.pem
# Transmettre les requêtes HTTPS entrantes à Open WebUI.
# Open WebUI écoute localement sur le port 8080 en HTTP.
reverse_proxy 127.0.0.1:8080
}
- Créez un répertoire pour stocker les certificats Let's Encrypt :
root@host:~# mkdir -p /etc/caddy/certs
- Copiez-y les fichiers du certificat et de la clé privée :
root@host:~# cp fullchain.pem privkey.pem /etc/caddy/certs/
- Définissez le propriétaire, le groupe et les permissions appropriés :
root@host:~# chown root:caddy /etc/caddy/certs/*.pem
root@host:~# chmod 640 /etc/caddy/certs/*.pem
- Vérifiez la validité de la configuration de Caddy, puis redémarrez le service pour appliquer les modifications :
root@host:~# caddy validate --config /etc/caddy/Caddyfile
root@host:~# systemctl restart caddy
Conclusion
Nous disposons désormais d’une installation Open WebUI sécurisée et accessible en HTTPS. Caddy joue le rôle de reverse proxy et chiffre les communications entre les utilisateurs et l’interface web.
Que vous utilisiez les certificats générés par l’autorité de certification interne de Caddy ou des certificats Let's Encrypt existants, cette configuration contribue à protéger les identifiants et les conversations des utilisateurs contre l’interception sur le réseau. Elle offre également une solution simple et efficace pour sécuriser l’accès à Open WebUI en entreprise.