EUR
european

EUR

usa

USD

Ex. VAT Ex. VAT 0%

Installation du kit de démarrage n8n AI avec Ollama

Le Self-hosted AI Starter Kit est un modèle Docker Compose de l'équipe n8n pour créer des flux de travail d'IA qui s'exécutent entièrement sur votre propre serveur. Les invites (prompts) et les documents sont traités par un modèle de langage local et ne sont pas envoyés à des services d'IA externes.

Le kit comprend quatre composants :

  • n8n, la plateforme d'automatisation des flux de travail avec des nœuds IA ;
  • Ollama, qui exécute localement des modèles de langage open source ;
  • Qdrant, une base de données vectorielle pour stocker et rechercher les embeddings de documents ;
  • PostgreSQL, la base de données pour n8n.

Le kit officiel est marqué par ses auteurs comme étant destiné aux tests. Au moment de la rédaction de cet article, lorsqu'il est exécuté comme décrit dans son README, il présente plusieurs problèmes sur un serveur avec une adresse IP publique : n8n, Ollama et Qdrant sont ouverts sur Internet, Ollama et Qdrant n'ont pas d'authentification, les secrets dans la configuration sont les mêmes pour chaque installation, et le flux de travail de démonstration n'est pas importé. Ce guide installe le kit tel quel et corrige tout cela avec un fichier de substitution (override) séparé, afin que vous puissiez toujours mettre à jour le kit depuis son dépôt.

Ce guide est rédigé pour Ubuntu 24.04 LTS, n8n 2.47.3, Ollama 0.40.16, Qdrant 1.20.0, Docker 29 et Docker Compose v5.

Avant de commencer

Vous aurez besoin de :

  • un serveur exécutant Ubuntu 24.04 LTS avec un accès root via SSH ;
  • au moins 15 Go d'espace disque libre : les images Docker prennent environ 11 Go et le modèle Llama 3.2 par défaut environ 2 Go ;
  • un domaine ou un sous-domaine pour n8n, par exemple n8n.example.com, avec un enregistrement A pointant vers l'adresse IPv4 du serveur.

Info

Sans GPU, le modèle s'exécute sur le processeur (CPU) et répond lentement. Pour une utilisation régulière, choisissez un serveur avec un GPU NVIDIA.

Toutes les commandes ci-dessous sont exécutées en tant que root. Si vous travaillez en tant qu'utilisateur normal avec des droits sudo, ajoutez sudo avant chaque commande.

Installer Docker

Installez Docker Engine et le plugin Compose depuis le dépôt officiel Docker :

apt update && apt install -y ca-certificates curl git install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc chmod a+r /etc/apt/keyrings/docker.asc

Ajoutez le dépôt :

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" > /etc/apt/sources.list.d/docker.list

Installez les packages et vérifiez les versions :

apt update apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker --version docker compose version

Télécharger le kit

Clonez le dépôt dans /opt et créez le fichier de configuration à partir de l'exemple :

cd /opt git clone https://github.com/n8n-io/self-hosted-ai-starter-kit.git cd self-hosted-ai-starter-kit cp .env.example .env

Remplacer les secrets par défaut

Le fichier d'exemple contient des valeurs fixes, telles que password pour PostgreSQL et super-secret-key pour la clé de chiffrement n8n. Elles sont identiques dans chaque copie du kit, remplacez-les donc par des valeurs aléatoires :

sed -i "s/^POSTGRES_PASSWORD=.*/POSTGRES_PASSWORD=$(openssl rand -hex 24)/" .env sed -i "s/^N8N_ENCRYPTION_KEY=.*/N8N_ENCRYPTION_KEY=$(openssl rand -hex 32)/" .env sed -i "s/^N8N_USER_MANAGEMENT_JWT_SECRET=.*/N8N_USER_MANAGEMENT_JWT_SECRET=$(openssl rand -hex 32)/" .env chmod 600 .env

N8N_ENCRYPTION_KEY chiffre les identifiants que vous enregistrez dans n8n. N8N_USER_MANAGEMENT_JWT_SECRET signe les sessions utilisateur.

Warning

Copiez le fichier .env dans un endroit sûr en dehors du serveur, par exemple un gestionnaire de mots de passe. Sans N8N_ENCRYPTION_KEY, les identifiants enregistrés dans n8n ne peuvent pas être déchiffrés après une restauration.

Fermer les ports et ajouter HTTPS

Dans le fichier docker-compose.yml du kit, n8n (port 5678), Ollama (11434) et Qdrant (6333) sont publiés sur toutes les interfaces réseau. Docker ajoute ses propres règles de pare-feu pour les ports publiés, et elles contournent UFW. Sur un serveur avec une adresse IP publique, cela signifie que n'importe qui peut ouvrir l'éditeur n8n via HTTP simple et utiliser les API Ollama et Qdrant, qui n'ont pas d'authentification.

Au lieu de modifier docker-compose.yml, créez docker-compose.override.yml à côté de celui-ci. Docker Compose lit ce fichier automatiquement et l'applique par-dessus le fichier principal. Les propres fichiers du kit restent inchangés, donc leur mise à jour depuis le dépôt n'écrasera pas vos paramètres.

Créez /opt/self-hosted-ai-starter-kit/docker-compose.override.yml et remplacez n8n.example.com par votre domaine :

services: n8n: ports: !override - "127.0.0.1:5678:5678" environment: - N8N_HOST=n8n.example.com - N8N_PROTOCOL=https - N8N_PROXY_HOPS=1 - N8N_WEBHOOK_URL=https://n8n.example.com/ ollama-cpu: ports: !reset [] ollama-gpu: ports: !reset [] qdrant: ports: !reset [] caddy: image: caddy:2 restart: unless-stopped networks: ['demo'] ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - caddy_data:/data - caddy_config:/config volumes: caddy_data: caddy_config:

Voici ce que ce fichier modifie :

  • n8n n'écoute que sur 127.0.0.1, et les utilisateurs y accèdent via Caddy en HTTPS ;
  • Ollama et Qdrant ne sont pas publiés du tout, n8n y accède via le réseau Docker interne par les noms ollama et qdrant ;
  • Caddy est ajouté en tant que proxy inverse (reverse proxy) qui obtient et renouvelle un certificat Let's Encrypt, tant que le domaine pointe vers le serveur et que les ports 80 et 443 sont ouverts ;
  • les volumes de données pour n8n, PostgreSQL, Qdrant et Ollama restent tels que définis dans le fichier docker-compose.yml du kit, la substitution ne les modifie pas.

Info

La ligne networks: ['demo'] est requise. Tous les services du kit s'exécutent dans le réseau appelé demo, et sans cette ligne, Caddy ne peut pas atteindre n8n et renvoie une erreur 502.

N8N_WEBHOOK_URL définit l'adresse que n8n utilise pour les webhooks, y compris la fenêtre de chat dans l'éditeur. Le domaine doit se résoudre vers votre serveur depuis l'ordinateur sur lequel vous ouvrez n8n. Si ce n'est pas le cas, le chat affiche uniquement le message "Failed to receive response", sans indiquer le DNS comme cause.

Créez /opt/self-hosted-ai-starter-kit/Caddyfile avec votre domaine :

n8n.example.com { reverse_proxy n8n:5678 }

Vérifiez la configuration fusionnée :

docker compose --profile cpu config | grep -A4 "ports:"

Seuls n8n sur 127.0.0.1:5678 et Caddy sur les ports 80 et 443 doivent être répertoriés.

Configurer le pare-feu

Le fichier override maintient déjà les services internes du kit à l'écart du réseau. UFW bloque tout autre trafic entrant vers le serveur, sauf SSH, HTTP et HTTPS. Autorisez-les et activez UFW :

ufw allow OpenSSH ufw allow 80/tcp ufw allow 443/tcp ufw --force enable

Démarrer le kit

Démarrez la pile en mode CPU :

docker compose --profile cpu up -d

Lors du premier démarrage, Docker télécharge environ 11 Go d'images, et un conteneur séparé télécharge le modèle Llama 3.2. Cela prend un certain temps, selon la vitesse de la connexion. Vérifiez que le modèle est en place :

docker exec ollama ollama list

La liste doit inclure llama3.2:latest.

Vérifiez que seuls les ports attendus sont ouverts sur le serveur :

ss -tlnp

Les ports 80 et 443 doivent être ouverts sur toutes les interfaces, le port 5678 uniquement sur 127.0.0.1. Les ports 11434 et 6333 ne doivent pas figurer dans la liste.

Info

Le kit utilise PostgreSQL 16. Le journal n8n peut afficher un avertissement indiquant que cette version est en dehors de la plage prise en charge. Cet avertissement n'affecte pas le fonctionnement de n8n.

Importer le flux de travail de démonstration

Le kit inclut un flux de travail de démonstration et deux identifiants de démonstration. Ils sont censés être importés au premier démarrage, mais au moment de la rédaction de cet article, la vérification d'importation dans le fichier docker-compose.yml du kit ne réussit jamais, donc rien n'est importé. Exécutez l'importation manuellement :

docker compose --profile cpu run --rm n8n-import -c "n8n import:credentials --separate --input=/demo-data/credentials" docker compose --profile cpu run --rm n8n-import -c "n8n import:workflow --separate --input=/demo-data/workflows"

L'option -c est requise : le service n8n-import démarre un shell, et sans -c, la commande échoue avec l'erreur "can't open 'n8n'".

Créer le compte propriétaire

Ouvrez https://n8n.example.com dans votre navigateur et créez le compte propriétaire : entrez votre e-mail, votre prénom et votre nom, ainsi qu'un mot de passe d'au moins 8 caractères avec au moins un chiffre et une lettre majuscule. Après la première connexion, n8n peut afficher un court sondage et une offre de clé de licence gratuite pour certaines fonctionnalités de l'édition Community. Les deux sont facultatifs.

La page de vue d'ensemble répertorie le Demo workflow importé.

Corriger les identifiants de démonstration

Les identifiants de démonstration ont été chiffrés avec la clé par défaut de .env.example. Après avoir remplacé N8N_ENCRYPTION_KEY, n8n ne peut pas les déchiffrer, ils doivent donc être remplis à nouveau. Les paramètres sont enregistrés chiffrés avec votre propre clé.

Ouvrez Overview, allez dans l'onglet Credentials et ouvrez Local Ollama service. La connexion échoue, et le champ Base URL affiche http://localhost:11434. À l'intérieur du conteneur n8n, localhost est n8n lui-même, pas Ollama.

Définissez Base URL sur http://ollama:11434, laissez API Key vide et cliquez sur Save. n8n teste la connexion et affiche Connection tested successfully.

Ouvrez Local QdrantApi database. Définissez Qdrant URL sur http://qdrant:6333, laissez API Key vide et cliquez sur Save.

Tester le flux de travail de démonstration

Ouvrez Demo workflow. Il contient trois nœuds : Chat Trigger reçoit un message, Basic LLM Chain le transmet au modèle, et Ollama Chat Model l'envoie à Llama 3.2 dans Ollama.

Cliquez sur Open chat en bas du canevas et envoyez une courte question. Les nœuds deviennent verts au fur et à mesure que le flux de travail s'exécute, et la réponse du modèle apparaît dans le chat. La première réponse prend plus de temps, car Ollama charge le modèle en mémoire.

Si le chat affiche "Failed to receive response" et que le flux de travail ne démarre pas, vérifiez que le domaine dans N8N_WEBHOOK_URL se résout vers votre serveur depuis votre ordinateur.

Utiliser un GPU NVIDIA

Si le serveur dispose d'un GPU NVIDIA, le kit peut exécuter Ollama dessus. Docker a besoin du NVIDIA Container Toolkit pour cela. Si vous n'avez pas utilisé le GPU avec Docker sur ce serveur auparavant, installez-le d'abord en suivant les instructions Docker d'Ollama.

Ensuite, démarrez le kit avec le profil gpu-nvidia au lieu de cpu :

docker compose --profile gpu-nvidia up -d

Le fichier override ci-dessus ferme déjà le port Ollama pour ce profil. Utilisez le même profil dans toutes les autres commandes. Par exemple, l'importation de la démo avec le profil GPU :

docker compose --profile gpu-nvidia run --rm n8n-import -c "n8n import:credentials --separate --input=/demo-data/credentials" docker compose --profile gpu-nvidia run --rm n8n-import -c "n8n import:workflow --separate --input=/demo-data/workflows"

Et la mise à jour :

cd /opt/self-hosted-ai-starter-kit git pull docker compose --profile gpu-nvidia pull docker compose --profile gpu-nvidia up -d

Mettre à jour le kit

Pour mettre à jour les fichiers et les images du kit, exécutez les commandes avec le profil que vous utilisez :

cd /opt/self-hosted-ai-starter-kit git pull docker compose --profile cpu pull docker compose --profile cpu up -d

Votre docker-compose.override.yml, Caddyfile et .env ne font pas partie du dépôt, donc git pull ne les modifie pas.

Et ensuite ?

Le kit est prêt pour vos propres flux de travail d'IA. À partir de là, vous pouvez :

  • Télécharger d'autres modèles avec docker exec ollama ollama pull suivi du nom du modèle, et les sélectionner dans le nœud Ollama Chat Model ;
  • Utiliser Qdrant pour rechercher vos propres documents avec les nœuds de base de données vectorielle dans n8n ;
  • Connecter vos services et construire des flux de travail qui les combinent avec le modèle local.

Pour une installation générale de n8n sans composants d'IA, consultez le guide Installation de n8n avec Docker et PostgreSQL. Il explique également comment sauvegarder et restaurer une base de données n8n.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • kingdom
  • germany
  • Español
  • French
  • Hrvatska
  • Italiano
  • Poland
  • Slovenski
  • ukraine
  • Türkçe
  • Русский
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA