Habituellement je suis plus que rétif quant à l'utilisation de solutions se basant sur des supposées intelligences artificielles pour tout un tas de raisons, et en particulier pour ce qui a trait à l'éducation. Voir mon billet dans Médiapart pour plus d'info : https://blogs.mediapart.fr/thierrym/blog/090625/pour-un-debat-citoyen-sur-une-utilisation-raisonnee-de-lintelligence-artificielle.

Mais j'ai découvert à travers cet article de ZD.Net https://www.zdnet.fr/pratique/linux-pratique-installer-la-solution-alternative-open-source-et-puissante-a-notebooklm-485056.htm qu'il était possible de s'installer localement une alternative libre à NoteBookLM de Google. Dans ce cas-là, pourquoi ne pas tester cette solution qui s'appuie sur Open Notebook ? Je vais décrire sur cette page comment j'ai configuré cette application sur mon ordinateur, non sans quelques recherches...

Personnellement, je vais utiliser un modèle LLM (modèle de langage) local en me servant d'Ollama : https://ollama.com/. Ce fonctionnement par contre nécessite des ressources sur l'ordinateur local et il vaut mieux avoir une carte graphique qui pourra aléger la tâche du processeur. Il faut également pas mal de place : le LLM Qwen3 par exemple fait plus de 5 Go...
Remarque : il est possible d'intégrer Ollama dans VSCodium (à la place de l'IA de Microsoft Copilot).

Sources :

 
I- Particularité de Ollama et de Docker en tant que services

Ollama et Docker s'installent en tant que service. Cela signifie qu'ils se lancent automatiquement à chaque redémarrage de l'ordinateur. Si on ne veut pas cela, il va falloir les désactiver lorsqu'on ne les utilise plus, ce qui permet d'économiser des ressources. Pour arrêter et désactiver, il faut taper les commandes suivantes :
sudo systemctl stop nom-du-service
sudo systemctl disable nom-du-service
On verra comment automatiser tout cela avec des fichiers de scripts à la fin de cet article.

 

II- Installation de Ollama et des LLM
A- Installation de Ollama

L'installation se fait très simplement : il suffit de taper la commande suivante qui permettra d'installer Ollama en tant que service (systemd) :

curl -fsSL https://ollama.com/install.sh | sh

Lors de l'installation d'Ollama (qui prend du temps selon la connexion Internet dont on dispose), il sera indiqué à la fin s'il y a un GPU utilisable. Ça n'a pas été mon cas...

B- Modification du chemin d'installation des modèles LLM (si besoin)

Il est peut-être nécessaire d'indiquer un dossier de stockage des modèles LLM différent de celui par défaut (sous Linux, c'est "/usr/share/ollama/.ollama/models"). C'est mon cas, car je n'ai plus tellement de place dans mon dossier "usr". Pour cela, je vais me créer un dossier "ollama_models" sur la partition "/mnt/HD_divers" et lui donner des droits d'accès et permissions avec les commandes :
sudo chown -R ollama:ollama /mnt/HD_divers/ollama_models/
sudo chmod -R 755 /mnt/HD_divers/ollama_models/

Ensuite il faut alors éditer le fichier de configuration avec la commande :
sudo nano /etc/systemd/system/ollama.service

Dans ce fichier on va rajouter dans la partie [Service] ces 2 lignes qui dans mon cas renvoie vers un disque dur monté à l'emplacement /mnt/HD_divers et l'accès à Ollama pour toutes les adresses :
Environment="OLLAMA_MODELS=/mnt/HD_divers/ollama/models"
Environment="OLLAMA_HOST=0.0.0.0:11434"

C- Installation des modèles de langues LLM et utilisation de Ollama

Après avoir sauvegardé, il faut relancer les services avec ces 2 commandes :
sudo systemctl daemon-reload
sudo systemctl restart ollama.service

On peut maintenant installer les LLM qui nous intéressent avec les commandes suivantes pour par exemple ces 2 modèles (compter 10 Go d'espace occupé) :
ollama pull qwen3
ollama pull llama3

Pour connaître la liste des modèles LLM installés, taper la commande :
ollama list

Pour lancer un modèle :
ollama run qwen3

Pour supprimer un modèle LLM, taper :
ollama rm qwen3

Pour connaître l'état d'Ollama :
systemctl status ollama.service

 


III- Installation de Docker

Tout d'abord, il faut un ordinateur sous GNU/Linux (raison supplémentaire pour se détacher de Windows 😉) et y installer Docker. Étant sous Linux Mint 22.2 (Zara), le plus simple est d'installer directement docker via les dépôts avec les commandes :

sudo apt update
sudo apt install docker.io docker-compose
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER

Info : sous Linux Mint 22.2, docker-compose est en version 2.40.3 (contrairement à Primtux 8 basée sur Linux Mint 21.3 et ça a une incidence).

IV- Lancement de Open Notebook avec Docker

J'ai créé un dossier "open_notebook" sur ma partition avec beaucoup d'espace pour recueillir l'image Docker de Open Notebook avec les commandes :
mkdir /mnt/HD_divers/open-notebook

On se place sur ce nouveau dossier avec :
cd /mnt/HD_divers/open-notebook

On crée et on édite un fichier "docker-compose.yml" avec :
nano docker-compose.yml

Et on y ajoute les lignes suivantes :

services:
    open_notebook:
        image: lfnovo/open_notebook:v1-latest-single
        ports:
             - "8502:8502" # Web UI
             - "5055:5055" # API
        environment:
            - OLLAMA_API_BASE=http://host.docker.internal:11434
            - API_CLIENT_TIMEOUT=1200 # 20 minutes avec un CPU
            - ESPERANTO_LLM_TIMEOUT=180 # 3 minutes

            # Database connection (required)
            - SURREAL_URL=ws://localhost:8000/rpc
            - SURREAL_USER=root
            - SURREAL_PASSWORD=root
            - SURREAL_NAMESPACE=open_notebook
            - SURREAL_DATABASE=production
        volumes:
            - ./notebook_data:/app/data
            - ./surreal_data:/mydata
        extra_hosts:
            - "host.docker.internal:host-gateway"

        restart: always

Ensuite on lance le programme, toujours à partir du dossier "/mnt/HD_divers/open-notebook" avec la commande :
docker compose up -d
Cela prend un peu de temps (selon sa connexion Internet) car il faut récupérer l'image docker avant que le contener ne se lance.
Si tout s'est bien passé, il suffit d'ouvrir cette page avec son navigateur Internet : http://localhost:8502/ et on arrive sur la page d'Open-Notebook.

 
Commandes utiles pour Docker (au cas où on en aurait besoin)
  • Pour arrêter le service :
    docker compose down
  • Pour avoir des info sur les conteneurs actifs :
    docker ps
  • Pour avoir des info sur tous les conteneurs (même ceux arrêtés) :
    docker ps -a
  • Pour entrer dans le conteneur Open Notebook dans un terminal :
    docker exec -it open-notebook-open_notebook-1 /bin/bash
  • Pour y installer les outils pour analyser le réseau du conteneur :
    apt update && apt install -y iproute2 net-tools curl
  • Pour connaître les adresses IP du conteneur :
    ip route

 

V- Utilisation de Open Notebook

Dans Open Notebook, la première chose à faire est de configurer un modèle. Pour tester, j'ai pris le modèle Ollama "qwen3".
Il faut aller dans la partie "Manage" → "Models" ①, puis on ajoute un modèle avec le bouton "+ Add Model" ② et on choisit comme "Provider" : "ollama" et comme modèle "qwen3" qui s'affiche ici ③. Ensuite, on indique ce modèle pour différents types de modèles ④.
Remarque : On peut laisser vide le "Embedding Model".

 

Un fois sur la page d'Open Notebook, il faut se créer un carnet de notes avec le bouton "New Notebook" ou "Create".

Ensuite, on ajoute les documents à analyser comme des liens Internet, des documents pdf, etc. et on dialogue dans le Tchat pour demander à l'IA de répondre à nos demandes.

Remarque : avec mon ordinateur, ça prend un peu de temps mais ça fonctionne.

 

VI- Lancement et arrêt automatique des services Ollama, Socat et Open Notebook avec des scripts

Quand on a constaté que tout fonctionne correctement, on peut maintenant créer 2 fichiers de scripts qui permettront de lancer ou désactiver les 3 services en jeu : Ollama, Socat et le conteneur Docker d'Open Notebook. Cela est utile pour ne pas consommer des ressources inutil
Pour pouvoir les retrouver facilement, je les ai rangés dans le dossier contenant l'image docker "/mnt/HD_divers/open-notebook" : de cette façon, tout ce dont j'ai besoin se trouvera au même endroit.

Voici le fichier "enable_services_open-notebook.sh" qui permettra de lancer les 3 services :
#!/bin/bash

echo "Activation et démarrage des services Open-Notebook, Ollama et tunnel socat"

# Chemin vers le répertoire contenant docker-compose.yml
DOCKER_DIR="/mnt/HD_divers/open-notebook"

# Aller dans le bon répertoire
cd "$DOCKER_DIR" || { echo "Répertoire $DOCKER_DIR introuvable"; exit 1; }

# Activation et démarrage d'Ollama
echo "Activation et démarrage du service Ollama..."
sudo systemctl enable ollama
sudo systemctl start ollama

# Démarrage des conteneurs Docker Open-Notebook
echo "Démarrage des conteneurs Docker Open-Notebook..."
docker compose up -d

echo "Tous les services ont été activés et démarrés"

# Attendre une touche
read -p "Appuyez sur une touche pour quitter..."


De la même façon, voici le fichier "disable_services_open-notebook.sh" qui permettra de stopper et désactiver (pas de lancement automatique au redémarrage de l'ordi) les 3 services :
#!/bin/bash

echo "Arrêt et désactivation des services Open-Notebook, Ollama et tunnel socat"

# Chemin vers le répertoire contenant docker-compose.yml
DOCKER_DIR="/mnt/HD_divers/open-notebook"

# Aller dans le bon répertoire
cd "$DOCKER_DIR" || { echo "Répertoire $DOCKER_DIR introuvable"; exit 1; }

# Arrêt et désactivation d'Ollama
echo "Arrêt et désactivation du service Ollama..."
sudo systemctl stop ollama
sudo systemctl disable ollama

# Arrêt des conteneurs Docker Open-Notebook
echo "Arrêt des conteneurs Docker Open-Notebook..."
docker compose down

echo "Tous les services ont été arrêtés et désactivés"

# Attendre une touche
read -p "Appuyez sur une touche pour quitter..."

 

Comme d'habitude, il faudra autoriser l'exécution comme un programme (permission) pour ces 2 fichiers afin que les scripts puissent se lancer. On peut le faire avec cette commande qui va les rendre exécutables :
chmod +x enable_services_open-notebook.sh disable_services_open-notebook.sh

 

VII- Et sous Primtux 8

Afin de tester cette installation, j'ai tenté de le faire sous Primtux 8 qui est basé sur Linux Mint 21.3 lui-même basé sur Ubuntu 22.04. Ça n'a pas fonctionné à cause d'une version trop ancienne de Docker dans les dépôts. Une des preuves est que la commande "docker compose up -d" ne fonctionne pas contrairement à l'ancienne avec un tiret "docker-compose up -d" qui est en version 1.29.2.

Du coup, il est nécessaire d'installer Docker à partir du site officiel pour disposer d'une version plus récente dans Primtux 8. Source : https://docs.docker.com/engine/install/ubuntu.

Tout d'abord il faut désinstaller l'ancienne version de docker avec la commande :
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1)

Ensuite, il faut installer le dépôt avec ce commandes :
# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update

Puis on installe la dernière version de Docker avec :
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Et on lance docker avec :
sudo systemctl daemon-reload
sudo systemctl start docker.service

Pour connaître la version de docker compose installée maintenant, taper :
docker compose version
La version est maintenant la 2.40.3.

 

VIII- Partie inutile mais laissée comme aide-mémoire car elle fonctionne
Installation de Socat en tant que service

Afin que Open Notebook puisse communiquer avec Ollama, il faut installer le paquet socat pour rediriger le port 11435 du conteneur Docker de Open Notebook vers le port 11434 de Ollama avec la commande :
sudo apt install socat
Puis il faut lancer cette commande :
sudo socat TCP-LISTEN:11435,fork TCP:127.0.0.1:11434

Le problème de cette commande, c'est qu'il faudrait la lancer à chaque fois. Aussi, on peut plutôt en faire un service qui démarrera après le lancement du réseau et de Ollama. Pour cela, on va créer et éditer un fichier avec la commande :
sudo nano /etc/systemd/system/ollama-tunnel.service
Et on colle le code suivant :

[Unit]
Description=Socat tunnel for Ollama Docker access
After=network.target ollama.service
Requires=ollama.service

[Service]
Type=simple
User=root
ExecStart=/usr/bin/socat TCP-LISTEN:11435,fork TCP:127.0.0.1:11434
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Ensuite il faut lancer ce nouveau service avec les commandes :
sudo systemctl daemon-reload
sudo systemctl enable ollama-tunnel
sudo systemctl start ollama-tunnel