[{"data":1,"prerenderedAt":274},["ShallowReactive",2],{"seo-verification":3,"blog-heberger-weaviate-vps-ma-fr":6,"promo-bar-likely":273},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-heberger-weaviate-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":36,"sections":37,"ctaTitle":211,"ctaBody":212,"ctaButton":213,"ctaUrl":214,"relatedPosts":215},66,"heberger-weaviate-vps",{"fr":10,"en":12,"ar":13,"es":14},"hosting-weaviate-on-a-vps","استضافة-weaviate-على-خادم-vps","alojar-weaviate-en-un-vps","Héberger Weaviate sur un VPS","Weaviate sur VPS : Docker Compose annoté, clé API, choix du vectorizer, HNSW et quantization, sauvegardes, client Python v4 et dépannage.",12,0,false,"2026-04-15T00:00:00+00:00","2026-11-04T16:30:25+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},6,"Bases de données","bases-de-donnees","bg-teal-500\u002F10 text-teal-400","database",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-weaviate-vps-poster.svg",{"categorySlug":34,"appSlug":35},"ia","weaviate","Weaviate est une base de données vectorielle open source écrite en Go, conçue pour la recherche sémantique et le RAG. Sa particularité : des modules qui vectorisent vos objets à l'insertion et peuvent générer une réponse à partir des résultats, sans pipeline externe. Ce guide déploie Weaviate sur un VPS avec Docker Compose, sécurise l'API par clé, explique le choix du vectorizer, le dimensionnement mémoire de l'index HNSW, les sauvegardes et les erreurs les plus fréquentes. Un comparatif avec Qdrant, pgvector et Milvus vous aide à trancher.",[38,42,53,56,84,115,118,127,130,133,136,139,148,204,207],{"type":39,"title":40,"body":41},"h2","Pourquoi auto-héberger Weaviate sur un VPS","Weaviate ne se contente pas de stocker des vecteurs. Chaque objet porte ses propriétés (texte, nombres, dates, références) et un ou plusieurs vecteurs, si bien qu'une seule requête renvoie les documents pertinents avec toutes leurs métadonnées. Les modules `text2vec-*` calculent les embeddings à l'import, les modules `generative-*` transmettent les résultats à un LLM, et les modules de reranking réordonnent les candidats. Le tout s'interroge en REST, en GraphQL ou en gRPC. L'auto-héberger sur un VPS vous laisse choisir les modules activés, brancher vos propres modèles d'embeddings (par exemple via Ollama sur la même machine) et garder documents et vecteurs sur un serveur que vous administrez. Pour un assistant documentaire interne, un moteur de recherche de catalogue ou une mémoire d'agent, vous maîtrisez la latence, la rétention, le schéma des collections et la fréquence des sauvegardes. Et vous faites évoluer les ressources du VPS au rythme de votre corpus, plutôt qu'au rythme d'une grille de facturation au volume.",{"type":43,"title":44,"items":45},"ul","Ce que Weaviate apporte concrètement",[46,47,48,49,50,51,52],"**Vectorisation intégrée** — avec un module `text2vec-*`, vous insérez du texte brut et Weaviate calcule le vecteur lui-même.","**Recherche hybride native** — une requête `hybrid` combine score vectoriel et BM25, pondérés par le paramètre `alpha`.","**RAG dans la base** — les modules `generative-*` envoient les objets trouvés à un LLM et renvoient la réponse avec les sources.","**Multi-tenancy** — un shard isolé par client dans la même collection, idéal pour un SaaS qui sépare les données de chaque compte.","**Named vectors** — plusieurs vecteurs par objet (titre, contenu, image), chacun avec son propre vectorizer et son propre index.","**Compression de l'index** — quantization PQ, BQ ou SQ pour réduire la mémoire occupée par les vecteurs.","**Licence BSD-3-Clause** — code auditable, déployable sans dépendance à un service managé.",{"type":39,"title":54,"body":55},"Prérequis chiffrés pour un VPS Weaviate","Pour tester avec quelques milliers d'objets, 2 Go de RAM suffisent. Pour un usage réel avec vectorisation déléguée à une API ou à Ollama, 4 Go et 2 vCPU constituent un point de départ confortable. Si vous faites tourner `text2vec-transformers` sur la même machine, prévoyez 8 Go ou plus : l'inférence sur CPU est lente à l'import massif. Côté disque, comptez de 30 à 60 Go de SSD selon le volume, en gardant de la marge car Weaviate passe en lecture seule quand l'occupation du disque dépasse un seuil (`DISK_USE_READONLY_PERCENTAGE`, 90 % par défaut). Trois ports comptent : `8080` pour REST et GraphQL, `50051` pour gRPC (utilisé par le client Python v4 pour les requêtes et les imports), et `2112` pour les métriques Prometheus si vous les activez. Aucun d'eux ne doit être exposé brut sur Internet : seul un reverse proxy en HTTPS, sur un sous-domaine comme `vectors.mondomaine.com`, doit faire face au public. Il vous faut enfin Docker et Docker Compose, déjà présents sur les VPS issus du Marketplace.",{"type":57,"title":58,"headers":59,"rows":63},"comparison","Quel vectorizer choisir",[60,61,62],"Option","Où tourne le modèle","Quand la choisir",[64,68,72,76,80],[65,66,67],"none + vecteurs fournis","Dans votre application, avant l'import","Vous calculez déjà vos embeddings ou voulez un contrôle total du modèle",[69,70,71],"text2vec-openai","API externe, clé transmise en en-tête X-OpenAI-Api-Key","Mise en route rapide, VPS léger, données qui peuvent quitter le serveur",[73,74,75],"text2vec-ollama","Serveur Ollama sur le VPS ou le réseau privé","Embeddings locaux sans GPU dédié, avec un modèle comme nomic-embed-text",[77,78,79],"text2vec-transformers","Conteneur d'inférence à côté de Weaviate","Modèle figé dans l'image, idéalement avec GPU pour les gros imports",[81,82,83],"Plusieurs via named vectors","Mélange des options ci-dessus","Comparer deux modèles ou vectoriser titre et contenu séparément",{"type":85,"title":86,"steps":87},"steps","Déployer Weaviate étape par étape",[88,91,94,97,100,103,106,109,112],{"title":89,"body":90},"Préparer le VPS et le DNS","Vérifiez Docker avec `docker compose version`. Créez un enregistrement DNS A pour `vectors.mondomaine.com` vers l'IP du VPS, puis un dossier `\u002Fopt\u002Fweaviate` qui contiendra le `docker-compose.yml`.",{"title":92,"body":93},"Écrire le service weaviate","Déclarez l'image `semitechnologies\u002Fweaviate:1.27.2` (aussi publiée sur `cr.weaviate.io`). Publiez les ports en local uniquement : `127.0.0.1:8080:8080` et `127.0.0.1:50051:50051`. Docker contourne les règles `ufw` pour les ports publiés, donc un `8080:8080` resterait joignable depuis Internet même pare-feu actif. Montez un volume nommé sur `\u002Fvar\u002Flib\u002Fweaviate` et ajoutez `restart: unless-stopped`.",{"title":95,"body":96},"Poser les variables de base","`PERSISTENCE_DATA_PATH=\u002Fvar\u002Flib\u002Fweaviate` pour la persistance, `QUERY_DEFAULTS_LIMIT=25` pour le nombre de résultats par défaut, `CLUSTER_HOSTNAME=node1` pour un nom de nœud stable : s'il change entre deux redémarrages, le nœud ne retrouve plus son état. Ajoutez `DEFAULT_VECTORIZER_MODULE=none` ou le module de votre choix, et `ENABLE_API_BASED_MODULES=true` pour activer les modules qui appellent une API (`text2vec-openai`, `text2vec-ollama`, `generative-openai`…).",{"title":98,"body":99},"Activer l'authentification par clé API","Passez `AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=false`, puis `AUTHENTICATION_APIKEY_ENABLED=true`, `AUTHENTICATION_APIKEY_ALLOWED_KEYS=cle-admin,cle-lecture` et `AUTHENTICATION_APIKEY_USERS=admin,app-lecture` : les clés et les utilisateurs se correspondent dans l'ordre. Générez les clés avec `openssl rand -hex 32`. Pour restreindre la seconde clé à la lecture, ajoutez `AUTHORIZATION_ADMINLIST_ENABLED=true`, `AUTHORIZATION_ADMINLIST_USERS=admin` et `AUTHORIZATION_ADMINLIST_READONLY_USERS=app-lecture`.",{"title":101,"body":102},"Démarrer et vérifier","Lancez `docker compose up -d`, puis `curl -s localhost:8080\u002Fv1\u002F.well-known\u002Fready` qui répond 200 quand le nœud est prêt. `curl -s -H \"Authorization: Bearer $CLE\" localhost:8080\u002Fv1\u002Fmeta` renvoie la version et la liste des modules chargés : c'est le premier contrôle à faire quand un vectorizer semble absent.",{"title":104,"body":105},"Placer Nginx et le TLS devant le port 8080","Configurez un `server` Nginx pour `vectors.mondomaine.com` avec `proxy_pass http:\u002F\u002F127.0.0.1:8080;`, émettez le certificat avec `certbot --nginx -d vectors.mondomaine.com` et relevez `client_max_body_size` si vous importez par lots en REST. L'en-tête `Authorization` est transmis tel quel à Weaviate.",{"title":107,"body":108},"Se connecter avec le client Python v4","Installez `pip install -U weaviate-client`. Sur le VPS : `client = weaviate.connect_to_local(port=8080, grpc_port=50051, auth_credentials=Auth.api_key(CLE))`, avec `from weaviate.classes.init import Auth`. Depuis un autre serveur, utilisez `weaviate.connect_to_custom(...)` en précisant hôte, port et TLS pour HTTP et pour gRPC. Vérifiez avec `client.is_ready()` et terminez par `client.close()`.",{"title":110,"body":111},"Créer une collection et importer","`client.collections.create(\"Article\", ...)` avec ses propriétés et son vectorizer, puis `articles = client.collections.get(\"Article\")`. Importez par lots dans un bloc `with articles.batch.dynamic() as batch:` en appelant `batch.add_object(properties={...})`, et ajoutez `vector=[...]` si le vectorizer est `none`. Contrôlez ensuite `articles.batch.failed_objects` pour repérer les objets rejetés.",{"title":113,"body":114},"Brancher le reste de la stack IA","Pour des embeddings et une génération 100 % locales, installez Ollama sur le même VPS et pointez `text2vec-ollama` et `generative-ollama` vers son API. Open WebUI ou votre application RAG interrogent ensuite Weaviate comme mémoire documentaire.",{"type":39,"title":116,"body":117},"Modéliser les données : collections, multi-tenancy et named vectors","Dans Weaviate, les données vivent dans des **collections** (appelées classes dans l'ancienne API). Une collection définit ses propriétés typées (`text`, `int`, `number`, `date`, `boolean`, références vers d'autres collections), son vectorizer et la configuration de son index. Déclarez explicitement les propriétés plutôt que de laisser l'auto-schéma les deviner à la première insertion : un champ date deviné comme texte ne se filtre plus correctement. Pour un SaaS, activez la **multi-tenancy** à la création avec `multi_tenancy_config=Configure.multi_tenancy(enabled=True)` : chaque tenant reçoit son propre shard, s'interroge via `collection.with_tenant(\"client-a\")`, et un tenant inactif peut être désactivé pour libérer la mémoire. Les **named vectors** permettent enfin d'attacher plusieurs vecteurs à un même objet, par exemple un pour le titre et un pour le contenu, chacun avec son modèle et son index. Attention : le vectorizer et le type d'index d'une collection ne se changent pas après coup, un changement passe par une nouvelle collection et une réimportation.",{"type":43,"title":119,"items":120},"Interroger Weaviate : les requêtes utiles",[121,122,123,124,125,126],"**Recherche sémantique** — `articles.query.near_text(query=\"résiliation de contrat\", limit=5)` exige un vectorizer, sinon passez par `near_vector` avec votre propre embedding.","**Recherche hybride** — `articles.query.hybrid(query=\"facture en double\", alpha=0.5)` : `alpha=1` donne une recherche purement vectorielle, `alpha=0` une recherche purement BM25.","**Mots-clés seuls** — `articles.query.bm25(query=\"RGPD\")` utilise l'index inversé, utile pour les références, codes produit et noms propres.","**Filtres** — `filters=Filter.by_property(\"langue\").equal(\"fr\")`, importé depuis `weaviate.classes.query`, se combine avec toutes les requêtes ci-dessus.","**RAG intégré** — `articles.generate.near_text(query=..., limit=3, grouped_task=\"Réponds à partir de ces extraits\")` renvoie les objets et la réponse du LLM configuré.","**GraphQL** — l'endpoint `\u002Fv1\u002Fgraphql` reste disponible pour les outils qui l'utilisent, avec les opérateurs `nearText`, `hybrid` et `bm25`.",{"type":39,"title":128,"body":129},"Index HNSW, flat ou dynamic et dimensionnement mémoire","Par défaut, chaque collection utilise un index **HNSW**, rapide mais gardé en mémoire. La documentation de Weaviate donne une règle empirique : prévoir environ deux fois la taille brute des vecteurs. Un million de vecteurs de 768 dimensions en `float32` pèsent environ 3 Go, soit autour de 6 Go de RAM pour l'index. L'index **flat** ne garde rien en mémoire et convient aux petites collections, notamment aux tenants d'un SaaS. L'index **dynamic** démarre en flat puis bascule en HNSW au-delà d'un seuil d'objets ; il nécessite `ASYNC_INDEXING=true`. Pour réduire l'empreinte, activez une **quantization** : PQ (product quantization) compresse fortement après une phase d'entraînement sur vos données, BQ (binary quantization) réduit chaque dimension à un bit et convient surtout aux vecteurs de grande dimension, SQ (scalar quantization) passe chaque dimension sur un octet. Fixez aussi `GOMEMLIMIT` à environ 80 % de la RAM allouée au conteneur pour que le ramasse-miettes de Go intervienne avant que le noyau ne tue le processus.",{"type":39,"title":131,"body":132},"Sauvegardes et mises à jour","Ajoutez `ENABLE_MODULES=backup-filesystem` et `BACKUP_FILESYSTEM_PATH=\u002Fvar\u002Flib\u002Fweaviate\u002Fbackups`, puis déclenchez une sauvegarde avec `curl -X POST -H \"Authorization: Bearer $CLE\" -H \"Content-Type: application\u002Fjson\" -d '{\"id\":\"nightly-20261001\"}' localhost:8080\u002Fv1\u002Fbackups\u002Ffilesystem`. Le statut se lit sur `GET \u002Fv1\u002Fbackups\u002Ffilesystem\u002Fnightly-20261001` et la restauration passe par `POST \u002Fv1\u002Fbackups\u002Ffilesystem\u002Fnightly-20261001\u002Frestore`. Une sauvegarde sur le même disque ne protège pas d'une perte du VPS : copiez le dossier ailleurs, ou utilisez `backup-s3` avec `BACKUP_S3_BUCKET` vers un stockage objet compatible S3. Pour mettre à jour, lisez les notes de migration de la version visée, sauvegardez, changez le tag de l'image puis lancez `docker compose pull && docker compose up -d`. Passez les versions mineures une par une et ne redescendez jamais de version sur les mêmes données sans restaurer une sauvegarde.",{"type":134,"body":135},"tip","Ne laissez pas le port gRPC `50051` ouvert sur Internet : les applications du même VPS l'utilisent en local, et un poste distant passe par un tunnel `ssh -L 50051:localhost:50051 user@vps`. Le déploiement Marketplace lie d'ailleurs ce port à `127.0.0.1` et démarre avec l'accès anonyme ouvert pour faciliter la prise en main : activez l'authentification par clé API avant d'importer des données. Donnez à votre application une clé en lecture seule et réservez la clé admin aux imports et aux sauvegardes.",{"type":39,"title":137,"body":138},"Superviser Weaviate","Activez `PROMETHEUS_MONITORING_ENABLED=true` : Weaviate expose alors ses métriques sur le port `2112` (`\u002Fmetrics`), à collecter par Prometheus et à afficher dans Grafana. Surveillez en priorité la mémoire du processus, la durée des imports par lot et le nombre d'objets par collection. Les endpoints `\u002Fv1\u002F.well-known\u002Flive` et `\u002Fv1\u002F.well-known\u002Fready` servent de sondes à un healthcheck Docker ou à un outil comme Uptime Kuma. Côté système, `docker stats` donne la consommation instantanée du conteneur et `df -h` l'occupation du volume, à suivre de près puisque le passage en lecture seule est déclenché par le disque et non par la RAM. Gardez enfin les journaux avec `docker compose logs -f weaviate` : les erreurs de module et les échecs de vectorisation y apparaissent avec le nom de l'objet concerné.",{"type":43,"title":140,"items":141},"Dépannage : les erreurs les plus fréquentes",[142,143,144,145,146,147],"**Réponse 401 sur toutes les requêtes** — l'accès anonyme est désactivé et la requête n'envoie pas `Authorization: Bearer \u003Cclé>`, ou la clé ne figure pas dans `AUTHENTICATION_APIKEY_ALLOWED_KEYS`.","**Le client Python v4 refuse de se connecter** — il vérifie aussi gRPC : le port `50051` doit être joignable depuis le client, en local ou par tunnel SSH, et `grpc_port` doit correspondre.","**Module introuvable à la création d'une collection** — le module n'est pas chargé : contrôlez `ENABLE_MODULES`, `ENABLE_API_BASED_MODULES` et la liste renvoyée par `\u002Fv1\u002Fmeta`.","**Conteneur qui redémarre avec le code 137** — le noyau l'a tué faute de mémoire : posez `GOMEMLIMIT`, activez une quantization ou augmentez la RAM du VPS.","**Imports rejetés en lecture seule** — le disque a dépassé `DISK_USE_READONLY_PERCENTAGE` : libérez de l'espace ou agrandissez le volume, puis remettez les shards en écriture.","**Erreurs de vectorisation à l'import** — clé d'API du fournisseur absente (`X-OpenAI-Api-Key` passé dans `headers` du client) ou serveur Ollama injoignable depuis le conteneur Weaviate.",{"type":57,"title":149,"headers":150,"rows":156},"Weaviate, Qdrant, pgvector ou Milvus",[151,152,153,154,155],"Critère","Weaviate","Qdrant","pgvector","Milvus",[157,163,169,175,181,187,193,198],[158,159,160,161,162],"Nature","Base vectorielle en Go","Base vectorielle en Rust","Extension de PostgreSQL","Base vectorielle distribuée",[164,165,166,167,168],"Vectorisation intégrée","Oui, modules text2vec-*","Non, embeddings fournis par le client","Non, embeddings fournis par l'application","Principalement côté client",[170,171,172,173,174],"API","REST, GraphQL, gRPC","REST, gRPC","SQL","gRPC, REST, SDK",[176,177,178,179,180],"Hybride et filtres","BM25 + vecteur natif, filtres","Filtres sur payload, vecteurs creux","WHERE SQL, plein texte PostgreSQL à combiner","Filtres scalaires, BM25 dans les versions récentes",[182,183,184,185,186],"Empreinte sur un VPS","Moyenne, conteneur unique","Faible, conteneur unique","Celle de votre PostgreSQL","Plus lourde, etcd et MinIO en mode standalone",[188,189,190,191,192],"Compression","PQ, BQ, SQ","Scalaire, binaire, produit","halfvec, bit","Plusieurs index quantifiés (IVF_PQ, IVF_SQ8…)",[194,195,196,197,196],"Licence","BSD-3-Clause","Apache 2.0","Licence PostgreSQL",[199,200,201,202,203],"Cas d'usage type","RAG tout-en-un avec vectorisation intégrée","Recherche vectorielle frugale","Vecteurs à côté de données relationnelles","Très gros volumes, déploiement en cluster",{"type":39,"title":205,"body":206},"Quand Weaviate est le bon choix","Weaviate se justifie quand vous voulez que la base prenne en charge la vectorisation, la recherche hybride et la génération, plutôt que de les assembler vous-même dans le code applicatif. Il convient bien à un assistant documentaire, à une recherche de catalogue multilingue ou à un SaaS qui isole chaque client par tenant. Si vous calculez déjà vos embeddings et cherchez l'empreinte la plus faible, Qdrant est plus frugal. Si vos données sont déjà dans PostgreSQL et que le volume reste modeste, pgvector évite une brique de plus. Milvus vise les très gros volumes distribués, au prix d'une infrastructure plus lourde. Sur un VPS, commencez avec un seul nœud, un index HNSW, une clé API et des sauvegardes quotidiennes, puis ajoutez quantization et multi-tenancy quand les mesures le demandent. Pour aller plus loin, consultez nos guides sur Qdrant, Ollama et Open WebUI, qui complètent Weaviate dans une stack RAG auto-hébergée.",{"type":208,"title":209,"body":210},"callout","Déployer Weaviate sur votre VPS","Commandez un VPS ServOrbit et déployez Weaviate en quelques clics depuis le Marketplace — Ubuntu 24.04, Docker pré-installé, image `semitechnologies\u002Fweaviate:1.27.2` prête à l'emploi.","Déployez votre plateforme RAG Weaviate","Le VPS Cloud ServOrbit vous donne les ressources et l'environnement Docker pour héberger Weaviate et ses modules, et bâtir un pipeline de recherche sémantique complet, sécurisé et souverain.","Déployer sur VPS Cloud","\u002Fapplications\u002Fia\u002Fweaviate",[216,235,255],{"id":217,"slug":218,"slugs":219,"title":223,"excerpt":224,"readTime":225,"views":226,"isPinned":19,"noindex":19,"publishedAt":227,"updatedAt":228,"category":229,"categories":230,"featuredImage":30,"bgImage":31,"posterImage":232,"relatedSolution":233},65,"heberger-qdrant-vps",{"fr":218,"en":220,"ar":221,"es":222},"hosting-qdrant-on-a-vps","استضافة-qdrant-على-خادم-vps","alojar-qdrant-en-un-vps","Héberger Qdrant sur un VPS","Hébergez Qdrant sur votre VPS : Docker Compose, clé API, TLS, tuning HNSW, quantization, client Python v1, snapshots et monitoring Prometheus.",8,1,"2026-04-16T00:00:00+00:00","2026-10-20T23:18:05+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[231],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-qdrant-vps-poster.svg",{"categorySlug":25,"appSlug":234},"qdrant",{"id":226,"slug":236,"slugs":237,"title":241,"excerpt":242,"readTime":243,"views":226,"isPinned":19,"noindex":19,"publishedAt":244,"updatedAt":245,"category":246,"categories":250,"featuredImage":30,"bgImage":31,"posterImage":252,"relatedSolution":253},"heberger-open-webui",{"fr":236,"en":238,"ar":239,"es":240},"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":226,"name":247,"slug":248,"color":249,"icon":34},"Intelligence Artificielle","intelligence-artificielle","bg-purple-500\u002F10 text-purple-400",[251],{"id":226,"name":247,"slug":248,"color":249,"icon":34},"\u002Fblog\u002Fcovers\u002Fheberger-open-webui-poster.svg",{"categorySlug":34,"appSlug":254},"open-webui",{"id":256,"slug":257,"slugs":258,"title":262,"excerpt":263,"readTime":243,"views":264,"isPinned":19,"noindex":19,"publishedAt":265,"updatedAt":266,"category":267,"categories":268,"featuredImage":30,"bgImage":31,"posterImage":270,"relatedSolution":271},11,"heberger-ollama-vps",{"fr":257,"en":259,"ar":260,"es":261},"how-to-host-ollama-on-a-vps","كيفية-استضافة-ollama-على-خادم-vps","como-alojar-ollama-en-un-vps","Héberger Ollama sur un VPS : guide opérationnel avancé","Configuration avancée d'Ollama sur VPS : gestion des modèles, reverse proxy nginx, sécurité API, quantisation Q4_K_M\u002FQ8, CVE-2026-45672 Open WebUI et couplage sécurisé.",3,"2026-06-09T00:00:00+00:00","2026-11-04T16:30:24+00:00",{"id":226,"name":247,"slug":248,"color":249,"icon":34},[269],{"id":226,"name":247,"slug":248,"color":249,"icon":34},"\u002Fblog\u002Fcovers\u002Fheberger-ollama-vps-poster.svg",{"categorySlug":34,"appSlug":272},"ollama",true,1794270735369]