IA · LINUX · SELF-HOSTED
Ollama permet de faire tourner des modèles de langage (LLM) localement sur votre serveur Linux, sans dépendre d’une API externe. Ce guide couvre l’installation pas à pas, la configuration de l’API REST, l’intégration Docker et systemd, et les bonnes pratiques de sécurité pour un déploiement en production.
📋 Au programme
Pourquoi héberger Ollama sur son propre serveur

Les API cloud comme OpenAI ou Anthropic sont pratiques, mais elles ont des limites : coût variable, dépendance réseau, et surtout des données qui transitent par des serveurs tiers. Pour une entreprise qui traite des données sensibles ou qui veut maîtriser son infrastructure, l’option self-hosted devient vite pertinente.
🔒
Confidentialité totale
Vos données ne quittent jamais votre infrastructure. Idéal pour les environnements réglementés (santé, finance, juridique).
💰
Coût prédictible
Plus de facturation à l’usage. Le hardware est un investissement fixe, le coût marginal par requête est nul.
⚡
Latence minimale
Pas de round-trip réseau vers un fournisseur externe. Les réponses sont générées localement, sans latence added.
🇪🇺
Souveraineté et RGPD
Les données restent sur votre territoire. Aucun transfert international, conformité simplifiée.
Avertissement honnête sur le coût réel
Faire tourner un modèle 70B en local demande un investissement significatif. En précision FP16, il faut environ 140 Go de VRAM sur GPU. Avec un quantization Q4 GGUF, on descend autour de 40 Go, ce qui reste conséquent. Une NVIDIA A100 (80 Go) coûte environ 10 000 €, et deux RTX 4090 (2 x 24 Go) se négocient entre 4 000 et 6 000 €. En CPU-only, les performances sont 5 à 10x plus lentes qu’avec un GPU dédié. Les modèles open source progressent rapidement, mais sur le raisonnement complexe, les modèles propriétaires restent globalement meilleurs. Évaluez votre cas d’usage avant d’investir dans du hardware lourd.
Sources : Hugging Face (Llama 3.1), Les Numériques (RTX 4090), Helicone (Llama 3.3 70B)
Prérequis matériels
Les besoins varient énormément selon la taille du modèle que vous comptez faire tourner. Voici un tableau récapitulatif pour les profils les plus courants :
| Profil modèle | Exemples | RAM / VRAM recommandée | CPU minimum |
|---|---|---|---|
| Petit (< 8B) | Llama 3 8B, Mistral 7B, Phi-3 | 8 Go RAM, 8 Go VRAM | 4 cœurs |
| Moyen (8B – 35B) | Mixtral 8x7B, Command R | 32 Go RAM, 24 Go VRAM | 8 cœurs |
| Grand (35B – 70B) | Llama 3 70B, Qwen 72B | 64 Go RAM, 48 Go+ VRAM | 16 cœurs |
| Très grand (> 70B) | Llama 3 405B (quantifié) | 128 Go+ RAM, multi-GPU | 32 cœurs+ |
Support GPU
NVIDIA : support natif via CUDA, la configuration la plus simple et performante. AMD : support via ROCm (Radeon Instinct, RX 7900 XTX), un peu plus de configuration. CPU-only : parfaitement possible pour les petits modèles (7B-8B), mais nettement plus lent. Ollama gère automatiquement le fallback CPU si aucun GPU n’est détecté.
Installer Ollama sur Debian ou Ubuntu
L’installation est volontairement simple. Ollama fournit un script d’installation en une commande qui gère tout : téléchargement du binaire, création du service systemd, configuration des chemins.
Installation en une commande
# Télécharger et installer Ollama
curl -fsSL https://ollama.com/install.sh | sh
Le script installe Ollama dans /usr/local/bin, configure un service systemd (ollama.service) et crée l’utilisateur ollama si nécessaire.
Vérifier l’installation
# Vérifier la version
ollama --version
# Le service doit être actif
sudo systemctl status ollama
# Tester avec un modèle léger (téléchargement automatique)
ollama run llama3:8b
Installation alternative manuelle
Si vous préférez éviter les scripts pipés, vous pouvez télécharger le binaire directement depuis les releases GitHub et le placer dans votre PATH. Le service systemd devra être configuré manuellement (voir la section dédiée plus bas).
Télécharger et tester des modèles
Ollama propose un registre de modèles pré-configurés. La commande pull télécharge le modèle, run le charge en mémoire et lance une session interactive.
# Télécharger des modèles populaires
ollama pull llama3 # Meta Llama 3 (8B)
ollama pull mistral # Mistral 7B
ollama pull codellama # Code Llama (spécialisé code)
ollama pull phi3 # Microsoft Phi-3 (compact et performant)
# Lister les modèles disponibles en local
ollama list
# Lancer une session interactive
ollama run llama3
# Tester directement en mode API
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "Explique Docker en 3 phrases."
}'
Les modèles sont stockés par défaut dans ~/.ollama/models. Chaque modèle occupe entre 4 et 40 Go selon sa taille et son niveau de quantization. Vous pouvez modifier ce chemin avec la variable d’environnement OLLAMA_MODELS.
Exposer l’API REST Ollama avec Nginx
Par défaut, Ollama écoute sur 127.0.0.1:11434. Pour l’atteindre depuis d’autres machines ou depuis une application web, il faut un reverse proxy. Nginx est le choix naturel : il gère le HTTPS, l’authentification et le rate limiting.
Écouter sur toutes les interfaces
# Configurer Ollama pour écouter sur toutes les interfaces
sudo systemctl edit ollama
# Ajouter :
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
sudo systemctl daemon-reload
sudo systemctl restart ollama
Configuration Nginx avec authentification
# Créer un fichier de mots de passe
sudo apt install apache2-utils
sudo htpasswd -c /etc/nginx/.ollama_auth utilisateur
# Configuration Nginx : /etc/nginx/sites-available/ollama
server {
listen 443 ssl http2;
server_name ollama.votre-domaine.fr;
ssl_certificate /etc/letsencrypt/live/ollama.votre-domaine.fr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ollama.votre-domaine.fr/privkey.pem;
# Limiter la taille des uploads (modèles)
client_max_body_size 50G;
location / {
proxy_pass http://127.0.0.1:11434;
# Headers pour le streaming
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;
# Timeout longs pour les générations
proxy_read_timeout 300s;
proxy_send_timeout 300s;
# Authentification basique
auth_basic "Accès restreint Ollama";
auth_basic_user_file /etc/nginx/.ollama_auth;
}
}
Ne JAMAIS exposer Ollama sans authentification
Sans auth, n’importe qui peut télécharger des modèles (occupant tout votre stockage et VRAM), exécuter du code via les prompts, ou saturer votre serveur. L’authentification basique Nginx est le strict minimum. Pour la production, ajoutez une restriction par IP et un rate limiting.
Ollama avec Docker
Pour les environnements conteneurisés, Ollama propose une image officielle Docker. C’est idéal pour intégrer un LLM dans une stack existante, ou pour isoler complètement l’environnement d’exécution.
Dockerfile
FROM ollama/ollama:latest
# Variables d'environnement
ENV OLLAMA_HOST=0.0.0.0
ENV OLLAMA_MODELS=/models
# Volume pour persister les modèles
VOLUME /models
EXPOSE 11434
docker-compose.yml
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
ports:
- "127.0.0.1:11434:11434"
volumes:
- ollama_models:/root/.ollama
environment:
- OLLAMA_HOST=0.0.0.0
- OLLAMA_NUM_PARALLEL=4
restart: unless-stopped
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
volumes:
ollama_models:
driver: local
Le volume ollama_models persiste les modèles entre les redémarrages du conteneur. La section deploy.resources expose les GPUs NVIDIA au conteneur. Sans GPU, supprimez cette section : Ollama tournera en CPU-only.
Automatiser avec systemd
Si vous n’utilisez pas Docker, le service systemd est la méthode recommandée pour gérer Ollama en production. Il gère le démarrage automatique, les logs et les redémarrages en cas de crash.
Fichier unit systemd
# /etc/systemd/system/ollama.service
[Unit]
Description=Ollama - Serveur LLM local
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=ollama
Group=ollama
ExecStart=/usr/local/bin/ollama serve
Restart=on-failure
RestartSec=5
# Variables d'environnement
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_MODELS=/var/lib/ollama/models"
Environment="OLLAMA_NUM_PARALLEL=4"
Environment="OLLAMA_MAX_LOADED_MODELS=2"
# Logs
StandardOutput=journal
StandardError=journal
SyslogIdentifier=ollama
# Sécurité
NoNewPrivileges=true
ProtectSystem=strict
ReadWritePaths=/var/lib/ollama
[Install]
WantedBy=multi-user.target
# Activer et démarrer le service
sudo systemctl daemon-reload
sudo systemctl enable ollama
sudo systemctl start ollama
# Consulter les logs
journalctl -u ollama -f
Variables utiles
OLLAMA_NUM_PARALLEL contrôle le nombre de requêtes traitées simultanément (défaut : 1). OLLAMA_MAX_LOADED_MODELS limite le nombre de modèles gardés en VRAM en même temps. Ajustez ces valeurs en fonction de votre VRAM disponible et de votre charge attendue.
Cas d’usage concrets
Une fois Ollama en place et accessible via son API, les possibilités sont nombreuses. Voici les scénarios les plus fréquents en entreprise :
💬
Chatbot interne
Interface de chat type ChatGPT mais avec vos données. Intégrez votre base de connaissances via du RAG (Retrieval Augmented Generation) pour des réponses contextualisées.
🧑💻
Completion de code
Code Llama ou DeepSeek Coder intégrés dans votre IDE ou votre pipeline CI. Génération de boilerplate, revue de code automatique, documentation.
📊
Analyse de logs
Envoyez vos logs applicatifs à l’API Ollama pour obtenir un résumé, identifier des patterns d’erreur, ou extraire des métriques en langage naturel.
🔗
Intégration MCP
Connectez Ollama au Model Context Protocol (MCP) pour exposer vos LLM locaux comme outils dans des workflows automatisés.
Erreurs courantes et troubleshooting
Voici les problèmes les plus fréquents et leurs solutions :
GPU non détecté
Vérifiez que les pilotes NVIDIA sont installés (nvidia-smi doit fonctionner). Pour les GPU AMD, vérifiez que ROCm est bien configuré. Si vous utilisez Docker, assurez-vous que le runtime NVIDIA est configuré (nvidia-container-toolkit).
Out of Memory (OOM)
Le modèle est trop gros pour votre VRAM/RAM disponible. Solutions : utilisez un modèle quantifié (Q4_K_M au lieu de FP16), réduisez OLLAMA_MAX_LOADED_MODELS à 1, ou ajoutez de la mémoire. Vérifiez l’utilisation avec nvidia-smi ou htop.
Modèle trop gros pour le disque
Un modèle 70B en Q4 occupe ~40 Go. Vérifiez l’espace disponible dans ~/.ollama/models (ou OLLAMA_MODELS). Nettoyez les modèles inutilisés avec ollama rm nom_du_modele.
Service ne démarre pas
Consultez les logs : journalctl -u ollama -n 50. Les erreurs les plus courantes sont un port déjà utilisé, un problème de permissions sur le répertoire des modèles, ou une incompatibilité de pilotes GPU.
FAQ
Vous avez besoin d’aide pour déployer Ollama en production ?
Infrastructure Linux, Docker, monitoring : nous accompagnons les équipes techniques.
Nous contacter →