Nouvelle série : Pourkoi et Poursoi

Bienvenue dans Pourkoi et Poursoi une série de contenus dédiée à celles et ceux qui veulent reprendre le contrôle de leur temps grâce aux outils open source.

Pourquoi open source ?

Parce que tu contrôles tes données, tu es libre de modifier, tu ne dépends d’aucune plateforme, et tu ne paies pas pour tes propres idées.

les etapes pour installer cloudflare

Configuration de Cloudflare Tunnel depuis l’interface Cloudflare (sans terminal)

✅ Prérequis


 Étapes depuis l’interface Cloudflare

1. Ajouter ton domaine à Cloudflare

  • Clique sur “Add a Site” dans ton tableau de bord.

  • Saisis ton domaine (mondomaine.xyz).

  • Choisis le plan gratuit.

  • Cloudflare t’indiquera deux serveurs DNS à copier chez ton registraire (Hostinger, OVH, etc.).

2. Créer un tunnel

  • Dans le menu de gauche :
    Zero Trust → Accède à https://one.dash.cloudflare.com

  • Connecte ton compte (Cloudflare Zero Trust)

  • Clique sur Access > Tunnels

  • Clique sur “Create a Tunnel”

  • Donne un nom (ex : n8n-tunnel)

  • Télécharge cloudflared si demandé, puis installe l’agent sur ta machine locale (selon ton OS)

  • Cloudflare génère un token, copie le 

3. Configurer le sous-domaine (hostname)

Une fois le tunnel créé :

  • Clique sur “Configure”

  • Ajoute une règle :

    • Public hostname : ex n8n.mondomaine.xyz

    • Service : http://le nom du contenaire:5678 (ou le port de ton app)

    • Enregistre

    • configure le sss/tls
      patientes quelque minute
    • lance ton instance n8n
    • et ca ne marchera pas la suite au prochain épisode
 
				
					version: '3'

services:
  # Service n8n : l'automatisation open source
  n8n:
    image: n8nio/n8n:latest   # On utilise ici la dernière version stable de n8n
    container_name: n8n       # Le nom du conteneur (pratique pour le retrouver)
    restart: always           # Redémarre automatiquement en cas de plantage ou reboot de la machine

    environment:
      # L'adresse publique par laquelle n8n sera accessible (via Cloudflare Tunnel)
      - N8N_HOST=n8n.mondomaine.xyz

      # Port interne utilisé par n8n
      - N8N_PORT=5678

      # L’URL complète avec HTTPS que n8n utilisera pour ses liens, webhooks, etc.
      - WEBHOOK_URL=https://n8n.mondomaine.xyz

      # Fuseau horaire utilisé dans n8n (affichage des dates, exécution des workflows, etc.)
      - GENERIC_TIMEZONE=Europe/Paris

      # Sécurise les fichiers de configuration en lecture seule
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true

      # Active la protection par mot de passe pour accéder à n8n
      - N8N_BASIC_AUTH_ACTIVE=true

      # Identifiant de connexion à l’interface n8n
      - N8N_BASIC_AUTH_USER=admin@example.com

      # Mot de passe associé
      - N8N_BASIC_AUTH_PASSWORD=motdepassefort

      # Permet d’utiliser certaines fonctionnalités expérimentales (ex: certains nodes)
      - N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true

      # Active les "runners", utile pour les exécutions parallèles (peut être désactivé si non utilisé)
      - N8N_RUNNERS_ENABLED=true

      # Active la nouvelle fonctionnalité de stockage de données
      - N8N_FEATURE_FLAG_DATA_STORAGE=true

      # Type de base de données utilisée (ici SQLite, simple pour usage local ou perso)
      - DB_TYPE=sqlite

      # Chemin vers la base de données locale
      - SQLITE_DATABASE_PATH=/home/node/.n8n/n8n.db

    ports:
      # Port utilisé pour accéder à n8n localement (optionnel si vous utilisez uniquement Cloudflare)
      - "5678:5678"

    volumes:
      # Permet de sauvegarder vos workflows et données même si vous redémarrez Docker
      - ./n8n_data:/home/node/.n8n


  # Service Cloudflare Tunnel : permet de rendre n8n accessible via HTTPS gratuitement
  cloudflared:
    image: cloudflare/cloudflared               # Image officielle Cloudflare Tunnel
    container_name: cloudflared                 # Nom du conteneur
    restart: always                             # Redémarre automatiquement si besoin

    command: tunnel --no-autoupdate run         # Démarre le tunnel sans mise à jour automatique

    environment:
      # Le token de tunnel fourni par Cloudflare (à récupérer sur dash.cloudflare.com)
      - TUNNEL_TOKEN=ton_token_cloudflare_ici

				
			

N'oubliez pas : n8n ne sait pas que vous utilisez HTTPS

Même si vous avez tout bien configuré côté Cloudflare — tunnel actif, domaine pointé, HTTPS fonctionnel — n8n lui, n’est pas au courant.

Par défaut, n8n tourne en HTTP (http://localhost:5678).
Donc même si Cloudflare fournit une couche HTTPS, n8n continue à générer des liens internes en HTTP, ce qui peut :

  • faire échouer les redirections,

  • casser les appels d’API,

  • générer des webhooks non sécurisés,

  • ou encore bloquer l’accès à l’interface à cause du navigateur.

La solution : lui dire explicitement qu’il est exposé en HTTPS via Cloudflare.
Dans votre fichier docker-compose.yml, ajoutez ces deux lignes :

– WEBHOOK_URL=https://n8n.votre-domaine.xyz
– N8N_HOST=n8n.votre-domaine.xyz

Cela permet à n8n de :

  • générer les bons liens en HTTPS,

  • rendre les webhooks publics fonctionnels,

  • et travailler proprement derrière Cloudflare.

 Cette étape est indispensable si vous exposez un RAG, un backend SaaS ou toute autre API externe via n8n.

Bonus 

Tu trouves le docker-compose complet et propre avec cloudflare inclus qui va lancer les deux instance ensemble

Nos compagnons open source indispensables

Nos compagnons open source indispensables
Dans Poukoi Poursoi, chaque outil compte. Voici les solutions open source que j’utilise au quotidien pour construire, automatiser, tester, apprendre — sans abonnement, sans verrou, avec liberté.

🟠 n8n – Le cerveau de l’automatisation

C’est le cœur de mon système. J’y connecte des outils, des API, des bases de données. Je crée des workflows, je teste des idées, j’automatise des tâches répétitives. C’est mon backend no-code.

🔵 Redis – La mémoire ultra-rapide

Je l’utilise comme mémoire temporaire pour mes workflows (stockage de hash, sessions, caches). C’est rapide, léger, parfait pour le court terme. Indispensable dans un setup avec n8n.

🟣 Qdrant – Le cerveau vectoriel (IA, RAG, recherche intelligente)

Je l’utilise pour stocker et retrouver des vecteurs d’embeddings. C’est ce qui permet à mes agents IA de faire de la recherche sémantique : comprendre, comparer, trouver les bons documents. Base de mon RAG.

🟢 Supabase – Ma base de données PostgreSQL moderne

Alternative open source à Firebase. Je l’utilise pour stocker des données structurées, gérer des utilisateurs, faire des requêtes SQL, ou interagir avec mon backend. Simple, puissant, gratuit jusqu’à un certain niveau.

🟡 Nextcloud – Mon cloud personnel, à moi

Pour héberger mes fichiers, partager des docs, faire de la synchro, et même créer des formulaires. C’est mon Google Drive auto-hébergé. Et ça marche super bien avec n8n.


🧰 Tous ces outils ont un point commun : ils sont open source, gratuits, et libres.
Je les ai choisis pour leur puissance, leur transparence, et parce qu’ils me permettent de créer un vrai système, complet, sans abonnement.

🧡 Je t’explique comment je les installe, comment je les connecte, et surtout comment je les utilise dans mes projets, dans Poukoi Poursoi.

				
					version: '3.8'

services:
  redis:
    image: redis:7.2
    container_name: redis
    ports:
      - "6379:6379"
    volumes:
      - redis_data:/data
    command: ["redis-server", "--appendonly", "yes"]

volumes:
  redis_data:

				
			

installer et configurer redis

Redis (REmote DIctionary Server) est une base de données open source, en mémoire, rapide et ultra-performante, souvent utilisée comme cache, file de messages, ou store clé-valeur. Il est écrit en C et maintenu par la communauté open source sous licence BSD.

Installer redis

créer un dossier redis , copier coller le Docker-compose .( en haut ) aller dans le répertoire redis crée avec le terminal et executer : docker-compose up -d 

pour l’API

User: vide

Password : vide

Host: l’adresse ip de votre reseau local (192.168.100.2)

Port: 6379

Database Number: 0

				
					# Récupérer le code source
git clone --depth 1 https://github.com/supabase/supabase

# Créer un nouveau dossier pour votre projet Supabase
mkdir supabase-project

# L’arborescence devrait ressembler à ceci :
# .
# ├── supabase
# └── supabase-project

# Copier les fichiers Docker Compose dans votre projet
cp -rf supabase/docker/* supabase-project

# Copier les variables d’environnement d’exemple
cp supabase/docker/.env.example supabase-project/.env

# Se placer dans le répertoire de votre projet
cd supabase-project

# Télécharger les dernières images Docker
docker compose pull

# Lancer les services (en mode détaché)
docker compose up -d

				
			

installer et configurer supabase

Supabase, le backend open source prêt à l’emploi

Supabase est une alternative libre à Firebase.
Il fournit une base de données PostgreSQL, une authentification sécurisée, des API instantanées et du stockage de fichiers, le tout en open source.

Idéal pour lancer des apps web ou mobiles rapidement, avec contrôle total sur vos données.

Installation:

Suivre les instruction (en haut )

pour l’API

Host: http://192.168.100.2:8000

Service Role Secret: pour récupérer le service rôle, aller sue le fichier .env dans supabase-project

installer et configurer qdrant

Qdrant est un moteur de recherche vectorielle open source conçu pour indexer et retrouver rapidement des données à partir de vecteurs. C’est l’outil idéal pour les applications basées sur l’IA, comme les systèmes RAG, la recherche sémantique ou la recommandation intelligente.

Installation :

Étapes pour installer Qdrant depuis Docker Desktop via Docker Hub

  1. Ouvrir Docker Desktop
    Lancez l’application Docker Desktop sur votre ordinateur.

  2. Aller dans l’onglet “Images” ou “Search”
    Recherchez qdrant dans la barre de recherche.
     L’image officielle est : qdrant/qdrant

  3. Télécharger l’image Qdrant
    Cliquez sur Pull ou Download pour récupérer l’image depuis Docker Hub.

  4. Créer un conteneur Qdrant
    Une fois l’image téléchargée, cliquez sur Run.

    • Nom du conteneur : qdrant (ou comme vous voulez)

    • Port à exposer : 63336333 (host:container)

Lancer le conteneur
Cliquez sur Run container.
Qdrant est maintenant actif sur :
http://localhost:6333

pour L’ API:

Aller sur http://localhost:6333/dashboard/

créer l’api .

ensuite le credentiel sur N8N

api: api key

Qdrant URL:http://192.168.100.2:6333

 

Qu’est-ce qu’une API ?

API = Application Programming Interface
C’est une interface qui permet à deux applications de communiquer entre elles.

Comment fonctionne une API ?

  1. Le client envoie une requête à l’API (ex: un site web ou une app)

  2. L’API traite la demande

  3. Elle renvoie une réponse (souvent au format JSON)

    Pourquoi le “host” d’une API locale est important

    Quand tu fais tourner une API en local, le “host” détermine qui peut y accéder.
    Et ce n’est pas juste un détail technique, car il affecte :

    • L’accès depuis d’autres machines

    • Le fonctionnement dans Docker

    • Les tests avec des appareils mobiles

    • La sécurité et l’isolation du service


     Les cas typiques

    localhost ou 127.0.0.1

    • Cela signifie : « uniquement accessible depuis ma propre machine »

    • Ton API tourne bien, mais uniquement toi (ton PC) peut y accéder

    • Très utile pour le dev perso ou les tests unitaires

    • ⚠️ Inaccessible depuis un téléphone ou une autre machine sur ton réseau


    192.168.x.x ou adresse IP locale de ton PC

    • Cela signifie : « accessible depuis tout le réseau local »

    • Permet à :

      • ton téléphone de tester l’API

      • une autre machine ou conteneur Docker de s’y connecter

Pourquoi automatiser ?

1. Gagner du temps

Le temps est une ressource non renouvelable.

Chaque minute passée à faire une tâche répétitive est du temps perdu pour :

  • innover,

  • réfléchir,

  • vendre,

  • ou simplement respirer.

Automatiser permet de déléguer aux machines ce qui ne nécessite ni créativité, ni jugement humain.


2. Éliminer les erreurs humaines

Copier-coller des infos d’un outil à un autre, oublier un email, mal renommer un fichier…
Ce sont des erreurs inévitables quand on fait tout à la main.
L’automatisation garantit une exécution fiable, cohérente et constante.


3. Travailler 24h/24

Un bot, un script ou un workflow ne dort pas.

Pendant que tu te reposes, ton système continue à envoyer, classer, surveiller ou répondre.


4. Standardiser les processus

Quand une tâche est automatisée, elle devient un processus clair, défini, qu’on peut :

  • améliorer,

  • surveiller,

  • transmettre à d’autres.


5. Scalabilité

Tu veux grossir sans recruter tout de suite ? Il faut automatiser.

Un processus manuel supporte difficilement 10x plus de volume.
Un système automatisé, lui, le peut — ou peut être ajusté très facilement.

Quoi automatiser ?

Demande-toi :

Est-ce que je fais cette action plus d’une fois par semaine ?

Est-ce que je perds du temps à la refaire à chaque fois ?

Est-ce que ça suit toujours les mêmes étapes ?

Si oui → candidat à l’automatisation.

1. Les tâches répétitives

Envoyer des emails de suivi

Créer des factures

Sauvegarder des fichiers

Générer des rapports


 2. Les transferts de données entre outils

Quand tu recopies manuellement une info de Notion vers Google Sheets

Quand tu exportes un PDF depuis un outil pour l’envoyer ailleurs

Ces actions doivent être faites par des intégrations ou des workflows.


3. Les notifications et rappels

Slack / Telegram / Email

Alertes sur des dates, des anomalies, des absences


 4. Les tâches déclenchées par un événement

Exemple : un nouveau formulaire est rempli ? → une fiche client est créée, un email est envoyé, une alerte est notée.


 5. Les processus d’onboarding ou de vente

Création automatique de compte

Envoi de guides ou d’accès

Paiement, facture, email de bienvenue

 

Le nœud Merge : Fusionner pour mieux automatiser

Dans cet épisode, on explore un nœud clé dans les outils d’automatisation :
Le nœud Merge, ou nœud de fusion.

Mais au fait… qu’est-ce qu’il fait exactement ? Et pourquoi c’est important ?

À quoi sert le nœud Merge ?

Il permet de rassembler deux flux de données différents en un seul.
Autrement dit : il fusionne deux branches pour créer une seule sortie exploitable.

C’est utile quand :

  • Tu as deux sources d’information,

  • Tu veux combiner des résultats,

  • Ou tu veux faire suivre deux processus dans une seule suite logique.



1.  Append (Concaténer les listes)

  • Il ajoute les objets les uns à la suite des autres, sans les combiner.

Tu te retrouves avec une liste étendue, parfaite pour regrouper plusieurs résultats.

Cas concret : Comparer des données avec le nœud Merge

Imaginons le scénario suivant :

  • les données A B C provient du nœud 1 : par exemple, un prix enregistré dans une base de données.

  •  Les données DEF provient du nœud 4 : par exemple, un prix actuel récupéré depuis une API ou un formulaire utilisateur.

Utiliser un nœud Merge

Le Merge va créer un seul objet contenant A B C D E F dans le même bloc de données.


Quelques automatisations que j'ai crée

le rag est fonctionnel et accessible selon que mon pc soit allume ou non, generalement entre 8h et 22h .

RAG — Assistant intelligent pour les matériaux de construction

🎯 Objectif

Créer un assistant intelligent capable de :

  • Répondre aux questions des clients professionnels et particuliers.

  • Proposer des recommandations de produits en fonction des besoins spécifiques (type de chantier, budget, quantités).

  • Comparer des produits entre eux.

  • Orienter vers les meilleures solutions des marques partenaires (Sika, Groupopuma, Terraco, Knauf, BASF…).


🧠 Architecture RAG

1. Sources de Connaissances

  • Fiches techniques des produits.

  • Documents PDF de fabricants (Sika, Knauf…).

  • Guides de pose et d’application.

  • Tarifs BTP, fiches de stock, etc.

2. Base Vectorielle

  • Utilisation de Qdrant 

  • Indexation des documents avec découpage intelligent (chunking).

  • Ajout de métadonnées pour filtrer par marque, usage, type de produit.

3. Embeddings

  • Générés à l’origine avec llm, un modèle performant pour extraire le sens sémantique.

  • Embeddings stockés dans Qdrant pour permettre une recherche par similarité vectorielle.

4. Workflow n8n

  • Déclencheur : demande de l’utilisateur (via un formulaire Elementor ou une interface chat).

  • Étapes :

    • Extraction de la requête utilisateur.

    • Recherche vectorielle dans Qdrant.

    • Construction du prompt avec les passages pertinents.

    • Appel au LLM (OpenAI, Gemini ou autre) pour générer une réponse contextuelle.

    • Envoi de la réponse à l’utilisateur.

5. Mémoire

  • Utilisation de Redis pour conserver un historique court de la conversation.

  • Permet à l’assistant de suivre la logique des échanges (ex : « ok, maintenant pour l’extérieur ? »).


🤖 Personnification : Madame Dalila

  • Rôle : Conseillère technique et commerciale.

  • Style : Sérieux, professionnel mais accessible.

  • Elle répond aux utilisateurs comme une vraie experte en magasin de matériaux : de manière claire, rassurante et avec de vraies recommandations basées sur leurs besoins.

My Webchat