SillyTavern : une interface de chat IA auto-hébergée
SillyTavern est un frontend open source (licence AGPL-3.0) qui se connecte à un ou plusieurs backends de modèles de langage (LLM) pour offrir une interface de chat IA personnalisable depuis un navigateur web. Le projet cumule plus de 35 000 étoiles sur GitHub et supporte de nombreux backends : Ollama, KoboldAI, Text Generation WebUI (oobabooga), OpenRouter, tabbyAPI, ou encore les API OpenAI et Claude.
Contrairement à Open WebUI qui embarque sa propre logique applicative, SillyTavern se positionne comme un client léger : il ne fait tourner aucun modèle lui-même et délègue l'inférence au backend de votre choix. Cela permet de l'installer sur un VPS modeste et de pointer vers une instance Ollama distante ou locale, un serveur dédié avec GPU, ou un fournisseur d'API tiers.
Ce guide couvre le déploiement de SillyTavern avec Docker Compose sur un VPS Linux Ubuntu ou Debian, la mise en place d'un reverse proxy NGINX avec certificat HTTPS Let's Encrypt pour un accès distant sécurisé, et la connexion à une instance Ollama.
Prérequis
- Un VPS Linux sous Ubuntu 22.04+ ou Debian 12+ avec accès root ;
- Docker Engine et Docker Compose installés (installer Docker sur un VPS) ;
- Un nom de domaine avec un enregistrement DNS A pointant vers l'adresse IP du VPS (nécessaire pour le certificat HTTPS) ;
- Les ports 80 et 443 ouverts dans le pare-feu (configurer UFW) ;
- 1 vCPU et 1 Go de RAM suffisent pour SillyTavern seul (l'inférence LLM est déléguée au backend).
Déployer SillyTavern avec Docker Compose
Créez un répertoire de travail et le fichier docker-compose.yml (guide Docker Compose VPS Linux) :
mkdir -p ~/sillytavern && cd ~/sillytavern
nano docker-compose.ymlContenu du fichier Compose :
services:
sillytavern:
image: ghcr.io/sillytavern/sillytavern:latest
container_name: sillytavern
restart: unless-stopped
ports:
- "127.0.0.1:8000:8000"
volumes:
- ./config:/home/node/app/config:rw
- ./data:/home/node/app/data:rw
- ./plugins:/home/node/app/plugins:rw
- ./extensions:/home/node/app/public/scripts/extensions/third-party:rw
environment:
- PUID=1000
- PGID=1000Points importants :
- Le port est lié à
127.0.0.1: SillyTavern n'est pas exposé directement sur Internet. Le reverse proxy NGINX gère l'accès externe avec HTTPS. - Les variables
PUIDetPGIDfont tourner le conteneur avec les permissions d'un utilisateur non root (UID/GID 1000 par défaut sur Ubuntu et Debian). - Les quatre volumes conservent la configuration, les données utilisateur (personnages, historiques), les plugins serveur et les extensions d'interface entre les mises à jour.
Lancez le conteneur :
docker compose up -d
docker compose logs -f sillytavernAttendez la ligne SillyTavern is listening on dans les logs. Vérifiez que le service répond localement :
curl -s http://127.0.0.1:8000 | head -5Configurer le reverse proxy NGINX avec HTTPS
La documentation officielle de SillyTavern indique explicitement de ne pas exposer le port du service directement sur Internet. Un reverse proxy NGINX avec certificat TLS Let's Encrypt sécurise l'accès distant (guide Nginx reverse proxy).
Installez NGINX et Certbot si ce n'est pas déjà fait :
sudo apt update
sudo apt install -y nginx certbot python3-certbot-nginxCréez le fichier de configuration du virtual host :
sudo nano /etc/nginx/sites-available/sillytavernContenu :
server {
listen 80;
server_name st.votredomaine.fr;
location / {
proxy_pass http://127.0.0.1:8000;
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;
}
}Les directives Upgrade et Connection sont nécessaires : SillyTavern utilise des WebSockets pour le streaming des réponses du LLM en temps réel.
Activez le site et obtenez le certificat TLS (guide Certbot Let's Encrypt) :
sudo ln -s /etc/nginx/sites-available/sillytavern /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
sudo certbot --nginx -d st.votredomaine.frCertbot modifie automatiquement le bloc server pour écouter en HTTPS sur le port 443 et redirige le trafic HTTP vers HTTPS. Le renouvellement du certificat est géré par un timer systemd.
Connecter SillyTavern à Ollama
Si vous hébergez Ollama sur le même VPS (installer Ollama sur un VPS Linux), SillyTavern peut s'y connecter directement via le réseau Docker ou l'adresse locale du serveur.
Option 1 : Ollama tourne en natif sur le VPS (sans Docker). Ajoutez l'adresse du réseau Docker dans le fichier /etc/systemd/system/ollama.service.d/override.conf :
[Service]
Environment="OLLAMA_HOST=0.0.0.0"Rechargez et redémarrez Ollama :
sudo systemctl daemon-reload
sudo systemctl restart ollamaDans l'interface SillyTavern, allez dans les paramètres de connexion API, sélectionnez Text Completion puis Ollama comme source, et renseignez l'URL http://IP_PRIVEE_VPS:11434 ou http://172.17.0.1:11434 (adresse de la passerelle Docker par défaut).
Option 2 : Ollama tourne dans un conteneur Docker sur le même VPS. Ajoutez un réseau partagé dans le fichier docker-compose.yml :
services:
sillytavern:
image: ghcr.io/sillytavern/sillytavern:latest
container_name: sillytavern
restart: unless-stopped
ports:
- "127.0.0.1:8000:8000"
volumes:
- ./config:/home/node/app/config:rw
- ./data:/home/node/app/data:rw
- ./plugins:/home/node/app/plugins:rw
- ./extensions:/home/node/app/public/scripts/extensions/third-party:rw
environment:
- PUID=1000
- PGID=1000
networks:
- llm
ollama:
image: ollama/ollama:latest
container_name: ollama
restart: unless-stopped
volumes:
- ollama_data:/root/.ollama
networks:
- llm
networks:
llm:
driver: bridge
volumes:
ollama_data:Dans SillyTavern, renseignez l'URL http://ollama:11434 : le nom du service Docker sert de nom d'hôte sur le réseau interne.
Sécuriser l'accès à SillyTavern
SillyTavern ne dispose pas d'un système d'authentification intégré avec mot de passe par défaut. Sur un VPS accessible depuis Internet, ajoutez au minimum une authentification HTTP Basic au niveau du reverse proxy NGINX.
Créez un fichier de mot de passe :
sudo apt install -y apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd votre_utilisateurAjoutez les directives dans le bloc location / du virtual host NGINX :
auth_basic "SillyTavern";
auth_basic_user_file /etc/nginx/.htpasswd;Rechargez NGINX :
sudo nginx -t && sudo systemctl reload nginxComplétez la sécurisation du VPS :
- Sécuriser SSH : désactivez l'authentification par mot de passe, utilisez une clé SSH ;
- Fail2ban : bloquez les tentatives de connexion SSH répétées.
Permissions des volumes sous SELinux
Sur les distributions avec SELinux activé (CentOS, Rocky Linux, Fedora), les montages de volumes Docker peuvent échouer avec des erreurs de permission. Ajoutez le suffixe :z aux volumes dans le fichier Compose pour les partager entre conteneurs, ou :Z pour un accès exclusif :
volumes:
- ./config:/home/node/app/config:rw,z
- ./data:/home/node/app/data:rw,zSur Ubuntu et Debian, SELinux n'est pas activé par défaut : cette étape n'est pas nécessaire.
Mettre à jour SillyTavern
L'image Docker officielle suit le canal latest (branche stable). Pour mettre à jour SillyTavern, récupérez la dernière image et recréez le conteneur :
cd ~/sillytavern
docker compose pull
docker compose up -dLes données sont conservées dans les volumes montés (config, data, plugins, extensions). Le tag staging est aussi disponible pour tester les fonctionnalités en développement, mais il est déconseillé en production.
Après chaque mise à jour, nettoyez les anciennes images inutilisées pour libérer de l'espace disque (nettoyer Docker avec prune).
Sauvegarder les données
Les données persistantes de SillyTavern (personnages, historiques de conversation, configuration, extensions) sont stockées dans les répertoires montés du VPS : config/, data/, plugins/ et extensions/.
Intégrez ces répertoires dans vos scripts de sauvegarde (sauvegarder un VPS avec rsync) :
rsync -avz ~/sillytavern/ user@backup-server:/backups/sillytavern/SillyTavern propose aussi un export intégré des personnages et des conversations depuis son interface web, utile pour migrer vers une autre instance.
Surveillance avec le healthcheck Docker
SillyTavern intègre un mécanisme de healthcheck. Activez-le dans le fichier Compose pour que Docker redémarre automatiquement le conteneur en cas de blocage :
services:
sillytavern:
image: ghcr.io/sillytavern/sillytavern:latest
# ... volumes, ports, environment ...
environment:
- PUID=1000
- PGID=1000
- SILLYTAVERN_HEARTBEATINTERVAL=30
healthcheck:
test: ["CMD", "node", "src/healthcheck.js"]
interval: 30s
timeout: 10s
start_period: 20s
retries: 3La variable SILLYTAVERN_HEARTBEATINTERVAL active l'écriture périodique d'un fichier de heartbeat dans le répertoire data. Le healthcheck vérifie la fraîcheur de ce fichier.
Tableau récapitulatif
| Élément | Valeur |
|---|---|
| Image Docker | ghcr.io/sillytavern/sillytavern:latest |
| Port interne | 8000/TCP |
| Runtime | Node.js 20+ |
| Licence | AGPL-3.0 |
| RAM (SillyTavern seul) | ~100 à 200 Mo |
| Backends supportés | Ollama, KoboldAI/CPP, Text Generation WebUI, OpenRouter, tabbyAPI, API OpenAI, Claude, Mistral |
| Données persistantes | config, data, plugins, extensions (volumes Docker) |
| Authentification native | Aucune (utiliser HTTP Basic via NGINX) |
Conclusion
SillyTavern transforme votre VPS Linux en interface de chat IA accessible depuis n'importe quel navigateur. Le déploiement Docker Compose se résume à un fichier de configuration et quelques commandes. Le reverse proxy NGINX avec HTTPS sécurise l'accès distant, et la connexion à Ollama permet d'utiliser des modèles de langage open source hébergés sur le même serveur ou sur un serveur dédié avec GPU.
Pour aller plus loin, explorez les extensions tierces (Text-to-Speech, génération d'images, traduction automatique) et les plugins serveur disponibles dans la documentation officielle du projet.
FiveM
Minecraft
Rust
RedM
Hytale