# Faire fonctionner Discourse AI avec Ollama localement

**URL:** https://meta.discourse.org/t/getting-discourse-ai-to-work-with-ollama-locally/353614
**Category:** Support
**Tags:** ai
**Created:** [Février 18, 2025, 9:15 UTC](https://meta.discourse.org/t/getting-discourse-ai-to-work-with-ollama-locally/353614 "2025-02-18T21:15:24Z")
**Posts on this page:** 16
**Page:** 1

<div class="post-metadata">

### Author: ![hendersj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hendersj/32/507887_2.png) [@hendersj](https://meta.discourse.org/u/hendersj)
#### Post date: [Février 18, 2025, 9:15 UTC](https://meta.discourse.org/t/getting-discourse-ai-to-work-with-ollama-locally/353614/1 "2025-02-18T21:15:24Z")

</div>

Curieux de savoir si quelqu’un a réussi à faire fonctionner cela avec Ollama localement ?

---

<div class="post-metadata">

### Author: ![dubwoc](https://avatars.discourse-cdn.com/v4/letter/d/b4bc9f/32.png) [@dubwoc](https://meta.discourse.org/u/dubwoc)
#### Post date: [Février 19, 2025, 1:26 UTC](https://meta.discourse.org/t/getting-discourse-ai-to-work-with-ollama-locally/353614/2 "2025-02-19T01:26:07Z")

</div>

J’essaie également de faire fonctionner cela avec ollama. Il semble que l’API utilisée par le plugin Discourse AI ne soit pas compatible avec Ollama et que tous les paramètres que je modifie ne changent pas la requête API.

Voici ce qui fonctionne avec ollama :

```plaintext
curl http://192.168.1.2:11434/api/generate -d '{\
                     \"model\": \"llama3.2\",\
                     \"prompt\": \"Pourquoi le ciel est-il bleu ?\"\
                   }'

```

Et ci-dessus semble être le seul type de requête que le plugin tente. Par exemple :

```plaintext
curl http://192.168.1.2:11434/ \
                           -X POST \
                           -H 'Content-Type: application/json' \
                           -d '{\"inputs\":\"\u003cs\u003e[INST] Quel est votre condiment préféré ? [/INST] Eh bien, j'aime beaucoup un bon filet de jus de citron frais. Il ajoute juste la bonne quantité de saveur acidulée à tout ce que je cuisine dans la cuisine ! \u003c/s\u003e [INST] Avez-vous des recettes de mayonnaise ? [/INST]\",\"parameters\":{\"max_new_tokens\":500, \"temperature\":0.5,\"top_p\": 0.9}}'

```

Le chatbot IA est censé prendre en charge ollama, mais je n’arrive pas non plus à obtenir de réponse.

Donc, oui, quiconque a réussi à faire fonctionner cela avec ollama, veuillez publier les paramètres que vous avez utilisés !

---

<div class="post-metadata">

### Author: ![dubwoc](https://avatars.discourse-cdn.com/v4/letter/d/b4bc9f/32.png) [@dubwoc](https://meta.discourse.org/u/dubwoc)
#### Post date: [Février 19, 2025, 1:29 UTC](https://meta.discourse.org/t/getting-discourse-ai-to-work-with-ollama-locally/353614/3 "2025-02-19T01:29:55Z")

</div>

Apparemment, j’ai parlé trop vite, si je n’ai aucun paramètre défini dans le plugin Discourse AI et que je suis les instructions RAG dans ce [post](https://meta.discourse.org/t/discourse-chatbot/256652/960), j’obtiens des réponses dans le chatbot IA d’Ollama !

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [Février 19, 2025, 4:32 UTC](https://meta.discourse.org/t/getting-discourse-ai-to-work-with-ollama-locally/353614/4 "2025-02-19T04:32:08Z")

</div>

Ça fonctionne très bien avec Ollama, plusieurs personnes dans l’équipe l’utilisent.

---

<div class="post-metadata">

### Author: ![hendersj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hendersj/32/507887_2.png) [@hendersj](https://meta.discourse.org/u/hendersj)
#### Post date: [Février 19, 2025, 4:03 UTC](https://meta.discourse.org/t/getting-discourse-ai-to-work-with-ollama-locally/353614/5 "2025-02-19T16:03:34Z")

</div>

Cool. Existe-t-il un guide que nous pouvons suivre sur la façon de l’implémenter ?

Je suis plus intéressé par la résumé et d’autres fonctions que par le chatbot.

ETA : Cette configuration ne fonctionne pas :

 ![L'image montre un écran de configuration pour un modèle d'IA nommé « olllama » hébergé par OpenAI, avec des champs remplis pour l'ID du modèle, le fournisseur, l'URL et la clé API, ainsi que des options pour la tokenisation des invites et l'activation de la visualisation. (Légendé par l'IA)](https://global.discourse-cdn.com/meta/original/4X/e/8/8/e88565c342ea1b825af2514e63b8d8173c98db3b.png)

(J’ai masqué l’adresse IP de mon hôte ici).

Ce qui se passe, c’est que j’obtiens une erreur de serveur interne lorsque je clique sur « Run Test ».

Sur /logs, je vois :

```plaintext
NameError (variable ou méthode locale non définie `tokenizer' pour une instance de DiscourseAi::Completions::Dialects::ChatGpt)
app/controllers/application_controller.rb:427:in `block in with_resolved_locale'
app/controllers/application_controller.rb:427:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:35:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
lib/middleware/anonymous_cache.rb:409:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/processing_request.rb:12:in `call'
lib/middleware/request_tracker.rb:385:in `call'

```

Cela se produit quel que soit le tokenizer que je sélectionne. Je teste ceci sur 3.5.0beta1-dev (c1ee4e120e).

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [Février 19, 2025, 7:25 UTC](https://meta.discourse.org/t/getting-discourse-ai-to-work-with-ollama-locally/353614/6 "2025-02-19T19:25:49Z")

</div>

Définissez l’URL sur `http://localhost:11434/v1/chat/completions`

---

<div class="post-metadata">

### Author: ![hendersj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hendersj/32/507887_2.png) [@hendersj](https://meta.discourse.org/u/hendersj)
#### Post date: [Février 19, 2025, 7:39 UTC](https://meta.discourse.org/t/getting-discourse-ai-to-work-with-ollama-locally/353614/7 "2025-02-19T19:39:30Z")

</div>

> [@Falco](#):
>
> [http://localhost:11434/v1/chat/completions](http://localhost:11434/v1/chat/completions)

Le test échoue toujours avec une erreur de serveur interne, le même message de journal également - une NameError indiquant que « tokenizer » est une variable locale indéfinie.

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [Février 19, 2025, 9:46 UTC](https://meta.discourse.org/t/getting-discourse-ai-to-work-with-ollama-locally/353614/8 "2025-02-19T21:46:31Z")

</div>

Essayez d’enregistrer le modèle tel quel, de rafraîchir la page, puis de revenir via le bouton d’édition LLM et d’exécuter un nouveau test.

---

<div class="post-metadata">

### Author: ![hendersj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hendersj/32/507887_2.png) [@hendersj](https://meta.discourse.org/u/hendersj)
#### Post date: [Février 19, 2025, 9:51 UTC](https://meta.discourse.org/t/getting-discourse-ai-to-work-with-ollama-locally/353614/9 "2025-02-19T21:51:36Z")

</div>

Même résultat - J’ai parcouru cela plusieurs fois, mais je viens de réessayer.

J’ai fait l’installation de la manière habituelle - je l’ai ajouté à mon fichier `app.yml` et j’ai exécuté `./launcher rebuild app`

La ligne que j’ai ajoutée était :

```plaintext
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - sudo -E -u discourse git clone https://github.com/discourse/discourse-ai.git

```

(J’ai supprimé les autres plugins de la liste mais j’ai laissé les composants yml pour que vous puissiez voir où cela se trouve dans le fichier yml.)

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [Février 19, 2025, 9:53 UTC](https://meta.discourse.org/t/getting-discourse-ai-to-work-with-ollama-locally/353614/10 "2025-02-19T21:53:07Z")

</div>

Je retrouverai ma configuration ollama locale demain et je ferai un rapport ici.

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [Février 20, 2025, 6:34 UTC](https://meta.discourse.org/t/getting-discourse-ai-to-work-with-ollama-locally/353614/11 "2025-02-20T18:34:49Z")

</div>

J’ai fait :

```plaintext
ollama serve
ollama run phi4

# test

curl http://localhost:11434/v1/chat/completions \
              -H "Content-Type: application/json" \
              -d '{
              "model": "phi4",
              "messages": [
                  {
                      "role": "system",
                      "content": "You are a helpful assistant."
                  },
                  {
                      "role": "user",
                      "content": "How much is 1+1?"
                  }
              ]
          }' -s | jq .choices[].message.content

"La somme de 1 + 1 est 2.

En arithmétique de base, lorsque vous ajoutez une unité à une autre unité simple, le nombre total devient deux unités. Cette opération fait partie des principes fondamentaux d'addition utilisés en mathématiques. Y a-t-il autre chose pour lequel je peux vous aider concernant les mathématiques ou tout autre sujet ?"

```

 ![L'image est une capture d'écran d'une interface de configuration pour un modèle logiciel nommé "ollama" avec divers paramètres, y compris le nom, l'ID du modèle, le fournisseur et les détails du service, avec une soumission réussie indiquée par un message vert "Success!". (Légendé par l'IA)](https://global.discourse-cdn.com/meta/original/4X/8/7/3/873f6431fb5a31b1c02c2512ab04f9e791b78042.jpeg)

Testé sur Helper

 ![L'image montre une suggestion de remplacer "JavaScript" par le terme correct "javascript" dans un commentaire discutant de l'ajout de code JavaScript à des sujets spécifiques pour les publicités. (Légendé par l'IA)](https://global.discourse-cdn.com/meta/original/4X/f/4/c/f4c702a8da59159458413d683a43c82124198209.jpeg)

---

<div class="post-metadata">

### Author: ![hendersj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hendersj/32/507887_2.png) [@hendersj](https://meta.discourse.org/u/hendersj)
#### Post date: [Février 20, 2025, 7:13 UTC](https://meta.discourse.org/t/getting-discourse-ai-to-work-with-ollama-locally/353614/12 "2025-02-20T19:13:24Z")

</div>

Merci d’avoir testé cela.

Je remarque que j’ai une option supplémentaire (Désactiver les complétions en flux) par rapport à votre configuration. Est-il possible que ce soit la sélection du modèle qui pose problème pour moi ? (J’ai installé deepseek-r1:32b).

```plaintext
curl http://localhost:11434/v1/chat/completions \
              -H "Content-Type: application/json" \
              -d '{
              "model": "deepseek-r1:32b",
              "messages": [
                  {
                      "role": "system",
                      "content": "Vous êtes un assistant utile."
                  },
                  {
                      "role": "user",
                      "content": "Combien font 1+1 ?"
                  }
              ]
          }' -s | jq .choices[].message.content

"<think>\nBon, j'essaie de comprendre combien font 1 plus 1. D'accord, décomposons cela étape par étape, même si cela semble simple.\n\nPremièrement, je sais que l'addition consiste à combiner deux nombres pour obtenir une somme totale. Donc, quand nous disons 1 + 1, nous mettons essentiellement ensemble un objet et un autre objet pour voir combien nous avons au total.\n\nLaissez-moi visualiser cela : imaginez que j'ai une pomme dans ma main gauche et une autre pomme dans ma main droite. Si je les mets ensemble, combien de pommes ai-je ? Cela devrait être deux pommes, non ?\n\nUne autre façon de voir les choses est d'utiliser une droite numérique. En partant du nombre 1, si je fais un pas de plus vers l'avant, où atterris-je ? C'est exact, sur le nombre 2.\n\nJe peux aussi utiliser mes doigts pour compter. Levez un doigt de ma main gauche et un autre de ma main droite. Maintenant, comptez-les tous : un, deux. Cela me donne donc un total de deux doigts, ce qui signifie que 1 + 1 = 2.\n\nPeut-être devrais-je vérifier s'il existe une autre perspective ou méthode. Par exemple, en binaire, le système numérique utilisé par les ordinateurs, 1 + 1 égale 10 car il y a une retenue après avoir atteint 2 (qui est représenté par 10). Mais c'est un contexte différent. En arithmétique décimale standard, que nous utilisons quotidiennement, 1 + 1 reste égal à 2.\n\nLaissez-moi aussi considérer le concept d'ensembles. Si j'ai un ensemble contenant un élément et un autre ensemble avec un élément, les combiner donnerait un ensemble avec deux éléments. Cela renforce l'idée que 1 + 1 égale 2.\n\nJe pourrais me demander s'il existe un scénario où 1 + 1 ne serait pas égal à 2. Mais dans le domaine de l'arithmétique de base et des mathématiques telles que nous les apprenons, la réponse est constamment deux.\n\nPour m'assurer de ne rien manquer, peut-être devrais-je examiner certaines preuves ou principes mathématiques qui confirment cela. Par exemple, dans les axiomes de Peano, qui forment le fondement de l'arithmétique, l'idée d'ajouter 1 à 1 suivrait l'axiome selon lequel chaque nombre naturel a un successeur, et 2 est défini comme le successeur de 1.\n\nPar conséquent, en rassemblant toutes ces réflexions — visualiser des objets, utiliser une droite numérique, compter sur ses doigts, considérer des ensembles, et même toucher aux axiomes mathématiques — tout pointe vers le fait que 1 + 1 égale 2.\n</think>\n\nLe résultat de l'addition de 1 et 1 est 2. Cela peut être vu dans l'arithmétique simple et de diverses façons de visualiser le problème.\n\n **Réponse :** \n$1 + 1 = \\boxed{2}$"

```

Résultat similaire, bien que j’obtienne les balises `<think>` avec ce modèle particulier — donc peut-être que ce modèle ne conviendra pas à cet usage.

Je viens de reconstruire (c’est-à-dire `./launcher rebuild app`) mon installation et de m’assurer que tout est à jour — je vois « tout à jour » dans ma page de mise à jour.

Que je sélectionne deepseek-r1:32b ou phi4 (que j’ai également installé et testé), je continue d’obtenir une réponse d’erreur interne du serveur dans le navigateur.

Mais dans mes journaux, je vois quelque chose de nouveau.

`FinalDestination::SSRFDetector::DisallowedIpError (FinalDestination : toutes les adresses IP résolues étaient interdites) lib/final_destination/ssrf_detector.rb:105:in 'lookup_and_filter_ips' lib/final_destination/http'`

```plaintext
lib/final_destination/ssrf_detector.rb:105:in `lookup_and_filter_ips'
lib/final_destination/http.rb:15:in `connect'
net-http (0.6.0) lib/net/http.rb:1642:in `do_start'
net-http (0.6.0) lib/net/http.rb:1631:in `start'
net-http (0.6.0) lib/net/http.rb:1070:in `start'
plugins/discourse-ai/lib/completions/endpoints/base.rb:105:in `perform_completion!'
plugins/discourse-ai/lib/completions/endpoints/open_ai.rb:44:in `perform_completion!'
plugins/discourse-ai/lib/completions/llm.rb:281:in `generate'
plugins/discourse-ai/lib/configuration/llm_validator.rb:36:in `run_test'
plugins/discourse-ai/app/controllers/discourse_ai/admin/ai_llms_controller.rb:128:in `test'
actionpack (7.2.2.1) lib/action_controller/metal/basic_implicit_render.rb:8:in `send_action'
actionpack (7.2.2.1) lib/abstract_controller/base.rb:226:in `process_action'
actionpack (7.2.2.1) lib/action_controller/metal/rendering.rb:193:in `process_action'
actionpack (7.2.2.1) lib/abstract_controller/callbacks.rb:261:in `block in process_action'
activesupport (7.2.2.1) lib/active_support/callbacks.rb:121:in `block in run_callbacks'
app/controllers/application_controller.rb:427:in `block in with_resolved_locale'
i18n (1.14.7) lib/i18n.rb:353:in `with_locale'
app/controllers/application_controller.rb:427:in `with_resolved_locale'
activesupport (7.2.2.1) lib/active_support/callbacks.rb:130:in `block in run_callbacks'
activesupport (7.2.2.1) lib/active_support/callbacks.rb:141:in `run_callbacks'
actionpack (7.2.2.1) lib/abstract_controller/callbacks.rb:260:in `process_action'
actionpack (7.2.2.1) lib/action_controller/metal/rescue.rb:27:in `process_action'
actionpack (7.2.2.1) lib/action_controller/metal/instrumentation.rb:77:in `block in process_action'
activesupport (7.2.2.1) lib/active_support/notifications.rb:210:in `block in instrument'
activesupport (7.2.2.1) lib/active_support/notifications/instrumenter.rb:58:in `instrument'
activesupport (7.2.2.1) lib/active_support/notifications.rb:210:in `instrument'
actionpack (7.2.2.1) lib/action_controller/metal/instrumentation.rb:76:in `process_action'
actionpack (7.2.2.1) lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord (7.2.2.1) lib/active_record/railties/controller_runtime.rb:39:in `process_action'
actionpack (7.2.2.1) lib/abstract_controller/base.rb:163:in `process'
actionview (7.2.2.1) lib/action_view/rendering.rb:40:in `process'
rack-mini-profiler (3.3.1) lib/mini_profiler/profiling_methods.rb:115:in `block in profile_method' 
actionpack (7.2.2.1) lib/action_controller/metal.rb:252:in `dispatch'
actionpack (7.2.2.1) lib/action_controller/metal.rb:335:in `dispatch'
actionpack (7.2.2.1) lib/action_dispatch/routing/route_set.rb:67:in `dispatch'
actionpack (7.2.2.1) lib/action_dispatch/routing/route_set.rb:50:in `serve'
actionpack (7.2.2.1) lib/action_dispatch/routing/mapper.rb:32:in `block in <class:Constraints>'
actionpack (7.2.2.1) lib/action_dispatch/routing/mapper.rb:62:in `serve'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:53:in `block in serve'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:133:in `block in find_routes'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:126:in `each'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:126:in `find_routes'
actionpack (7.2.2.1) lib/action_dispatch/journey/router.rb:34:in `serve'
actionpack (7.2.2.1) lib/action_dispatch/routing/route_set.rb:896:in `call'
lib/middleware/omniauth_bypass_middleware.rb:35:in `call'
rack (2.2.11) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.11) lib/rack/conditional_get.rb:27:in `call'
rack (2.2.11) lib/rack/head.rb:12:in `call'
actionpack (7.2.2.1) lib/action_dispatch/http/permissions_policy.rb:38:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:409:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
rack (2.2.11) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.11) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/cookies.rb:704:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/callbacks.rb:31:in `block in call'
activesupport (7.2.2.1) lib/active_support/callbacks.rb:101:in `run_callbacks'
actionpack (7.2.2.1) lib/action_dispatch/middleware/callbacks.rb:30:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:31:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/show_exceptions.rb:32:in `call'
logster (2.20.1) lib/logster/middleware/reporter.rb:40:in `call'
railties (7.2.2.1) lib/rails/rack/logger.rb:41:in `call_app'
railties (7.2.2.1) lib/rails/rack/logger.rb:29:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/request_id.rb:33:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
rack (2.2.11) lib/rack/method_override.rb:24:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/executor.rb:16:in `call'
rack (2.2.11) lib/rack/sendfile.rb:110:in `call'
rack-mini-profiler (3.3.1) lib/mini_profiler.rb:334:in `call'
lib/middleware/processing_request.rb:12:in `call'
message_bus (4.3.9) lib/message_bus/rack/middleware.rb:60:in `call'
lib/middleware/request_tracker.rb:385:in `call'
actionpack (7.2.2.1) lib/action_dispatch/middleware/remote_ip.rb:96:in `call'
railties (7.2.2.1) lib/rails/engine.rb:535:in `call'
railties (7.2.2.1) lib/rails/railtie.rb:226:in `public_send'
railties (7.2.2.1) lib/rails/railtie.rb:226:in `method_missing'
rack (2.2.11) lib/rack/urlmap.rb:74:in `block in call'
rack (2.2.11) lib/rack/urlmap.rb:58:in `each'
rack (2.2.11) lib/rack/urlmap.rb:58:in `call'
unicorn (6.1.0) lib/unicorn/http_server.rb:634:in `process_client'
unicorn (6.1.0) lib/unicorn/http_server.rb:739:in `worker_loop'
unicorn (6.1.0) lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn (6.1.0) lib/unicorn/http_server.rb:143:in `start'
unicorn (6.1.0) bin/unicorn:128:in `<top (required)>'
vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `load'
vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `<main>'

```

Cette installation Discourse est relativement récente, et je n’ai configuré aucun blocage d’adresse IP. Je suis également le seul utilisateur. J’exécute ollama dans un conteneur Docker, mais cela ne devrait pas poser problème ; j’utilise open-webui (également depuis un autre conteneur Docker) avec l’instance et cela fonctionne bien. J’utilise l’adresse IP locale plutôt que « localhost », mais « localhost » ne se comporte pas différemment.

Je vous remercie du temps que vous consacrez à m’aider à comprendre ce qui se passe ici.

ETA : J’ai installé `jq` dans le conteneur Docker Discourse et exécuté la commande curl (en remplaçant mon adresse IP locale à la place de `localhost`), et cela a fonctionné depuis là — il y a donc une connectivité entre les conteneurs, et l’URL est correcte).

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [Février 20, 2025, 8:16 UTC](https://meta.discourse.org/t/getting-discourse-ai-to-work-with-ollama-locally/353614/13 "2025-02-20T20:16:04Z")

</div>

> [@hendersj](#):
>
> `FinalDestination::SSRFDetector::DisallowedIpError (FinalDestination: tous les IPs résolus ont été refusés) lib/final_destination/ssrf_detector.rb:105:in 'lookup_and_filter_ips' lib/final_destination/http'`

C’est notre protection SSRF par défaut qui s’active. Vous pouvez y ajouter des exceptions via la variable d’environnement `DISCOURSE_ALLOWED_INTERNAL_HOSTS`.

Elle se déclenche lorsque Discourse essaie d’atteindre une adresse IP considérée comme interne.

---

<div class="post-metadata">

### Author: ![hendersj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hendersj/32/507887_2.png) [@hendersj](https://meta.discourse.org/u/hendersj)
#### Post date: [Février 20, 2025, 8:43 UTC](https://meta.discourse.org/t/getting-discourse-ai-to-work-with-ollama-locally/353614/14 "2025-02-20T20:43:51Z")

</div>

Génial, ça a fonctionné - je l’ai fait via les paramètres plutôt que via la variable d’environnement, mais le test a réussi maintenant. Merci encore pour toute votre aide !

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [Mars 7, 2025, 3:44 UTC](https://meta.discourse.org/t/getting-discourse-ai-to-work-with-ollama-locally/353614/15 "2025-03-07T15:44:17Z")

</div>

3 messages ont été déplacées vers un nouveau sujet : [Comment utiliser Ollama avec des embeddings](https://meta.discourse.org/t/how-to-use-ollama-with-embeddings/356292)

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [Avril 6, 2025, 3:45 UTC](https://meta.discourse.org/t/getting-discourse-ai-to-work-with-ollama-locally/353614/16 "2025-04-06T15:45:15Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
