[{"data":1,"prerenderedAt":198},["ShallowReactive",2],{"seo-verification":3,"blog-heberger-localai-vps-ma-fr":6,"promo-bar-likely":189},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-heberger-localai-vps-ma-fr",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":35,"sections":36,"ctaTitle":139,"ctaBody":140,"ctaButton":141,"ctaUrl":142,"relatedPosts":143},12,"heberger-localai-vps",{"fr":10,"en":12,"ar":13,"es":14},"how-to-host-localai-on-a-vps","كيفية-استضافة-localai-على-خادم-vps","como-alojar-localai-en-un-vps","Comment héberger LocalAI sur un VPS","Déployez LocalAI sur votre VPS : Docker Compose complet, modèles GGUF, galerie, Whisper, embeddings, protection par clé API, connexion SDK OpenAI et dépannage.",8,0,false,"2026-06-08T00:00:00+00:00","2026-10-07T23:07:24+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},1,"Intelligence Artificielle","intelligence-artificielle","bg-purple-500\u002F10 text-purple-400","ia",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-localai-vps-poster.svg",{"categorySlug":27,"appSlug":34},"local-ai","LocalAI est un remplacement open source et compatible API de l'API OpenAI : chat, embeddings, génération d'images et audio, le tout exécuté localement. Sur votre VPS, il devient une API IA polyvalente et privée, que vos applications consomment sans changer leur code. Ce guide couvre le déploiement complet avec Docker Compose, le chargement de modèles GGUF, la connexion de vos applications et le dépannage des erreurs les plus courantes.",[37,41,51,54,82,85,88,91,94],{"type":38,"title":39,"body":40},"h2","Pourquoi self-héberger LocalAI sur un VPS","Là où Ollama se concentre sur le texte, LocalAI vise la compatibilité large avec l'API OpenAI : il expose `\u002Fv1\u002Fchat\u002Fcompletions`, `\u002Fv1\u002Fembeddings`, `\u002Fv1\u002Fimages\u002Fgenerations` et même la transcription audio, sur une seule API. Pour une équipe qui a déjà du code écrit contre le SDK OpenAI, LocalAI est un remplacement quasi transparent : vous changez l'URL de base et la clé, le reste fonctionne. Sur un VPS, vous obtenez cette polyvalence sans dépendance externe ni coût par appel. C'est particulièrement pertinent quand vous avez besoin à la fois de génération de texte, de vecteurs pour du RAG et, ponctuellement, d'images, sans multiplier les fournisseurs et les clés.",{"type":42,"title":43,"items":44},"ul","Les bénéfices concrets d'un LocalAI auto-hébergé",[45,46,47,48,49,50],"Remplacement drop-in de l'API OpenAI : aucune réécriture du code client.","Une seule API pour le chat, les embeddings, les images et l'audio.","Support de multiples backends (llama.cpp, diffusers, whisper) sous une interface unifiée.","Formats de modèles ouverts (GGUF) téléchargeables et interchangeables.","Pas de facturation à l'usage : un coût VPS fixe pour tous les types de génération.","Données et générations conservées intégralement sur votre serveur.",{"type":38,"title":52,"body":53},"Prérequis matériels et logiciels","LocalAI étant polyvalent, ses besoins dépendent des fonctions activées. Les chiffres ci-dessous sont des minimums mesurés — un VPS plus généreux réduit les temps de réponse, il ne change pas la faisabilité.\n\n**Texte seul, CPU, modèle 7B (ex. Mistral-7B-GGUF)** : 8 Go de RAM, 4 vCPU, 30 Go de disque. À ce gabarit, un appel `\u002Fv1\u002Fchat\u002Fcompletions` prend 5 à 15 secondes selon la quantization (Q4 est le compromis standard). Un modèle 3B tient dans 4 Go de RAM.\n\n**Texte + images (7B + Stable Diffusion)** : 16 Go de RAM, GPU recommandé, 50 Go de disque. Sans GPU, la génération d'une image prend plusieurs minutes sur un CPU — préférez un VPS GPU pour un usage régulier et l'option `SINGLE_ACTIVE_BACKEND=true` pour éviter la saturation si vous mixez chat et images sur le même hôte CPU.\n\n**Logiciels requis** : Docker 24+ et Docker Compose v2 (`docker compose` sans tiret), un sous-domaine dédié (ex. `ia.votre-domaine.com`), le port 443 ouvert, une entrée DNS pointant sur l'IP du VPS.",{"type":55,"title":56,"steps":57},"steps","Déployer LocalAI avec Docker Compose et HTTPS",[58,61,64,67,70,73,76,79],{"title":59,"body":60},"Préparer l'arborescence","En SSH : `mkdir -p \u002Fopt\u002Flocalai\u002F{models,config} && cd \u002Fopt\u002Flocalai`. Le dossier `models` recevra les fichiers GGUF ; `config` recevra les manifests YAML qui décrivent chaque modèle à LocalAI.",{"title":62,"body":63},"Créer le fichier docker-compose.yaml","Créez `\u002Fopt\u002Flocalai\u002Fdocker-compose.yaml` avec le contenu suivant :\n\n```yaml\nservices:\n  localai:\n    image: localai\u002Flocalai:latest-cpu\n    restart: unless-stopped\n    ports:\n      - \"127.0.0.1:8080:8080\"\n    volumes:\n      - .\u002Fmodels:\u002Fbuild\u002Fmodels\n      - .\u002Fconfig:\u002Fbuild\u002Fmodels\n    environment:\n      - MODELS_PATH=\u002Fbuild\u002Fmodels\n      - SINGLE_ACTIVE_BACKEND=true\n      - API_KEY=votre-cle-secrete\n    healthcheck:\n      test: [\"CMD\", \"curl\", \"-f\", \"http:\u002F\u002Flocalhost:8080\u002Freadyz\"]\n      interval: 30s\n      retries: 3\n```\n\nRemplacez `latest-cpu` par `latest-gpu-nvidia-cuda-12` si votre VPS dispose d'un GPU NVIDIA. `API_KEY` active la protection par jeton sur tous les endpoints — sans cette variable, l'API est accessible sans authentification.",{"title":65,"body":66},"Démarrer le conteneur","Lancez `docker compose up -d`, puis suivez les logs d'amorçage : `docker compose logs -f localai`. Attendez le message `LocalAI API is listening on [::]:8080` avant de continuer.",{"title":68,"body":69},"Télécharger un premier modèle via la galerie","La galerie LocalAI regroupe plus de 200 modèles pré-configurés. Pour installer Mistral-7B-Instruct quantifié Q4 :\n\n```bash\ncurl http:\u002F\u002F127.0.0.1:8080\u002Fmodels\u002Fapply \\\n  -H 'Authorization: Bearer votre-cle-secrete' \\\n  -d '{\"id\": \"huggingface@thebloke__mistral-7b-instruct-v0.2-gguf\u002Fmistral-7b-instruct-v0.2.Q4_K_M.gguf\"}'\n```\n\nSuivez la progression : `curl http:\u002F\u002F127.0.0.1:8080\u002Fmodels\u002Fjobs\u002F\u003Cjob-id>`. Le GGUF est téléchargé dans `.\u002Fmodels\u002F` et son manifest YAML créé automatiquement dans `.\u002Fconfig\u002F`.",{"title":71,"body":72},"Ajouter un modèle d'embeddings","Pour le RAG, installez `all-MiniLM-L6-v2` (84 Mo, 256 Mo de RAM) :\n\n```yaml\n# config\u002Fall-minilm.yaml\nname: all-minilm\nbackend: bert-embeddings\nparameters:\n  model: all-MiniLM-L6-v2.gguf\n```\n\nTéléchargez le GGUF manuellement dans `.\u002Fmodels\u002F` depuis HuggingFace, puis redémarrez : `docker compose restart localai`. Vérifiez avec `curl http:\u002F\u002F127.0.0.1:8080\u002Fv1\u002Fmodels`.",{"title":74,"body":75},"Activer Whisper pour la transcription audio","Ajoutez `config\u002Fwhisper.yaml` :\n\n```yaml\nname: whisper-1\nbackend: whisper\nparameters:\n  model: whisper-base.en\n```\n\nLe modèle whisper-base (~142 Mo) est téléchargé automatiquement au premier appel. Testez avec :\n\n```bash\ncurl http:\u002F\u002F127.0.0.1:8080\u002Fv1\u002Faudio\u002Ftranscriptions \\\n  -H 'Authorization: Bearer votre-cle-secrete' \\\n  -F file=@audio.mp3 -F model=whisper-1\n```",{"title":77,"body":78},"Configurer le reverse proxy Nginx et le SSL","Créez `\u002Fetc\u002Fnginx\u002Fsites-available\u002Flocalai` :\n\n```nginx\nserver {\n  listen 443 ssl;\n  server_name ia.votre-domaine.com;\n  ssl_certificate \u002Fetc\u002Fletsencrypt\u002Flive\u002Fia.votre-domaine.com\u002Ffullchain.pem;\n  ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fia.votre-domaine.com\u002Fprivkey.pem;\n  location \u002F {\n    proxy_pass http:\u002F\u002F127.0.0.1:8080;\n    proxy_read_timeout 300s;\n    proxy_send_timeout 300s;\n  }\n}\n```\n\nObtenez le certificat avec `certbot certonly --nginx -d ia.votre-domaine.com`, puis `nginx -s reload`. Le timeout élevé est nécessaire pour les inférences longues sur CPU.",{"title":80,"body":81},"Tester l'API via HTTPS","Validez le déploiement complet :\n\n```bash\ncurl https:\u002F\u002Fia.votre-domaine.com\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H 'Authorization: Bearer votre-cle-secrete' \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"model\": \"mistral-7b-instruct-v0.2.Q4_K_M\", \"messages\": [{\"role\": \"user\", \"content\": \"Bonjour\"}]}'\n```\n\nUne réponse JSON avec un champ `choices` confirme que le déploiement fonctionne correctement.",{"type":83,"body":84},"tip","N'activez que les backends dont vous avez besoin. Charger simultanément un modèle de chat, un modèle d'embedding et Stable Diffusion sur un VPS CPU sature la RAM et effondre les performances. Définissez `SINGLE_ACTIVE_BACKEND=true` pour ne garder qu'un backend résident à la fois, et réservez la génération d'images à un VPS GPU si elle devient un usage régulier.",{"type":38,"title":86,"body":87},"Choisir et charger ses modèles","LocalAI supporte plusieurs formats, mais le format **GGUF** (produit par llama.cpp) est le standard recommandé pour le CPU : il est quantifié (réduit la RAM utilisée), portable et bien supporté par la galerie.\n\n**GGUF vs autres formats** : les formats GGUF sont les seuls directement chargeables via `llama.cpp` sans conversion préalable. Les modèles Diffusers (images) et ONNX (embeddings légers) ont leurs propres backends et ne sont pas interchangeables avec les GGUF.\n\n**Galerie vs téléchargement manuel** : la galerie est l'option la plus simple — elle télécharge le GGUF et génère le YAML de configuration automatiquement. Pour un modèle non référencé (un modèle fine-tuné, un GGUF personnalisé), déposez le fichier dans `.\u002Fmodels\u002F` et créez le YAML manuellement :\n\n```yaml\nname: mon-modele\nbackend: llama\nparameters:\n  model: mon-modele.Q4_K_M.gguf\ncontext_size: 4096\n```\n\n**Lister les modèles chargés** :\n\n```bash\ncurl https:\u002F\u002Fia.votre-domaine.com\u002Fv1\u002Fmodels \\\n  -H 'Authorization: Bearer votre-cle-secrete'\n```\n\nLes modèles dont le YAML est présent dans `.\u002Fconfig\u002F` apparaissent dans la liste, même si leur GGUF n'a pas encore été téléchargé — dans ce cas, le premier appel déclenche le téléchargement.",{"type":38,"title":89,"body":90},"Connecter ses applications à LocalAI","LocalAI étant compatible avec l'API OpenAI, la migration d'une application existante se résume à deux changements : l'URL de base et la clé.\n\n**Python (openai SDK)** :\n\n```python\nimport openai\n\nclient = openai.OpenAI(\n    base_url=\"https:\u002F\u002Fia.votre-domaine.com\u002Fv1\",\n    api_key=\"votre-cle-secrete\"\n)\n\nresponse = client.chat.completions.create(\n    model=\"mistral-7b-instruct-v0.2.Q4_K_M\",\n    messages=[{\"role\": \"user\", \"content\": \"Résume ce texte : ...\"}]\n)\nprint(response.choices[0].message.content)\n```\n\n**Node.js (openai SDK)** :\n\n```javascript\nimport OpenAI from 'openai';\n\nconst client = new OpenAI({\n  baseURL: 'https:\u002F\u002Fia.votre-domaine.com\u002Fv1',\n  apiKey: 'votre-cle-secrete'\n});\n\nconst completion = await client.chat.completions.create({\n  model: 'mistral-7b-instruct-v0.2.Q4_K_M',\n  messages: [{ role: 'user', content: 'Hello' }]\n});\nconsole.log(completion.choices[0].message.content);\n```\n\n**curl direct** :\n\n```bash\ncurl https:\u002F\u002Fia.votre-domaine.com\u002Fv1\u002Fembeddings \\\n  -H 'Authorization: Bearer votre-cle-secrete' \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"model\": \"all-minilm\", \"input\": \"Texte à vectoriser\"}'\n```\n\nLes bibliothèques LangChain, LlamaIndex et la plupart des frameworks RAG acceptent un paramètre `openai_api_base` ou `base_url` — le changement reste identique.",{"type":38,"title":92,"body":93},"Dépannage : erreurs courantes","**`404 model not found` ou `model not loaded`** : le nom de modèle passé dans `model:` ne correspond à aucun manifest YAML dans `.\u002Fconfig\u002F`. Vérifiez avec `GET \u002Fv1\u002Fmodels` : le nom affiché doit être utilisé tel quel. Si le modèle n'apparaît pas, vérifiez que le YAML est bien dans le dossier monté et redémarrez le conteneur.\n\n**Inférence très lente ou `killed` (OOM)** : le modèle dépasse la RAM disponible. Un modèle 7B Q4 nécessite environ 6 Go de RAM libre au moment du chargement. Vérifiez avec `docker stats localai` pendant une inférence. Solutions : passer à une quantization plus légère (Q3_K_S ou Q2_K), réduire le `context_size` dans le YAML, ou upgrader le VPS.\n\n**`SINGLE_ACTIVE_BACKEND error`** : LocalAI est configuré avec `SINGLE_ACTIVE_BACKEND=true` et une requête tente de charger un second modèle pendant qu'un autre est actif. C'est le comportement attendu sur CPU. Attendez que la première inférence se termine, ou désactivez l'option si votre VPS a suffisamment de RAM pour plusieurs modèles simultanés.\n\n**GPU non détecté (`CUDA device not found`)** : vérifiez que vous utilisez l'image `latest-gpu-nvidia-cuda-12`, que le driver NVIDIA est installé sur l'hôte (`nvidia-smi`), et que le conteneur a accès au GPU (`gpus: all` dans `docker-compose.yaml` sous la clé `deploy:`). Sans ces trois conditions, LocalAI bascule silencieusement sur le CPU.\n\n**`401 Unauthorized`** : la variable `API_KEY` est définie dans le `docker-compose.yaml` mais le header `Authorization: Bearer \u003Cclé>` est absent ou incorrect dans l'appel. Tous les endpoints, y compris `\u002Fv1\u002Fmodels`, requièrent le header dès que `API_KEY` est positionné.",{"type":95,"title":96,"headers":97,"rows":101},"comparison","LocalAI vs Ollama vs vLLM : quel serveur LLM choisir ?",[5,98,99,100],"LocalAI","Ollama","vLLM",[102,106,110,114,117,120,125,130,134],[103,104,104,105],"GPU requis","Non (CPU par défaut)","Oui (GPU obligatoire)",[107,108,109,108],"API compatible OpenAI","Oui (complète)","Oui (partielle)",[111,112,113,113],"Génération d'images","Oui (Stable Diffusion)","Non",[115,116,113,113],"Transcription audio","Oui (Whisper)",[118,119,119,119],"Embeddings natifs","Oui",[121,122,123,124],"Bibliothèque de modèles","200+ modèles GGUF","Liste de modèles sélectionnés","Modèles HuggingFace",[126,127,128,129],"Débit (tokens\u002Fs, 7B)","~10-20 CPU \u002F ~80+ GPU","~15-25 CPU \u002F ~80+ GPU","~150+ GPU uniquement",[131,132,132,133],"RAM (modèle 7B Q4)","~6 Go","~14 Go (FP16)",[135,136,137,138],"Cas d'usage principal","API unifiée multi-modalités","Inférence texte simple","Production haute performance","Une API IA complète et privée sur un VPS Cloud ServOrbit","Avec un VPS Cloud ServOrbit et Docker préconfiguré, déployez LocalAI comme alternative privée à l'API OpenAI. Choisissez une configuration CPU ou GPU selon vos besoins de chat, d'embeddings ou d'images.","Démarrer mon VPS Cloud","\u002Fvps-cloud",[144,161,179],{"id":23,"slug":145,"slugs":146,"title":150,"excerpt":151,"readTime":152,"views":23,"isPinned":19,"noindex":19,"publishedAt":153,"updatedAt":154,"category":155,"categories":156,"featuredImage":30,"bgImage":31,"posterImage":158,"relatedSolution":159},"heberger-open-webui",{"fr":145,"en":147,"ar":148,"es":149},"how-to-host-open-webui-on-a-vps","كيفية-استضافة-open-webui-على-خادم-vps","como-alojar-open-webui-en-un-vps","Comment héberger Open WebUI sur un VPS","Déployez Open WebUI sur votre propre VPS : gardez le contrôle de vos données, évitez les coûts des API cloud et accédez à vos LLMs depuis une interface web propre.",9,"2026-06-01T00:00:00+00:00","2026-11-09T20:55:18+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[157],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-open-webui-poster.svg",{"categorySlug":27,"appSlug":160},"open-webui",{"id":162,"slug":163,"slugs":164,"title":168,"excerpt":169,"readTime":170,"views":23,"isPinned":19,"noindex":19,"publishedAt":171,"updatedAt":172,"category":173,"categories":174,"featuredImage":30,"bgImage":31,"posterImage":176,"relatedSolution":177},2,"deployer-dify-vps",{"fr":163,"en":165,"ar":166,"es":167},"deploying-dify-on-a-vps-ai-workflows-under-control","نشر-dify-على-vps-سير-عمل-الذكاء-الاصطناعي-تحت-السيطرة","desplegar-dify-en-un-vps","Déployer Dify sur un VPS : guide de l'installation aux plugins","Installez Dify sur un VPS ServOrbit : prérequis, Docker Compose, plugins offline, limites de l'installation Docker, sauvegarde avant mise à jour, dépannage.",15,"2026-02-11T00:00:00+00:00","2026-10-29T03:10:23+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[175],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fdeployer-dify-vps-poster.svg",{"categorySlug":25,"appSlug":178},"dify",{"id":180,"slug":181,"slugs":182,"title":186,"excerpt":187,"readTime":188,"views":23,"isPinned":19,"noindex":189,"publishedAt":190,"updatedAt":191,"category":192,"categories":193,"featuredImage":30,"bgImage":31,"posterImage":195,"relatedSolution":196},121,"heberger-openclaw-vps",{"fr":181,"en":183,"ar":184,"es":185},"hosting-openclaw-on-a-vps","استضافة-openclaw-على-خادم-vps","alojar-openclaw-en-un-vps","Héberger OpenClaw sur un VPS","Hébergez OpenClaw sur votre VPS : l'assistant IA personnel open source joignable depuis WhatsApp, Telegram, Discord et 50+ messageries. Docker, LLM et HTTPS.",4,true,"2026-02-23T00:00:00+00:00","2026-11-09T20:55:19+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[194],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-openclaw-vps-poster.svg",{"categorySlug":27,"appSlug":197},"openclaw",1794270724126]