Pourquoi auto-héberger ses modèles LLM sur VPS
Auto-héberger un serveur de modèles, c'est garder vos prompts et vos données sensibles hors des API commerciales, supprimer la facturation au token et fixer vous-même le modèle, sa version et son quantization. Sur un VPS, vous exposez une API privée à vos applications internes (chatbots, RAG, assistants de code) sans aucune fuite vers l'extérieur. Ollama se distingue par sa simplicité radicale : une commande pour télécharger et lancer un modèle, une API propre, une gestion automatique de la mémoire. LocalAI se positionne comme un remplaçant 'drop-in' de l'API OpenAI : il expose les mêmes endpoints (chat, embeddings, images, audio) et accepte de multiples backends et formats de modèles. Le choix se joue entre expérience minimaliste et compatibilité la plus large possible.
Les bénéfices d'un LLM auto-hébergé
- Prompts et données confidentielles qui ne quittent jamais votre VPS
- Aucune facturation au token, coût prévisible lie au seul serveur
- API privée branchée directement sur vos apps internes
- Choix libre du modèle, de sa taille et de son niveau de quantization
- Compatibilité avec les SDK existants via une API de style OpenAI
- Idéal pour le RAG : couplez le LLM à votre base et à un moteur de recherche self-hosted
Prérequis : modèles quantifiés et RAM réaliste
Sans GPU, restez sur des modèles quantifiés légers. Un modèle 3B en GGUF Q4 tourne sur un VPS 4 vCPU et 8 Go de RAM avec une latence acceptable pour du test ; un modèle 7B/8B Q4 demande 8 à 16 Go de RAM et un bon CPU pour rester utilisable. Au-delà, en CPU pur, la latence devient prohibitive : pour du temps réel sur de gros modèles, un VPS avec GPU est indispensable. Prévoyez surtout un disque généreux : les poids de plusieurs modèles pèsent vite des dizaines de Go. Il vous faut Docker et Compose, un volume persistant pour les modèles, un sous-domaine si vous exposez l'API, et un reverse proxy avec authentification.
Déployer Ollama (ou LocalAI) sur VPS
Provisionner stockage et volume modèles
Créez un volume dédié (/srv/ollama/models) sur un disque suffisamment grand. Les poids étant volumineux et réutilisables, ils doivent persister hors du conteneur pour éviter de re-télécharger à chaque redémarrage.
Lancer le conteneur
Démarrez ollama/ollama (ou localai/localai) en montant le volume modèles et en bindant le port 11434/8080 en local. Sur un VPS sans GPU, le mode CPU est automatique ; avec GPU, activez le runtime adapté.
Télécharger un modèle
Avec Ollama, exécutez docker compose exec ollama ollama pull llama3.2:3b. Avec LocalAI, déclarez le modèle dans la galerie ou déposez le fichier GGUF dans le dossier de modèles, puis vérifiez son chargement dans les logs.
Tester l'API
Lancez un appel local : curl http://127.0.0.1:11434/api/generate pour Ollama, ou l'endpoint compatible OpenAI POST /v1/chat/completions pour LocalAI. Validez que la génération fonctionne avant toute exposition.
Exposer derrière un reverse proxy authentifié
Proxifiez llm.votredomaine.com vers le port local avec Caddy ou Nginx pour le TLS, et ajoutez une couche d'authentification (clé d'API en en-tête ou basic auth). Une API LLM ouverte sur Internet est une porte d'entrée coûteuse à ne jamais laisser sans contrôle.
Brancher vos applications
Pointez vos SDK existants vers votre base_url privée. LocalAI exposant l'API OpenAI, la plupart des bibliothèques fonctionnent en changeant simplement l'URL et la clé ; côté Ollama, utilisez son API native ou son endpoint compatible.
| Critère | Ollama | LocalAI |
|---|---|---|
| Philosophie | Simplicité, une commande par modèle | Remplaçant drop-in de l'API OpenAI |
| Compatibilité API OpenAI | Endpoint compatible disponible | Native et très complète |
| Modalités supportées | Texte, embeddings, vision (selon modèle) | Texte, embeddings, images, audio, TTS |
| Gestion des modèles | `ollama pull`, très fluide | Galerie + fichiers, plus manuelle |
| Backends / formats | GGUF principalement | Multiples backends et formats |
| Prise en main | Très rapide | Plus de configuration |
| Support GPU / CPU | Les deux, bascule simple | Les deux, large support matériel |
| Cas d'usage idéal | Démarrer vite, prototyper | Migrer une app OpenAI vers le self-hosting |
Sur un VPS sans GPU, le secret de la fluidité est la quantization : un modèle en Q4_K_M offre un compromis taille/qualité très favorable et tient en RAM là où la version non quantifiée s'effondre. Limitez aussi le context window au strict nécessaire (par exemple 4096 tokens) : un contexte surdimensionné multiplie la consommation mémoire et la latence sans bénéfice réel pour la plupart des tâches.