Ollama sur serveur Linux : installer, configurer et exposer une API

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.

Pourquoi héberger Ollama sur son propre serveur

Ollama sur serveur Linux : heberger un LLM en production
Ollama : heberger et exposer un LLM sur son serveur Linux

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

Ollama est-il adapté à la production ?
Oui, avec les précautions qui s’imposent. Il faut protéger l’API derrière un reverse proxy avec authentification, configurer le monitoring (mémoire, VRAM, latence), et prévoir un mécanisme de scaling si la charge augmente. Pour les charges élevées, envisagez vLLM ou TGI comme alternatives plus orientées production, mais Ollama reste un excellent choix pour les déploiements de taille moyenne avec un ou deux modèles.
Quelle différence entre Ollama et llama.cpp ?
llama.cpp est la bibliothèque C++ sous-jacente qui exécute les modèles. Ollama est une couche supérieure qui s’appuie sur llama.cpp (entre autres) et ajoute une API REST, un gestionnaire de modèles, le téléchargement automatique et un service prêt à l’emploi. En résumé : Ollama = llama.cpp + ergonomie + API. Si vous voulez un contrôle fin sur l’inférence, utilisez llama.cpp directement. Si vous voulez quelque chose qui marche en 5 minutes, prenez Ollama.
Combien de RAM pour Llama 3 8B ?
En version Q4_K_M (recommandée), le modèle occupe environ 4,9 Go sur disque et 5 à 6 Go en mémoire. Avec 8 Go de RAM et un CPU moderne, il tourne parfaitement en CPU-only, certes plus lentement qu’avec un GPU. Avec une GPU NVIDIA ayant 8 Go de VRAM (comme une RTX 3060 ou 4060), les performances sont très confortables.
L’API Ollama est-elle compatible OpenAI ?
Oui, depuis la version 0.1.14, Ollama propose un endpoint compatible avec l’API OpenAI sur /v1/chat/completions et /v1/completions. Cela signifie que la plupart des bibliothèques et outils conçus pour l’API OpenAI (SDK Python, plugins, frameworks) fonctionnent directement avec Ollama en changeant simplement l’URL de base. Pratique pour migrer d’un provider à l’autre sans réécrire votre code.
Comment mettre à jour Ollama et les modèles ?
Pour Ollama lui-même, relancez le script d’installation : curl -fsSL https://ollama.com/install.sh | sh. Pour les modèles, utilisez ollama pull nom_du_modele pour récupérer la dernière version. Les modèles existants ne sont pas écrasés automatiquement, c’est vous qui choisissez quand mettre à jour.
Peut-on faire tourner plusieurs modèles en même temps ?
Oui, Ollama gère le chargement et le déchargement automatique des modèles en mémoire. Par défaut, un seul modèle est gardé chargé. Vous pouvez augmenter OLLAMA_MAX_LOADED_MODELS pour garder plusieurs modèles en VRAM simultanément, à condition d’avoir suffisamment de mémoire. Le premier appel à un modèle non chargé sera plus lent (temps de chargement), les suivants seront instantanés.

Vous avez besoin d’aide pour déployer Ollama en production ?

Infrastructure Linux, Docker, monitoring : nous accompagnons les équipes techniques.

Nous contacter →

Laisser un commentaire