UGREEN [Docker/Ollama] installation de Ollama via docker sur DXP4800+

  • Vague de SPAM

    Suite à une vague de spam sur le forum, les inscriptions sont temporairement limitées.

    Après votre inscription, un membre de l'équipe devra valider votre compte avant qu'il ne soit activé. Nous sommes désolés pour la gêne occasionnée et vous remercions de votre patience.

lacouelle

Chevalier Jedi
Membre Confirmé
15 Novembre 2024
438
104
93
Hello
Afin d’utiliser des modeles IA en évitant de mettre des infos perso sur leurs serveurs, j’ai installé Ollama avec 2 modèles IA en local sur mon DXP4800+.
A noter que j'ai bodybuildé le NAS depuis le début avec les 64Go de RAM.
Il me reste à sensibiliser ma wife et mes filles à la sensibilisation du partage de nos/leurs infos perso, mais aussi à l'utilisation de cette IA locale.
J'étais parti dans l'idée de faire tourner ca sur un Pi5 16G, et je suis tombé sur ce lien Comment exécuter Ollama et les modèles de langage sur le Raspberry Pi 5 : guide complet. Finalement sans interface web, ca ne va pas le faire ! Dans ce meme post, l'auteur parle aussi de docker et Ollama , webUI.


De fil en aiguille, apres avoir ouvert Site Officiel OIlama, Depot Ollama Github, et WebUI sur GitHub pour Pi5, j'ai finalement trouvé des sites plus parlant ci dessous :

- Ollama Models Setup: Step-by-Step Guide with Docker Compose
- Ollama et Open WebUI : déploiement local de LLM avec Docker
- How to locally deploy ollama and Open-WebUI with Docker Compose
- Setting Up Ollama with Open-WebUI: A Docker Compose Guide
- How to setup Open WebUI with Ollama and Docker Desktop

J'ai du aussi me remettre sur Portainer, et comme je ne l'utilise que rarement, je me suis souvenu de Marius Hosting et ses tutos, plutot bien ou meme tres biens foutus.
How to Install Ollama on Your Synology NAS, m'a aussi bcp aidé, mais la partie reverse proxy, je la ferai après via Nginx Proxy manager.

j'ai donc créé les répertoires dans mon dossier partagé Docker, soit pour moi :
/volume2/docker/ollama/ollama/
/volume2/docker/ollama/modelfiles
/volume2/docker/ollama/openwebui

En jouant les David Guetta en mixant les docker-compose donnés dans les différents sites, et bien sur en adaptant à mon environnement après avoir compris à minima les différentes lignes, j'en suis arrivé à un truc qui fonctionne chez moi c'est sur, mais en distant, j'attends le retour des mes filles qui , disons le simplement, ont l'air de s'en foutre velu ! :ROFLMAO:, surtout un dimanche après midi en pleine sieste en meme temps que leurs mouflets.

Mon docker-compose est le suivant et bien évidemment à parfaire en y ajoutant, car j'ai vu aussi qu'il etait possible de mettre des parametres jouant sur l'allocation des ressources :

Code:
services:
  ollama:
    image: ollama/ollama:latest #Marius dit de prendre l'image ollama/ollama:rocm preferable pour CPU AMD, ce qui est le cas normalement sur ce NAS, mais ca fonctionne.
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - /volume2/docker/ollama/ollama:/root/.ollama #repertoires dans dossier partagé Docker
      - /volume2/docker/ollama/modelfiles:/modelfiles #repertoires dans dossier partagé Docker
    environment:
      - OLLAMA_NUM_PARALLEL=2 #nombre de requêtes que j'ai choisi de mettre en // 2 sachant que je me dis plus y'en a, moins ca sera rapide, j'adapterai si besoin 
      - OLLAMA_MAX_LOADED_MODELS=1 #nombre de modele pouvant etre chargé en meme temps.
    restart: unless-stopped

  ollama-pull: # pour télécharger les modèles IA indiqués plus bas soit ici llama3.2:3b et qwen2.5:7b pour moi.
    image: ollama/ollama:latest
    container_name: ollama-pull
    depends_on:
      - ollama
    environment:
      - OLLAMA_HOST=http://ollama:11434
    volumes:
      - /volume2/docker/ollama/ollama:/root/.ollama
    entrypoint: ["/bin/sh","-lc"]
    command: >
      "set -e;
       echo 'Waiting for Ollama...';
       until ollama list >/dev/null 2>&1; do sleep 2; done;
       echo 'Pulling models...';
       ollama pull llama3.2:3b; # modele IA  qui sera téléchargé , liste sur modele IA que l'on trouve ici => https://ollama.com/search
       ollama pull qwen2.5:7b; # modele IA  qui sera téléchargé , modele IA que l'on trouve ici => https://ollama.com/search ; donc 2 modele en ligne avec OLLAMA_NUM_PARALLEL=2
       echo 'models pulled'"
    restart: "no"


  webui: # Lles puristes noteront que j'aurai du appeler ce service openwebui vu la ligne du dessous
    image: ghcr.io/open-webui/open-webui:main # j'étais parti sur WebUI mais j'ai pris OpeWebUi trouvé sur l'un des sites ci dessus ; pourquoi ? j'sais plus ! 
    container_name: open-webui
    ports:
      - "3001:8080" # normalement, c'est putot le 3000 mai sedia occupé chez moi par Grafana
    depends_on:
      - ollama
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_AUTH=true
      - WEBUI_ALLOW_SIGNUP=true #permet de creed son user
      - WEBUI_SECRET_KEY=dOxZYTTZgXKMHkqLBIQVImayQXAVWdzGBPuFJKggzcgvgPJPXpWzqzKaUOIOGGIr #j'ai repris celle de Marius
    volumes:
      - /volume2/docker/ollama/openwebui:/app/backend/data
    restart: unless-stopped
 
Dernière édition:
Ensuite j'y ai accès via http://ip.du.nas:3001

creation du compte

Capture d’écran 2025-12-21 à 11.26.37.png
et ca fonctionne :

Capture d’écran 2025-12-21 à 13.49.59.png

et changement des modèles en haut a gauche.
Capture d’écran 2025-12-21 à 12.02.08.png

J'ai donc l'impression d'avoir remplacer un peu de ma connerie naturelle mais de l'intelligence artificielle !
 
Tu devrais mettre ce poste dans la section Tuto d'Ugreen vu ce n'est pas une app du magasin (je suppose :unsure:)
Hello
alors je n'appellerai pas ca une tuto mais plutot un partage d'experience, car je n'ai pas les qualifs pour suffisamment filer des tutos aux autres :)
mais oui tu as raison ; ceci etait pas sur que je puisse changer de section

si un modo peut le faire , je viens de checker et je ne trouve pas
 
J'ai demandé à l'ami serge, Ollama, d'analyser le yml ci dessus :

bon , ben c'est pas gagné :ROFLMAO: voila ce qu'il me sort, apres un temps certain, je vois gentiment les mots s'afficher les uns apres les autres à la vitesse d'un escargot.
Y'a du fine tuning dans l'air.
CPU du NAS a 20%
perso , j'arrete pour ce soir


Après avoir lu le fichier YAML, je vais vous proposer quelques améliorations et suggestions :


  1. Simplification de la structure : Le fichier YAML contient plusieurs services avec des noms similaires ("ollama", "ollama-pull" et "webui"). Il serait plus simple d'utiliser une structure plus uniforme, par exemple en créant un service principal pour les applications et des sous-services pour chaque fonctionnalité.
  2. Utilisation de variables : Les valeurs telles que OLLAMA_NUM_PARALLEL et OLLAMA_MAX_LOADED_MODELS sont répétées à plusieurs reprises dans le fichier YAML. Il serait plus pratique d'utiliser des variables pour les mettre en place une seule fois.
  3. Définition des ports : Les ports utilisés par chaque service sont définis avec des noms tels que 11434:11434. Il serait plus clair de spécifier uniquement les ports, sans les ports inversés.

Voici un exemple d'amélioration du fichier YAML :


Code:
services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    ports:
      - 11434
    volumes:
      - /volume2/docker/ollama/ollama:/root/.ollama
    environment:
      - OLLAMA_NUM_PARALLEL=2
      - OLLAMA_MAX_LOADED_MODELS=1

  ollama-pull:
    image: ollama/ollama:latest
    container_name: ollama-pull
    depends_on:
      - ollama
    volumes:
      - /volume2/docker/ollama/ollama:/root/.ollama
    entrypoint: ["/bin/sh","-lc"]
    command: >
      "set -e;
       echo 'Waiting for Ollama...';
       until ollama list >/dev/null 2>&1; do sleep 2; done;
       echo 'Pulling models...';
       ollama pull llama3.2:3b; # modele IA  qui sera téléchargé , liste sur modele IA que l'on trouve ici => https://ollama.com/search
       ollama pull qwen2.5:7b; # modele IA  qui sera téléchargé , modele IA que l'on trouve ici => https://ollama.com/search ; donc 2 modele en ligne avec OLLAMA_NUM_PARALLEL=2
       echo 'models pulled'"
    restart: "no"

  webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    ports:
      - 3001:8080
    depends_on:
      - ollama
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_AUTH=true
      - WEBUI_ALLOW_SIGNUP=true
      - WEBUI_SECRET_KEY=dOxZYTTZgXKMHkqLBIQVImayQXAVWdzGBPuFJKggzcgvgPJPXpWzqzKaUOIOGGIr
    volumes:
      - /volume2/docker/ollama/openwebui:/app/backend/data
    restart: unless-stopped
 
Alors j'ai essayé, j'ai accès à la page, j'ai créé le compte mais toutes les recherches se solde par un échec.
Par contre je suis obligé d'ajouter manuellement "llama3.2:3b" qui ne ce télécharge pas tout seul
la suite au prochain épisode, il est trop tard
 
Alors j'ai essayé, j'ai accès à la page, j'ai créé le compte mais toutes les recherches se solde par un échec.
Par contre je suis obligé d'ajouter manuellement "llama3.2:3b" qui ne ce télécharge pas tout seul
la suite au prochain épisode, il est trop tard
Hello
cool, tu as essayé avec mon yml ou celui soit disant amélioré par l'AI elle meme ?
hier depuis l'iPhone, donc en wifi ca bloquait, les requîtes ne passaient pas.
en revanche sur le Mac, ca fonctionnait mais lentement.

tu as mis quel DNS dans UGOS ?
si tu as 1 ou 2 pihole, ca peut surement bloquer car je viens de me rappeler et de voir que j'avais disable le pihole hier.


je viens de changer la ligne ollama pull qwen2.5:7b; par ollama pull phi3:mini; et de mon coté, j'ai bien pullé le modele phi3:mini
 
Meme si j'arrive a bien télécharger le nouveau modele, et bien ca rame sérieusement !

j'ai fouillé ce matin et j'ai trouvé des set up sur GPU.
Le souci si je ne dis pas de bêtise d'après ce que j'ai lu, il n'y a pas de GPU proprement dit sur ce NAS, ou plutot elle est gérée/intégrée via le processeur Intel.
 
J'ai essayé avec les deux YML
Avec le tiens Ollama-pull ne démarre pas
Avec celui généré tout démarre et à l'air de fonctionner mais pas de mise à jour des modèles, si je charge les modèles sur la page d'accueil les recherche ne fonctionne pas et message d'erreur.
Pour les DNS ce sont ceux de la box
non pas de pihole
 
J'ai essayé avec les deux YML
Avec le tiens Ollama-pull ne démarre pas
Avec celui généré tout démarre et à l'air de fonctionner mais pas de mise à jour des modèles, si je charge les modèles sur la page d'accueil les recherche ne fonctionne pas et message d'erreur
curieux que mon yml fonctionne chez moi.
donc si celui généré, ce n'est donc pas un souci de DNS dans ce cas .

donc tu as bien les modèles en haut sur la gauche.
les recherches sont longues, ca rame sérieusement.

J'ai trouvé ces 2 liens A Developer's Guide to Ollama GPU Passthrough with Docker ou tout à la fin il y a la partie problem/setup Description & alternative solution, puis en fouillant sur la GPU intégrée de nos NAS soit la iGPU , celui ci Running Ollama on AMD iGPU qui dans la deuxième partie Integrated GPU Setup semble avoir la solution ou du moins la suggérer.

Donc je vais fouiller encore un peu plus pour passer l'équivalent des CLI données par cette personne autrement car le NAS est verrouillé.
 
Bon je suis reparti de zéro et ça fonctionne avec ce YAML

YAML:
services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    ports:
      - 11434
    volumes:
      - /volume1/docker/ollama/ollama:/root/.ollama
    environment:
      - OLLAMA_NUM_PARALLEL=2
      - OLLAMA_MAX_LOADED_MODELS=4

  ollama-pull:
    image: ollama/ollama:latest
    container_name: ollama-pull
    depends_on:
      - ollama
    volumes:
      - /volume1/docker/ollama/ollama:/root/.ollama
    entrypoint: ["/bin/sh","-lc"]
    command: >
      "set -e;
       echo 'Waiting for Ollama...';
       until ollama list >/dev/null 2>&1; do sleep 2; done;
       echo 'Pulling models...';
       ollama pull llama3;
       ollama pull gemma3;
      # modele IA  qui sera téléchargé , modele IA que l'on trouve ici => https://ollama.com/search ; donc 2 modele en ligne avec OLLAMA_NUM_PARALLEL=2
       echo 'models pulled'"
    restart: "no"

  webui:
    image: ghcr.io/open-webui/open-webui:latest
    container_name: open-webui
    ports:
      - 3000:8080
    depends_on:
      - ollama
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_AUTH=true
      - WEBUI_ALLOW_SIGNUP=true
      - WEBUI_SECRET_KEY=dOxZYTTZgXKMHkqLBIQVImayQXAVWdzGBPuFJKggzcgvgPJPXpWzqzKaUOIOGGIr
    volumes:
      - /volume1/docker/ollama/open-webui:/app/backend/data
    restart: unless-stopped
Message automatiquement fusionné :

gemma3 est plus rapide que Llama3

Capture d’écran 2025-12-22 à 12.04.19.png

Pour une recherche il faut compter 2 minutes, mais je pense qu'on ne pourra pas vraiment aller plus vite.

Capture d’écran 2025-12-22 à 12.03.27.png
 
Dernière édition:
Bon je suis reparti de zéro et ça fonctionne avec ce YAML

YAML:
services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    ports:
      - 11434
    volumes:
      - /volume1/docker/ollama/ollama:/root/.ollama
    environment:
      - OLLAMA_NUM_PARALLEL=2
      - OLLAMA_MAX_LOADED_MODELS=4

  ollama-pull:
    image: ollama/ollama:latest
    container_name: ollama-pull
    depends_on:
      - ollama
    volumes:
      - /volume1/docker/ollama/ollama:/root/.ollama
    entrypoint: ["/bin/sh","-lc"]
    command: >
      "set -e;
       echo 'Waiting for Ollama...';
       until ollama list >/dev/null 2>&1; do sleep 2; done;
       echo 'Pulling models...';
       ollama pull llama3;
       ollama pull gemma3;
      # modele IA  qui sera téléchargé , modele IA que l'on trouve ici => https://ollama.com/search ; donc 2 modele en ligne avec OLLAMA_NUM_PARALLEL=2
       echo 'models pulled'"
    restart: "no"

  webui:
    image: ghcr.io/open-webui/open-webui:latest
    container_name: open-webui
    ports:
      - 3000:8080
    depends_on:
      - ollama
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_AUTH=true
      - WEBUI_ALLOW_SIGNUP=true
      - WEBUI_SECRET_KEY=dOxZYTTZgXKMHkqLBIQVImayQXAVWdzGBPuFJKggzcgvgPJPXpWzqzKaUOIOGGIr
    volumes:
      - /volume1/docker/ollama/open-webui:/app/backend/data
    restart: unless-stopped
Message automatiquement fusionné :

gemma3 est plus rapide que Llama3

Voir la pièce jointe 19392

Pour une recherche il faut compter 2 minutes, mais je pense qu'on ne pourra pas vraiment aller plus vite.

Voir la pièce jointe 19391
Merci Frank
J'ai bien essayé d'optimiser comme le suggérait https://blog.machinezoo.com/Running_Ollama_on_AMD_iGPU
mais je suis parti sur le raccourci que notre NAS ayant un CPU Intel , ce n'était pas un ARM donc par défaut je me suis dit c'est un AMD mais apparement non ; enfin si c'est un X86_64 AMD64 mais la GPU n'est pas AMD...

pourtant via ssh , lspcu retourne
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 39 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 6
On-line CPU(s) list: 0-5
Vendor ID: GenuineIntel
Model name: Intel(R) Pentium(R) Gold 8505

et X86_64 c'est du AMD64 si j'ai bien suivi .https://www.geekboots.com/story/arm-vs-x86-vs-amd64.il me semble avoir aussi vu des explications sur le site cachem mais je ne les retrouve pas...

Bref...en tout cas, c'est meme tres lent, pour avoir un retour digne de ce nom.
difficile de demander à un GTi d'etre un V12 Ferrari

Bon j'ai mal au crâne, Jen peux plus Docker, Github etc....
J'arrête pour aujourd'hui, je n'arrive plus a me concentrer.
 
Dernière édition:
J'ai mis à jour , ça fonctionne bien. c'est une base plus qu'a faire évoluer si possible =====> ou pas :ROFLMAO:

YAML:
services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    ports:
      - 11434
    volumes:
      - /volume1/docker/ollama/ollama:/root/.ollama
    environment:
      - OLLAMA_NUM_PARALLEL=2
      - OLLAMA_MAX_LOADED_MODELS=4
    restart: unless-stopped

  ollama-pull:
    image: ollama/ollama:latest
    container_name: ollama-pull
    volumes:
      - /volume1/docker/ollama/ollama-pull:/root/.ollama
    entrypoint: ["/bin/sh","-lc"]
    command: >
      "set -e;
       echo 'Waiting for Ollama...';
       until ollama list >/dev/null 2>&1; do sleep 2; done;
       echo 'Pulling models...';
      ollama pull llama3:latest
      ollama pull gemma3:latest
      ollama pull qwen3:latest
      # modele IA  qui sera téléchargé , modele IA que l'on trouve ici => https://ollama.com/search
       echo 'models pulled'"
    restart: unless-stopped

  webui:
    image: ghcr.io/open-webui/open-webui:latest
    container_name: open-webui
    ports:
      - 3000:8080
    depends_on:
      - ollama
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_AUTH=true
      - WEBUI_ALLOW_SIGNUP=true
      - WEBUI_SECRET_KEY=dOxZYTTZgXKMHkqLBIQVImayQXAVWdzGBPuFJKggzcgvgPJPXpWzqzKaUOIOGGIr
    volumes:
      - /volume1/docker/ollama/open-webui:/app/backend/data
    restart: unless-stopped
 
Hello,

Je vous file mon compose quand j'ai essayé cela au début de cette année.

Plusieurs choses à savoir :

Sur un NAS même avec IGPU la quasi du travail est fait par le processeur, donc suivant la puissance de celui-ci, il faut choisir un modèle adéquat sinon lenteur et chauffe excessive du processeur.
Préférer des requêtes courtes, et pas trop de relance, sinon cela augmente le temps de traitement.

YAML:
services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    environment:
      - TZ=Europe/Paris
      - OLLAMA_HOST=0.0.0.0:11434

      # Optimisations CPU suivant nombres de threads
      - OLLAMA_NUM_THREADS=7        # + grand == chauffe cpu
      - OLLAMA_NUM_PARALLEL=1
      - OLLAMA_CONTEXT_LENGTH=2048
      - OLLAMA_KEEP_ALIVE=5m #moteur garder en marche
    volumes:
      - /volume1/docker/ollama:/root/.ollama
    healthcheck:
      test: ["CMD-SHELL", "ollama list >/dev/null 2>&1 || exit 1"]
      interval: 10s
      timeout: 5s
      retries: 10
      start_period: 20s
    devices:
      - /dev/dri:/dev/dri
    group_add:
      - "44"   # video = getent group video
      - "105"  # render = getent group render
    networks:
      - ollama_net
    # pas de ports => non exposé LAN (WebUI y accède via Docker)

  # Téléchargement modèles (one-shot) pour un Nas.
  ollama-pull-llama:
    image: ollama/ollama:latest
    container_name: ollama-pull-llama
    depends_on:
      - ollama
    restart: "no"
    environment:
      - OLLAMA_HOST=http://ollama:11434
    volumes:
      - /volume1/docker/ollama:/root/.ollama
    networks:
      - ollama_net
    entrypoint: ["ollama"]
    command: ["pull", "llama3.2:1b"]

  ollama-pull-qwen:
    image: ollama/ollama:latest
    container_name: ollama-pull-qwen
    depends_on:
      - ollama
    restart: "no"
    environment:
      - OLLAMA_HOST=http://ollama:11434
    volumes:
      - /volume1/docker/ollama:/root/.ollama
    networks:
      - ollama_net
    entrypoint: ["ollama"]
    command: ["pull", "qwen2.5:1.5b"]

  open-webui:
    image: ghcr.io/open-webui/open-webui:latest
    container_name: open-webui
    restart: unless-stopped
    depends_on:
      - ollama
    environment:
      - TZ=Europe/Paris
      - OLLAMA_BASE_URL=http://ollama:11434
    volumes:
      - /volume1/docker/open-webui:/app/backend/data
    ports:
      - "3005:8080"   # local/LAN : http://IP_DU_NAS:3005
    networks:
      - ollama_net

networks:
  ollama_net:
    driver: bridge


Je précharge 2 modèles ( llama3.2:1b et qwen2.5:1.5b) qui m’ont semblé les plus adéquats avec mon NAS, reponse+rapidité.

- OLLAMA_NUM_THREADS=7 À ajuster suivant le processeur.

À placer derrière NPM :

-Forward Host/IP: IP du NAS
-Forward Port: 3005
-Websockets: ON
-SSL: ton cert

Pour trouver ton modèle le plus optimum en SSH:

docker exec -it ollama ollama pull llama3.2:1b en gras ==> mettre le nom du moteur.

lancer la commande :

time sh -c 'echo "Ecris ~600 mots sur la tour Eiffel, avec 5 sections." | docker exec -i ollama ollama run llama3.2:1b'

cela donne le temps pour effectuer la tâche:
real 0m15.053s
user 0m0.018s
sys 0m0.021s

on peut donc comparer les modèles et le paramétrage du nombre de threads Cpu.

Perso j'ai laissé tomber, car assez limité si on n’a pas un CPU AMD ou une Nvidia pour accélérer le tout.

;)
 
J'ai fais un mix avec les différents YML.
Pour les modèles dans open Webui, il y a des différence de rapidité, je parle sur un DXP4800+
Mes préférences sont dans le YML si dessous: (mon choix premier est gemma3 qui est rapide)

YAML:
services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    environment:
      - TZ=Europe/Paris
      - OLLAMA_HOST=0.0.0.0:11434

      # Optimisations CPU suivant nombres de threads
      - OLLAMA_NUM_THREADS=6        # + grand == chauffe cpu
      - OLLAMA_NUM_PARALLEL=1
      - OLLAMA_CONTEXT_LENGTH=2048
      - OLLAMA_KEEP_ALIVE=5m #moteur garder en marche

    ports:
      - 11434
    volumes:
      - /volume1/docker/ollama/ollama:/root/.ollama

  ollama-pull:
    image: ollama/ollama:latest
    container_name: ollama-pull
    volumes:
      - /volume1/docker/ollama/ollama-pull:/root/.ollama
    entrypoint: ["/bin/sh","-lc"]
    command: >
      "set -e;
       echo 'Waiting for Ollama...';
       until ollama list >/dev/null 2>&1; do sleep 2; done;
       echo 'Pulling models...';
      ollama pull llama3:latest
      ollama pull gemma3:latest
      ollama pull qwen3:latest
      # modele IA  qui sera téléchargé , modele IA que l'on trouve ici => https://ollama.com/search
       echo 'models pulled'"
    restart: unless-stopped

  webui:
    image: ghcr.io/open-webui/open-webui:latest
    container_name: open-webui
    ports:
      - 3000:8080
    depends_on:
      - ollama
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_AUTH=true
      - WEBUI_ALLOW_SIGNUP=true
      - WEBUI_SECRET_KEY=dOxZYTTZgXKMHkqLBIQVImayQXAVWdzGBPuFJKggzcgvgPJPXpWzqzKaUOIOGGIr
    volumes:
      - /volume1/docker/ollama/open-webui:/app/backend/data
    restart: unless-stopped
 
Hello,

Je vous file mon compose quand j'ai essayé cela au début de cette année.

Plusieurs choses à savoir :

Sur un NAS même avec IGPU la quasi du travail est fait par le processeur, donc suivant la puissance de celui-ci, il faut choisir un modèle adéquat sinon lenteur et chauffe excessive du processeur.
Préférer des requêtes courtes, et pas trop de relance, sinon cela augmente le temps de traitement.

YAML:
services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    environment:
      - TZ=Europe/Paris
      - OLLAMA_HOST=0.0.0.0:11434

      # Optimisations CPU suivant nombres de threads
      - OLLAMA_NUM_THREADS=7        # + grand == chauffe cpu
      - OLLAMA_NUM_PARALLEL=1
      - OLLAMA_CONTEXT_LENGTH=2048
      - OLLAMA_KEEP_ALIVE=5m #moteur garder en marche
    volumes:
      - /volume1/docker/ollama:/root/.ollama
    healthcheck:
      test: ["CMD-SHELL", "ollama list >/dev/null 2>&1 || exit 1"]
      interval: 10s
      timeout: 5s
      retries: 10
      start_period: 20s
    devices:
      - /dev/dri:/dev/dri
    group_add:
      - "44"   # video = getent group video
      - "105"  # render = getent group render
    networks:
      - ollama_net
    # pas de ports => non exposé LAN (WebUI y accède via Docker)

  # Téléchargement modèles (one-shot) pour un Nas.
  ollama-pull-llama:
    image: ollama/ollama:latest
    container_name: ollama-pull-llama
    depends_on:
      - ollama
    restart: "no"
    environment:
      - OLLAMA_HOST=http://ollama:11434
    volumes:
      - /volume1/docker/ollama:/root/.ollama
    networks:
      - ollama_net
    entrypoint: ["ollama"]
    command: ["pull", "llama3.2:1b"]

  ollama-pull-qwen:
    image: ollama/ollama:latest
    container_name: ollama-pull-qwen
    depends_on:
      - ollama
    restart: "no"
    environment:
      - OLLAMA_HOST=http://ollama:11434
    volumes:
      - /volume1/docker/ollama:/root/.ollama
    networks:
      - ollama_net
    entrypoint: ["ollama"]
    command: ["pull", "qwen2.5:1.5b"]

  open-webui:
    image: ghcr.io/open-webui/open-webui:latest
    container_name: open-webui
    restart: unless-stopped
    depends_on:
      - ollama
    environment:
      - TZ=Europe/Paris
      - OLLAMA_BASE_URL=http://ollama:11434
    volumes:
      - /volume1/docker/open-webui:/app/backend/data
    ports:
      - "3005:8080"   # local/LAN : http://IP_DU_NAS:3005
    networks:
      - ollama_net

networks:
  ollama_net:
    driver: bridge


Je précharge 2 modèles ( llama3.2:1b et qwen2.5:1.5b) qui m’ont semblé les plus adéquats avec mon NAS, reponse+rapidité.

- OLLAMA_NUM_THREADS=7 À ajuster suivant le processeur.

À placer derrière NPM :

-Forward Host/IP: IP du NAS
-Forward Port: 3005
-Websockets: ON
-SSL: ton cert

Pour trouver ton modèle le plus optimum en SSH:

docker exec -it ollama ollama pull llama3.2:1b en gras ==> mettre le nom du moteur.

lancer la commande :

time sh -c 'echo "Ecris ~600 mots sur la tour Eiffel, avec 5 sections." | docker exec -i ollama ollama run llama3.2:1b'

cela donne le temps pour effectuer la tâche:
real 0m15.053s
user 0m0.018s
sys 0m0.021s

on peut donc comparer les modèles et le paramétrage du nombre de threads Cpu.

Perso j'ai laissé tomber, car assez limité si on n’a pas un CPU AMD ou une Nvidia pour accélérer le tout.

;)

meme constat , ou plutôt meme résultatil fault avoir une bete de course niveau PC que ce soit MAC ou PC
 
En espérant qu'on ne va pas faire une generation de décérébrés qui s'en remettent à l'IA pour tout, je pense particulièrement aux étudiants, mais aussi à Mr tout le monde, qui prennent les infos pour argent comptant.
Les influenceurs , je les colle hors catégories :rolleyes: 😄.
Personnellement, j'ai testé Claude AI et le matou flatulent, sur un peu de code, des scripts , plutot simple.
Claude est plutot tres bon pour les codes...enfin ce que j'ai pu en voir.
La meilleure utilisation que je leur trouve pour mon usage perso est de me détailler les pas à pas des codes , des Cli Linux etc....
En fait je vois plutot ca comme un condenseur des données qu'il va trouver sur les différents sites ; Par exemple, des comparatifs de machines qui peuvent etre pourquoi pas des NAS et des imprimantes 3D pour mon intérêt du moment.

J'ai vite compris que ces IA étaient des machines a ne pas te contredire, dire oui à tout, tourner en rond quand c'est pas en carré pour te peter les set up de la bécane 3D....Je parle d'un vécu ou au tout début dans le monde de l'impression 3D.

 
Dernier essai qui fonctionne bien et est assez rapide grâce à ce YAML et aux réglages effectués dans Open WebUI.


(Ce projet a été mis en place sur un DXP4800+ avec Docker sur un SSD M2 et 32 Go de RAM, mais il devrait fonctionner sur d'autres marques et modèles.)
  • Dans le dossier fichier/docker, il faut créer un dossier nommé ollama. À l'intérieur de ce dossier, il faut créer trois sous-dossiers :
    • ollama
    • ollama-pull
    • open-webui
  • Dans Docker, allez dans l'onglet "Projets" et créez un nouveau projet. Collez ensuite le YAML ci-dessous. Si tout se passe bien, votre projet avec ses trois services devrait démarrer.

YAML:
services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    environment:
      - TZ=Europe/Paris
      - OLLAMA_HOST=0.0.0.0:11434
      - OLLAMA_NUM_THREADS=6  # par rapport au CPU du dxp4800+
      - OLLAMA_NUM_PARALLEL=1
      - OLLAMA_CONTEXT_LENGTH=2048
      - OLLAMA_KEEP_ALIVE=8m
    shm_size: '16gb'  # mon dxp a 32Gb
    ports:
      - 11434
    volumes:
      - /volume1/docker/ollama/ollama:/root/.ollama

  ollama-pull:
    image: ollama/ollama:latest
    container_name: ollama-pull
    restart: unless-stopped
    volumes:
      - /volume1/docker/ollama/ollama-pull
    entrypoint: ["/bin/sh", "-c"]
    command: >
      "set -e;
      echo 'Waiting for ollama...';
      until ollama list >/dev/null 2>&1; do sleep 2; done;
      echo 'Pulling models...';
      ollama pull llama3.2:3b # 3b conseillé sinon Llama3:latest qui est en 8b mais plus lent
      ollama pull gemma3:latest # 4b
      ollama pull qwen3:4b #4b (latest (8b) fonctionne mais trop lent)
      echo 'models pulled'"
      #modele IA qui seront téléchargé, pour le dxp4800+ je conseil un maxi de 8b
      #modele IA que l'on trouve ici => [URL]https://ollama.com/search[/URL]

webui:
  image: ghcr.io/open-webui/open-webui:latest
  container_name: open-webui
  ports:
    - 3000:8080
  depends_on:
    - ollama
  environment:
    - OLLAMA_BASE_URL=http://ollama:11434
    - WEBUI_AUTH=true
    - WEBUI_ALLOW_SIGNUP=true
  volumes:
    - /volume1/docker/ollama/open-webui:/app/backend/data
  restart: unless-stopped

Maintenant, soit les vos "modèles" en haut à gauche sont disponible sinon il faudra faire une recherche et les enregistrer
(Mon choix personnel va vers "Gemma" pour la rapidité et la pertinence des réponses)

Capture d’écran 2025-12-24 à 11.48.39.png

- Maintenant aller dans réglage en haut à droite, puis Réglages avancés et changer comme indiqué sur l'image:

Capture d’écran 2025-12-24 à 11.51.14.png


Maintenant si tout va bien, vous devez pouvoir faire des recherches assez rapide.
Par contre le CPU monte à environ à 90% avec une RAM à environ 50% donc 16GB pour moi
 
Dernière édition:
Dernier essai qui fonctionne bien et est assez rapide grâce à ce YAML et aux réglages effectués dans Open WebUI.


(Ce projet a été mis en place sur un DXP4800+ avec Docker sur un SSD M2 et 32 Go de RAM, mais il devrait fonctionner sur d'autres marques et modèles.)
  • Dans le dossier fichier/docker, il faut créer un dossier nommé ollama. À l'intérieur de ce dossier, il faut créer trois sous-dossiers :
    • ollama
    • ollama-pull
    • open-webui
  • Dans Docker, allez dans l'onglet "Projets" et créez un nouveau projet. Collez ensuite le YAML ci-dessous. Si tout se passe bien, votre projet avec ses trois services devrait démarrer.

YAML:
services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    environment:
      - TZ=Europe/Paris
      - OLLAMA_HOST=0.0.0.0:11434
      - OLLAMA_NUM_THREADS=6  # par rapport au CPU du dxp4800+
      - OLLAMA_NUM_PARALLEL=1
      - OLLAMA_CONTEXT_LENGTH=2048
      - OLLAMA_KEEP_ALIVE=8m
    shm_size: '16gb'  # mon dxp a 32Gb
    ports:
      - 11434
    volumes:
      - /volume1/docker/ollama/ollama:/root/.ollama

  ollama-pull:
    image: ollama/ollama:latest
    container_name: ollama-pull
    restart: unless-stopped
    volumes:
      - /volume1/docker/ollama/ollama-pull
    entrypoint: ["/bin/sh", "-c"]
    command: >
      "set -e;
      echo 'Waiting for ollama...';
      until ollama list >/dev/null 2>&1; do sleep 2; done;
      echo 'Pulling models...';
      ollama pull llama3.2:3b # 3b conseillé sinon Llama3:latest qui est en 8b mais plus lent
      ollama pull gemma3:latest # 4b
      ollama pull qwen3:4b #4b (latest (8b) fonctionne mais trop lent)
      echo 'models pulled'"
      #modele IA qui seront téléchargé, pour le dxp4800+ je conseil un maxi de 8b
      #modele IA que l'on trouve ici => [URL]https://ollama.com/search[/URL]

webui:
  image: ghcr.io/open-webui/open-webui:latest
  container_name: open-webui
  ports:
    - 3000:8080
  depends_on:
    - ollama
  environment:
    - OLLAMA_BASE_URL=http://ollama:11434
    - WEBUI_AUTH=true
    - WEBUI_ALLOW_SIGNUP=true
  volumes:
    - /volume1/docker/ollama/open-webui:/app/backend/data
  restart: unless-stopped

Maintenant, soit les vos "modèles" en haut à gauche sont disponible sinon il faudra faire une recherche et les enregistrer
(Mon choix personnel va vers "Gemma" pour la rapidité et la pertinence des réponses)

Voir la pièce jointe 19400

- Maintenant aller dans réglage en haut à droite, puis Réglages avancés et changer comme indiqué sur l'image:

Voir la pièce jointe 19401


Maintenant si tout va bien, vous devez pouvoir faire des recherches assez rapide.
Par contre le CPU monte à environ à 90% avec une RAM à environ 50% donc 16GB pour moi
Merci @Frank-Pomme , @PackTu
Je ressaierai ce week end si c’est plus rapide et utilisable.
Ce qui est dingue avec Docker c’est la petite ligne qui va faire toute la différence.
Je l ai expérimenté avec Tailscale
J avais oublié de faire le network : host et purée ça a fonctionné direct
Je n ai pas vu (et pas trop chercher non plus ) le champ possible dans un docker.

Si c’est rapide ça vaut p’etre le coup.
Ceci était j ai aussi regardé côté GPU par pour nos NAS donc, puisque la GPU est intégrée, et vu le prix des cartes graphiques NVDIA et le besoin des IA, je comprends mieux l envolée des cours de NVDIA .
 
@Frank-Pomme
Merci pour ton Yml.
je viens de comparer les différences avec mon dernier yml et j'y ai ajouté et adapté les lignes.

Concernant les répertoires:
Perso, j'ai gardé ceux créé initialement chez moi , soit ollama et sous répertoires ollama , modelfiles et open-webui.
je ne pige pas pourquoi tu créés les sous répertoires identiques aux noms des services de ton yml.
  • ollama
  • ollama-pull
  • open-webui
Aussi ,toujours pour les répertoires, dans le service ollama-pull de ton yml, tu mets
volumes:
-/volume1/docker/ollama/ollama-pull , mais tu ne l'affectes pas, comme par exemple -/volume1/docker/ollama/ollama-pull:/pullmodel (j'ai mis le nom apres :/ au hasard en exemple.

Dans mon service Ollama :
je garde mon port: "127.0.0.1:11434:11434" et j'y accède via NPM uniquement sur le NAS via docker depuis l'extérieur.
OLLAMA_NUM_THREADS : je passe de 8 à 6
et j'ajoutes :
- OLLAMA_CONTEXT_LENGTH=2048
- OLLAMA_KEEP_ALIVE=8m
shm_size: '32gb' # mon dxp a 64Gb

le reste est identique à mon dernier posté plus haut pour obtenir finalement celui ci :

Code:
services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    ports:
      - "127.0.0.1:11434:11434"
    volumes:
      - /volume2/docker/ollama/ollama:/root/.ollama
      - /volume2/docker/ollama/modelfiles:/modelfiles
    environment:
      - TZ=Europe/Paris
      - OLLAMA_NUM_PARALLEL=1
      - OLLAMA_MAX_LOADED_MODELS=3
      - OLLAMA_NUM_THREADS=6
      - OLLAMA_CONTEXT_LENGTH=2048
      - OLLAMA_KEEP_ALIVE=8m
      - OLLAMA_NUM_GPU=5
    shm_size: '32gb'  # mon dxp a 64Gb
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "sh", "-lc", "ollama list >/dev/null 2>&1"]
      interval: 10s
      timeout: 5s
      retries: 30
 
  ollama-pull:
    image: ollama/ollama:latest
    container_name: ollama-pull
    depends_on:
      ollama :
        condition: service_healthy
    environment:
      - OLLAMA_HOST=http://ollama:11434
    volumes:
      - /volume2/docker/ollama/ollama:/root/.ollama
    entrypoint: ["/bin/sh","-lc"]
    command: >
      "set -e;
       echo 'Waiting for Ollama...';
       until ollama list >/dev/null 2>&1; do sleep 2; done;
       echo 'Pulling models...';
       ollama pull llama3.2:3b;
       ollama pull gemma3:latest # 4b
       ollama pull phi3:mini;
       echo 'models pulled'"
    restart: "no"


  webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    ports:
      - "3001:8080"
    depends_on:
      - ollama
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_AUTH=true
      - WEBUI_ALLOW_SIGNUP=false
      - WEBUI_SECRET_KEY=9099d91745e3b12fa6c949eb7ba7c2ac4d5ece218ec37ca9fec6db08a7910025
    volumes:
      - /volume2/docker/ollama/openwebui:/app/backend/data
    restart: unless-stopped


#volumes:
 # ollama_data:
  #  name: ollama_data

update 10:30

j'applique les réglages que tu mentionnes aussi ci dessus , et effectivement, c'est plus réactif en etant sur Gemma3, sans pour autant etre une fusée.
Dans les réglages avancés, je n'arrive pas garder les 2 derniers autrement que par défaut, alors que tu as mis , num_thread (ollama) à 5 et num_gpu (ollama ) à aussi, c'est pourquoi j'ai ajouté - OLLAMA_NUM_GPU=5 dans le yml
je suis aussi sur un ssd M2 de 32G.
 
Dernière édition: